В 2014 году Филип О’Тул представил rqlite — проект, который объединил SQLite с протоколом консенсуса Raft. Идея была проста: реплицировать записи в кластер, чтобы выход одного узла из строя не приводил к потере данных. На тот момент это было инновационное решение, ставшее первым open-source проектом такого рода. Сегодня же «распределенный SQLite» превратился в целую категорию продуктов, многие из которых привлекли венчурные инвестиции или были поглощены крупными игроками.
Три пути развития
О’Тул выделяет три основных подхода к распределенному SQLite, которые сформировались за последнее десятилетие:
- Консенсус (rqlite, dqlite): ориентация на сильную согласованность данных и работу в кластере с одним лидером.
- Потоковая передача (Litestream): фокус на доступном аварийном восстановлении путем передачи журнала транзакций в облачные хранилища вроде S3.
- Слияние (cr-sqlite): использование CRDT для работы в режиме «local-first», где несколько узлов могут записывать данные независимо, а затем объединять их.
Если rqlite и dqlite изначально создавались как инструменты для самостоятельного развертывания, то современные проекты, такие как Turso или облачные решения от Cloudflare, превратили эту технологию в управляемые сервисы. По мнению автора, это закономерный итог: инфраструктурные идеи часто живут как свободное ПО годами, прежде чем вокруг них выстраивается бизнес-модель.
Несмотря на появление множества коммерческих альтернатив, rqlite продолжает развиваться. О’Тул отмечает, что фундаментальная идея — использование SQLite в качестве движка хранения с внешней репликацией — оказалась настолько удачной, что ее независимо друг от друга переизобрели как минимум восемь команд. Сегодня выбор между этими решениями сводится к постановке правильного вопроса: нужно ли вам быстрое восстановление после сбоя, высокая доступность в кластере или возможность локальной работы без лидера.
Источник: philipotoole.com