Мне предложили тюнинг SQLite
Пользователь из канала по Rust кинул мне наводку на пару баз данных, написанных на Rust. За это ему спасибо. Один из вариантов - Turso, второй - SurrealDB.
SurrealDB - это монстр. Мультимодельная база, которая умеет всё. Звучит как мечта, но на деле сыровата. А Turso… Я полез сматреть, что это за малютка, и чуть не упал со стула. Это не просто «SQLite на стероидах». Это швейцарский нож, который умеет почти всё.
И вот что она может.
Конкурентные записи
Обычный SQLite может писать только по одной штуке за раз. Если в чате десять человек одновременно отправят сообщения, они встанут в очередь. Пять подождут, пока обработается первое. Turso переписали на Rust с нуля и вкрутили туда MVCC - как в PostgreSQL. Это значит, что писать можно параллельно. Несколько потоков втыкают данные одновременно, и никто никого не блокирует. Для будущего чата и сообщества это критично. База не ляжет, когда люди начнут общаться.
Векторный поиск
Вот это меня вообще добило. У Turso есть встроенный векторный поиск. Это когда ты ищешь не по точному совпадению слов, а по смыслу. Задаешь вопрос, а база находит ближайшие по смыслу ответы. Для AI-фишек и умного поиска по постам - это пушка. И не надо тащить отдельную векторную базу.
Реплики на краю
Turso умеет раскидывать копии базы по миру. Ты читаешь данные с ближайшего сервера, а записываешь в главный. Задержка падает до 5-20 миллисекунд. Мне это пока не надо, но когда проект вырастет и читатели будут из разных стран, это спасёт.
Embedded-реплики
Вот это моя любимая фича. Ты можешь держать локальную копию базы прямо внутри приложения. Читаешь с неё - мгновенно. А изменения отправляются в облако. Если мой VPS снова потеряет сертификаты (как было недавно), данные не пропадут. Они уже в облаке. И работа не остановится.
Асинхронность и шифрование
Turso полностью асинхронный. Он может работать даже в браузере. Для моего проекта это не критично, но звучит как фантастика.
А ещё база шифруется прямо на диске. Я обещал обезличить данные пользователей. Turso помогает это сделать. Даже если кто-то украдет файл базы, прочитать его без ключа не получится.
CDC
Change Data Capture. Это когда база сама говорит: «Эй, у меня тут строка изменилась». Для уведомлений и синхронизации в реальном времени - незаменимая вещь.
Вот такая малютка. Весит пару мегабайт, а умеет больше, чем некоторые тяжёлые монстры. Навернае, остановлюсь на ней. Думаю.