Хотелось пополнить резюме, а написала LSM-движок с MVCC, снапшотами и Value Log на чистом Go
norzy 7 минут назад Хотелось пополнить резюме, а написала LSM-движок с MVCC, снапшотами и Value Log на чистом Go Средний 14 мин 167 Go * Базы данных * Open source * Из песочницы Введение: Неделю назад я не думала писать...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. norzy 7 минут назад Хотелось пополнить резюме, а написала LSM-движок с MVCC, снапшотами и Value Log на чистом Go Средний 14 мин 167 Go * Базы данных * Open source * Из песочницы Введение: Неделю назад я не думала писать такую базу данныхНачиналось всё с банального желания пополнить свое резюме парой строчек. Листала сайты с разными проектами, чтобы в резюме было что‑то посерьёзнее утилит для диагностики. Наткнулась на идею написать KV‑хранилище.
Естественно, перед тем как что‑то планировать, нужно было разобраться, что из себя это чудо представляет и какие они вообще бывают. И вот тут для меня началось самое интересное. Случайно получилось, что моя встраиваемая БД — это LSM‑Tree, есть атомарная группа операций, интерактивные транзакции с оптимистичной блокировкой, MVCC (с инвертированными метками , обнаружением конфликтов, snapshot isolation и управлением активными снапшотами), Value Log , WAL, Compaction, Манифест и даже GC.
Технические детали
И если её поднять как сервер, то можно использовать CLI (скоро и веб), и доступна база из всех языков, поддерживающих gRPC (12+). А это пока только первый релиз, в планах ещё ого‑го сколько! Я слышала, что есть B‑tree и LSM, но, честно говоря, не более названия.
Каждая новая статья становилась причиной двух следующих. Самым впечатляющим стало изучение устройства других NoSQL‑решений: конкурентный доступ, оптимизация хранения больших значений, как спастись от отключения питания и многое другое. Я загорелась, понимая, что сильно усложню свой пет‑проект, понаделаю ошибок, потому что не делала такое никогда, принялась за написание плана.
Первый коммит я сделала 22 апреля. Через пару дней у меня уже было работающее ядро: MemTable, WAL, SSTable, Compaction, MVCC, транзакции, Column Families. Ещё через несколько дней — gRPC, REST, WebSocket, CLI, Docker и CI/CD.
Отраслевые последствия
ОглавлениеВступление: хотела пополнить резюме, а написала базу данныхАрхитектура ScoriaDB: как я собирала конструкторЧто пошло не так: реальные проблемы и их решенияЧто уже работает, а что ещё нетЧто я вынесла из этого проектаПопробовать у себяДемонстрация CLIДокументацияЗаключение Архитектура ScoriaDB: как я собирала конструкторЯ не изобретала велосипед это по сути конструктор, содержащий в себе множество готовых решений. Посмотрев, как устроены LevelDB, RocksDB, BadgerDB, TiKV, я взяла у них некоторые идеи. Архитектура базы данных MemTable: почему всё‑таки B‑tree, а не skip list (и когда это станет проблемой)Мне нужна была отсортированная in‑memory структура.
Чтобы быстро делать скан по префиксу и потом сбрасывать эти отсортированные данные в SSTable. Вот как я сравнивала варианты:Хеш‑таблица? нет, она не сохраняет порядок ключей, скан невозможен.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





