Garnet .NET
Муза
Про проект Garnet обычно говорят очень мало, а если и упоминают, то только как одну из альтернатив Redis, который сошёл с рельс свободного программного обеспечения, породив массу альтернативных продуктов и сопутствующих скандалов. Но я бы предложил заглянуть глубже, возможно это, в некотором смысле сокровищница из целой палитры возможных применений.
Так что же такое Microsoft Garnet лично для меня?
- Это высокопроизводительный журнал, фактически содержащий механизмы для реализации очереди сообщений.
- Не менее высокопроизводительное хранилище ключ-значение.
- Многоуровневое хранилище. От базового дискового до облачного.
- Эффективная реализация базовых структур данных, таких как хэш-таблицы, множества, списки, упорядоченные списки, битовые карты, HyperLogLog и другие.
- Возможность расширения за счёт добавления своих, специализированных типов данных. Например, реализовать колумнарное хранилище, графы, деревья, документы.
- Возможность добавлять хранимые функции на уровне хранилища и на уровне сессии.
- Эффективный сетевой слой с поддержкой TLS.
- Поддержка кластеризации, репликции, шардирования.
- Возможность использовать как самостоятельный сервер, так и встраивать в собственные приложение.
- Хорошая кросс-платформенность.
- И уже поверх всей этой платформы, одна из возможностей - это реализация протокола Redis RESP и его комманд.
Такое многообразие инструментов подталкивает к размышлениям о том, что Garnet мог бы сыграть роль первой срипки в идее платформы данных.
Ещё одно преимущество заключается в возможности гармонично использовать для образовательных целей. Преимущества интерфейса Redis заключаются в том, что предоставляя самые примитивные структуры данных, например работу с парами ключ-значение, он позволяет плавно переходить к более продвинутым, классическим структурам данных. А дальше открываюся безграничные возможности как углубления внутрь организации, так и в масштаб.