DaruDB
Встраиваемая база данных, которая хранит данные приложения в одном локальном файле: один движок на Rust и привязка для Node.js поверх него. Проект на ранней стадии разработки, и пока ничего не опубликовано, поэтому сейчас его собирают из исходников.
Об этом проекте
DaruDB — база данных, которая работает внутри приложения, а не рядом с ним. Нет сервера, который нужно устанавливать или запускать: программа открывает файл, читает и пишет в нём объекты и закрывает его. Это хранилище того рода, в котором настольное приложение, мобильное приложение или утилита командной строки держит собственные данные. Движок написан один раз, на Rust, а другие языки обращаются к нему через тонкие привязки, которые не добавляют своего поведения, поэтому файл, записанный из Node.js, так же читается из Rust.
Данные описываются схемой из коллекций и читаются запросами, собранными в коде или написанными текстом, с индексами, связями между объектами и миграциями от одной версии схемы к следующей. Результаты — обычные объекты, а не дескрипторы, привязанные к открытой базе. Файл можно шифровать и аутентифицировать постранично ключом или паролем, несколько процессов делят один файл только через файловые блокировки операционной системы, а зафиксированная страница никогда не перезаписывается на месте, так что сбой оставляет последнее зафиксированное состояние нетронутым. Проверка целостности, резервное копирование на ходу, уплотнение и спасение повреждённого файла входят в библиотеку.
DaruDB находится на ранней стадии разработки. Крейт на Rust и пакет для Node.js собираются из исходников, а не устанавливаются, формат файла до первого релиза может измениться без пути миграции, а пакет для Dart запланирован. Скорость, надёжность хранения и охват платформ — цели, вокруг которых построен проект, и каждая становится утверждением только тогда, когда в репозитории появляется подтверждающий её бенчмарк или набор тестов. Сайт документации охватывает руководства, устройство движка и API на английском и корейском.
Возможности
Сайт документации
Типы TypeScript
Несколько языков
Проверено тестами
