
🧠 Разбираемся, как устроены in-memory БД: пишем MemifyDB с нуля.
Redis быстр, но не всегда удобен. SAP HANA — мощь, но ценник…
А что, если заглянуть под капот и создать свою enterprise in-memory СУБД?
Не чёрный ящик, а полностью прозрачную, современную, open-source — и при этом готовую к высоким нагрузкам. Разбираемся как это работает!
Знакомьтесь — MemifyDB.
📌 Что это будет?
Настоящая in-memory система уровня enterprise, в которой мы разберёмся до винтика:
живёт в RAM, отвечает за микросекунды;
сохраняет данные на диск (RDB + WAL) — никакой потери после ребута;
реплицируется и шардируется «из коробки»;
поддерживает транзакции (не хуже MULTI/EXEC, но с возможным rollback);
и при этом не просит продать почку за лицензию.
Весь код — open source, все решения — с объяснениями.
🛠 Технический фундамент (выбираем стек вместе)
Платформа — JVM. Я сейчас выбираю между Java 21 (Loom) и Scala 3 (ZIO / Akka).
Сеть: Netty или виртуальные потоки — посмотрим на бенчмарках.
Память: off-heap + собственный slab-аллокатор на ByteBuffer. GC не мешает, фрагментация под контролем.
Конкурентность: Lock-Free структуры данных, чтобы не блокировать потоки.
Протокол: RESP-совместимость — redis-cli сможет общаться с нами.
🗺 Дорожная карта: что и когда разберём
Ядро: потокобезопасное KV-хранилище в памяти. Как работают LRU и TTL?
Persistence: снапшоты и WAL. Как не потерять данные при краше?
Сеть: пишем TCP-сервер. Netty vs Loom — кто быстрее?
Транзакции: реализуем MULTI/EXEC, WATCH. Нужен ли MVCC?
Репликация и Raft: как достичь консенсуса в распределённой системе?
Каждый этап — открытый код, пост с разбором, грабли и профит.
🤔 Зачем я это делаю публично?
Во‑первых, разобраться самому и дать шанс разобраться другим.
Во‑вторых, фидбек сообщества ловит ошибки на берегу.
В‑третьих, хочется сделать реально полезный инструмент, а не очередной pet‑project.
💬 Вопрос к залу:
Какой стек предпочтительнее для enterprise in‑memory БД — Java 21 + Loom или Scala + ZIO/Akka?
Какие фичи вы бы добавили в дорожную карту?
Пишите в комментариях — лучшие идеи уйдут в реализацию!
👉 Подписывайтесь, чтобы не пропустить:
глубокий разбор off‑heap аллокатора;
сравнение моделей конкурентности на реальных бенчмарках;
историю о том, как одна строка unsafe кода валила прод три дня.