Об этом проекте

Zova — это встроенная база данных с открытым исходным кодом, использующая SQLite в качестве реляционного ядра и хранящая все данные в локальных файлах `.zova`. Она предлагает четыре первоклассные парадигмы хранения: стандартные реляционные записи (таблицы SQLite, индексы, представления, триггеры и полная поддержка SQL), объекты с адресацией по содержимому (адресуемые через SHA-256 полных байтов, с поддержкой дедуплицирующих чанков FastCDC-v1 или фиксированных потоковых чанков размером 1 МиБ, а также диапазонов чтения и последовательных читателей с ограниченной памятью), именованные векторные коллекции (точный плоский поиск, поддержка метрик расстояния косинуса, L2 и скалярного произведения, типы элементов f32, f16, i8 с виртуальными таблицами векторного поиска на уровне SQL) и графовые связи (стабильные идентификаторы узлов, предоставляемые приложением, направленные ребра и виртуальные таблицы обхода на уровне SQL для запросов соседей и ограниченного обхода). Проект находится на стабильной версии 1.0.0, текущая версия формата хранения `.zova` — 11, поддерживается явная прямая миграция с баз данных формата 9 и 10 без скрытых изменений или неподдерживаемых понижений версии. В проект включена библиотека SQLite 3.53.4, поэтому установка системного SQLite не требуется, а также поддерживаются полнотекстовый поиск FTS5 и виртуальная таблица `dbstat` только для чтения для диагностики. Zova предоставляет официальные привязки для Rust, Python, Go, JavaScript/TypeScript, C ABI и Zig, а также инструмент CLI для таких операций, как инспекция базы данных, диагностика, спасение данных, резервное копирование, компактное копирование и восстановление. Также доступна экспериментальная поддержка браузера через `zova-wasm` с сохранением в OPFS. Опциональные связанные хранилища объектов, векторов и графов позволяют пользователям выгружать большие объемы байтов объектов, векторные строки или топологию графа в отдельные файлы `.zova`, сохраняя метаданные приложения в основной базе данных, с явными операциями bind/unbind/split и проверками согласованности, учитывающими транзакции. Дополнительные функции включают события приложения в том же процессе для уведомлений рабочих процессов хранения, поддержку размещения расширений и блокировку в автономном режиме для рабочих процессов миграции.