SQLite на краю сети: база рядом с пользователем
Turso, Cloudflare D1 и libSQL превращают встраиваемую базу в распределённую. Реплики в десятках регионов, чтение за миллисекунды и один файл как источник истины.
Откуда тренд
Приложения переезжают на «край» — в функции, которые выполняются в ближайшем к пользователю дата-центре. Код стал быстрым, а база данных осталась в одном регионе, и каждый запрос к ней съедает выигранные миллисекунды. Нужна база, которая тоже живёт близко к пользователю.
Postgres реплицировать на тридцать регионов дорого и сложно. SQLite — это файл. Файл можно скопировать куда угодно.
Кто это делает
Turso построена на libSQL, форке SQLite с сетевым доступом и репликацией. Основная база пишется в одном месте, реплики читаются из любого региона, изменения доезжают за секунды. Есть встроенные реплики: копия базы прямо на сервере приложения, которая синхронизируется в фоне.
Cloudflare D1 — SQLite внутри платформы Workers. База привязана к воркеру, запросы идут через биндинг без сетевого драйвера. Есть точка восстановления на любой момент за последние тридцать дней.
LiteFS от Fly.io реплицирует SQLite на уровне файловой системы между машинами одного приложения.
Cloudflare Durable Objects дают каждому объекту собственную SQLite-базу, что превращает базу в единицу масштабирования: одна на пользователя, на чат, на документ.
Что это меняет в архитектуре
Модель «одна большая база на всех» уступает место «много маленьких баз». База на арендатора в SaaS-продукте — теперь не экзотика, а штатный сценарий: изоляция данных бесплатно, миграции по одному клиенту, бэкап и восстановление отдельного аккаунта.
Чтение перестаёт быть сетевым запросом. Локальная реплика отвечает за микросекунды, и код можно писать так, будто данные в памяти: десять запросов в цикле — не преступление.
Компромиссы
Запись по-прежнему идёт в одно место. Для приложений, где пишут много и отовсюду, задержка записи остаётся. Транзакции между базами арендаторов — отдельная головная боль. Аналитика поверх тысяч файлов требует отдельного слоя.
И SQLite остаётся SQLite: нет типов вроде массивов и JSON-индексов уровня Postgres, нет расширений вроде PostGIS, ограниченная конкуренция на запись внутри одного файла.
Для кого
Контентные сайты, SaaS с чёткой границей по клиентам, приложения на serverless-платформах, всё, где чтения на порядки больше записи. Если ваш продукт похож на это, стоит попробовать: миграция со SQLite на Postgres, если потребуется, проще, чем наоборот.
Встраиваемая база двадцатилетней давности оказалась удачно устроена для сети, которой тогда не было.
Войти, чтобы оценить материал
Комментарии
Войти, чтобы оставить комментарий