KVS: Новая версия KVS 5.11

Продолжаем выпуск новых версий SYNRC продуктов, после октябрьского ролаута всех репозиториев. Пришло время качественно переосмыслить старые библиотеки. И начать я решил с KVS. Как вы можете помнить, KVS — это наш слой абстрагирования над базами данных, с точки зрения хранения всяких цепочек, от сообщений до цепочек транзакций. Поэтому я посмотрел на то, что мы писали с Доктором, и это я вам скажу не выдерживает никакой критики. Год назад для проекта NYNJA я обновил способ работы с цепочками, и теперь в KVS все не так, как было в ПриватБанке, поэтому я решил продавить рефакторинг до конца и выбросить весь устаревший код.

Новая облегченная версия KVS, которую я назвал KVS, точно также как и версии N2O MQTT и N2O WebSocket, совместима по модулям со своей старшей версией. Но в будущем через несколько релизов эти разделения сново сольются, надо лишь подождать пару циклов на продакшине. Итак, в новой, облегченной, версии KVS отсутствуют: ротации таблиц (которые потенциально делали мнезию бесконечной базой, способной работать в ограниченной памяти RAM); поддержка неподдерживающихся бекендов (MONGO, REDIS, RIAK), остались только MNESIA и FS бекенды; удален старый код для работы с цепочками и переход на новый модуль STREAM.

На эту новую версию KVS теперь нужно первым делом перевести приложения BPE (система управления бизнес-процессами) и REVIEW (демонстрационное N2O приложение работающее по протоколу MQTT).

Новая семантика KVS ещё проще чем у KVS. Существую 2 вида курсоров: курсор для записи и курсор для чтения. С помощью курсоров для записи мы добавляем данные в цепочки, а с помощью курсоров для чтения (которые созданы с помощью курсоров для записи) мы вычитываем элементы из цепочки или скипаем их, а также подсчитываем расстояние до краев цепочки. Возможно сюда добавится подпись цепочки а также сплиты цепочек для поддержания не только цепочек но и деревьев.

Новый сайт: https://kvs.n2o.dev