Приветствую.
Есть намерение прикрутить к тарантулу движки libmdbx и/или libfpta.
Поэтому предварительно интересуюсь кому еще это может быть интересным.
Кратенько о движках:
libmdbx - это key-value на базе b+tree и MVCC (page shadowing), но совсем без WAL.
БД целиком отображается в память и шариться между заинтересованными процессами.
Писатели полностью сериализуются, а для читателей примерно lock-free и линейное масштабирование.
Из-за отсутствия WAL такое не подходит для сценариев с интенсивной записью и необходимостью фиксировать данные на диске, но есть свои плюсы (отсутствие восстановления и merge-выбросов как у LSM), и очень хорошо с чтением.
Исходники =
https://github.com/erthink/libmdbxДокументация =
https://erthink.github.io/libmdbx, на подходе нативный/удобный интерфейс для С++.
libfpta - это надстройка над libmdbx, реализующая таблички с колонками и индексами.
Без SQL и всяческих излишеств, но в целевых сценариях сильно быстрее SQLite, MySQL и т.п.
https://github.com/erthink/libfptaОсновной предполагаемый сценарий использования:
- есть mdbx-БД, с которой работают несколько локальных процессов, включая один или несколько тарантулов.
- через тарантул обеспечивается доступ из lua-скриптов и через сеть.
- в libfpta будет добавлена "репликация" по мотивам RFC-4533 (синхронизация содержимого).
Неопределенности и сложности:
- можно ограничиться lua-биндингами, но интереснее получить больше от инфраструктуры тарантула.
- в libfpta свои кортежи и пока не ясно как лучше их приклеивать к тарантулу, а может быть и не стоит.
- предполагается поддержка только linux и добавление в libmdbx еще одного механизма синхронизации на базе futex с возможностью использования FUTEX_FD (для неблокирующей синхронизации в фиберах тарантула).
Буду рад ответить на вопросы, но не связанные с тарантулом просьба задавать в
https://t.me/libmdbx