Об этом проекте
FrankenSQLite — это независимая реализация SQLite, написанная на Rust с нуля и нацеленная на устранение узкого места единственного писателя и проблем долговечности SQLite. Она вводит постраничный многоверсионный контроль конкурентности (MVCC), позволяющий параллельную запись и заменяющий традиционную блокировку уровня файла. Движок спроектирован с безопасным ядром на Rust, а код `unsafe` ограничен VFS и необязательной прослойкой C ABI.
**Ключевые возможности:**
- **Параллельные писатели:** постраничный MVCC с сериализуемой изоляцией снимков (SSI) по умолчанию, позволяющий писателям, затрагивающим разные страницы, работать параллельно. Конфликты на одной странице сейчас вызывают откат и повтор с `SQLITE_BUSY_SNAPSHOT`; безопасная лесенка слияния записи бездействует.
- **Совместимость с форматом файлов:** читает и записывает стандартные базы данных SQLite 3.x, поддерживая текстовые кодировки UTF-8 и UTF-16. Проверка совместимости наиболее полна для UTF-8.
- **Безопасный движок на Rust:** ядро движка, пейджер, парсер, VDBE и связанные крейты запрещают код `unsafe`, за исключением `fsqlite-vfs` (mmap/shm) и `fsqlite-c-api` (FFI).
- **Слоистая архитектура:** рабочее пространство Cargo из 28 участников с крейтами для типов, ошибок, VFS, пейджера, WAL, MVCC, B-дерева, парсера, планировщика, VDBE, функций и расширений (FTS5, JSON1, R-tree, ICU и других).
- **Исследования долговечности:** включает строительные блоки RaptorQ/ECS для потенциального самовосстанавливающегося хранилища, но это лишь проект и частичная реализация, пока не задействованные в режиме совместимости.
- **Наблюдаемость транзакций:** интерфейсы PRAGMA для статистики транзакций, активных транзакций, предупреждений консультанта и JSON-таймлайн.
**Текущий статус:** среда гибридная, рабочим путём является режим совместимости поверх стандартных файлов SQLite. Собственный режим и компоненты ECS существуют на уровне проекта и частичной реализации. CLI представляет собой небольшую оболочку, а не полноценный интерфейс sqlite3. Такие расширения, как FTS3/FTS4, реализованы только на уровне вспомогательных средств; `dbstat`, `carray` и `dbpage` не реализованы. Крейт планировщика существует, но не является основным горячим путём для всех запросов.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.