После SQLite — PostgreSQL: стартап Turso бросает вызов главной СУБД мира

3445
После SQLite — PostgreSQL: стартап Turso бросает вызов главной СУБД мира

Turso хочет объединить PostgreSQL, MySQL и Redis под одной виртуальной машиной.

image

Облачный разработчик Turso решил повторить эксперимент с SQLite в гораздо большем масштабе. После создания совместимой с SQLite базы данных с нуля на Rust компания взялась за собственную реализацию PostgreSQL, рассчитанную на облачную инфраструктуру и знакомые разработчикам инструменты.

Генеральный директор Turso Глаубер Коста подчеркивает, что проект не возник из-за фундаментальных недостатков PostgreSQL. В противном случае компания не стала бы воспроизводить популярную СУБД. Команда хочет освежить архитектуру PostgreSQL для эпохи облачных сервисов, как ранее поступила с SQLite.

Основой новой СУБД станет движок Turso, первоначально разрабатывавшийся под кодовым названием Limbo. Внутри работает виртуальная машина, способная обслуживать несколько внешних интерфейсов баз данных. В июле 2026 года компания официально запустила разработку PostgreSQL-совместимого варианта и допустила дальнейшее появление интерфейсов MySQL и Redis.

Коста сравнил платформу с LLVM, общей инфраструктурой для разных языков программирования. По замыслу Turso, единое современное и надежное ядро сможет выполнять запросы, поступающие через разные привычные интерфейсы баз данных. Руководитель компании назвал проект «LLVM для баз данных» в анонсе разработки.

Идея Turso появилась у Косты и сооснователя Пекки Энберга после изучения внутреннего устройства SQLite. Оба разработчика покинули технические должности в ScyllaDB и основали в Сан-Франциско стартап ChiselStrike. Новому сервису требовалась встроенная база данных для работы через интернет, однако SQLite нуждалась в изменениях для полноценного облачного применения.

Разработчик Д. Ричард Хипп создал SQLite в 2000 году как компактный автономный транзакционный SQL-движок. Автор сохраняет небольшой масштаб проекта, не принимает внешних участников в основную команду и избегает функций, способных усложнить систему.

ChiselStrike создала ответвление SQLite под названием libSQL. Решение позволило сотрудникам менять базу данных и открыло сторонним разработчикам возможность добавлять собственные функции. Историю появления проекта Энберг подробно рассказывал в видеопрезентации.

Первые дополнения почти не затрагивали ядро SQLite, однако более глубокие изменения, включая развитую систему типов, требовали полной переработки движка. Команда запустила переписывание с нуля и дала проекту кодовое название Limbo.

К тому моменту ChiselStrike уже сосредоточилась на облачном сервисе на базе SQLite и переименовалась в Turso. Позднее Limbo стал официальным проектом компании, получил название Turso в честь мифического финского морского существа Ику-Турсо и превратился в основу для будущих вариантов базы данных.

При переписывании SQLite разработчики сосредоточились на архитектуре виртуальной машины. SQLite компилирует SQL-запросы в собственный байткод, который исполняет виртуальный механизм VDBE. Turso сохранила подобную модель и построила на базе VDBE более универсальный исполнительный слой.

Команда описала устройство движка в первом анонсе Limbo. По мнению Косты, почти любая SQL-база внутри представляет собой набор B-деревьев и индексов, а недостающие функции PostgreSQL можно реализовать инструкциями виртуальной машины.

Разработчики проверили выразительность архитектуры необычным способом. Демонстрационный проект запускает DOOM 1990-х годов внутри виртуальной машины через WebAssembly и возвращает каждый сформированный кадр в виде строки результата.

Поддержка нескольких моделей данных уже встречается в крупных облачных платформах. Google Spanner сочетает реляционные, графовые, ключевые, векторные и другие форматы, а Microsoft Cosmos DB использует похожий принцип. По словам Косты, оба сервиса располагаются выше в программном стеке, тогда как Turso работает на самом низком возможном уровне, всего на один слой выше механизма хранения. Близкий подход применяет написанный на Rust проект Apache DataFusion.

Коста и Энберг уже собрали поверх Turso экспериментальный PostgreSQL-совместимый прототип pgmicro. Теперь команде предстоит довести разработку до уровня, подходящего для промышленного применения.

Будущая база данных должна поддерживать протоколы PostgreSQL, выполнять ту же практическую роль и оставаться знакомой участникам экосистемы. После достижения достаточной зрелости Turso рассчитывает запускать большинство существующих приложений без изменений, хотя полной совместимости со всеми особенностями оригинальной PostgreSQL компания не обещает.

Разработчики также планируют добавить функции, которых не хватает части пользователей PostgreSQL. Среди примеров Коста назвал автоматически обновляемые материализованные представления, давно востребованные сообществом.

Пересмотр может затронуть модель PostgreSQL с отдельным процессом для каждого подключения. Подобная архитектура способна потреблять значительные вычислительные ресурсы, поэтому Turso намерена заново оценить подход, а не переносить старое решение без изменений.

Создание PostgreSQL-совместимого движка потребует больше работы, чем реализация SQLite, но разница, по оценке Косты, не составит целый порядок. Новые механизмы разработчики смогут возвращать в основное ядро Turso и позднее использовать в вариантах с другими интерфейсами.

Коммерческая стратегия предусматривает облачный сервис баз данных, где заказчик сможет выбрать нужный интерфейс, а все варианты будут работать поверх Turso. Подобная схема должна упростить развитие платформы и повторное использование функций между разными СУБД.

Переписывание открытого программного обеспечения на Rust превратилось в заметное направление. Независимые и официальные команды уже работают над реализациями Kubernetes, отдельных компонентов инструментария Bun и частей Linux. Во многих проектах разработчики применяют искусственный интеллект, поскольку современные модели неплохо справляются с основами Rust.

Turso также активно использует инструменты искусственного интеллекта, однако язык выбрала еще до широкого распространения программных агентов. Rust помогает предотвращать ошибки при работе с памятью, но значительная часть проблем PostgreSQL не связана с безопасностью памяти и не исчезнет после смены языка.

Коста не придает выбору языка самостоятельного значения и считает Rust лишь рабочим инструментом. Главную ценность проекта компания связывает с архитектурой универсальной виртуальной машины, способной превратить одно ядро в основу сразу для нескольких семейств баз данных.