DaruDB
Eine eingebettete Datenbank, die die Daten einer Anwendung in einer einzigen lokalen Datei hält, mit einer in Rust geschriebenen Engine und einer Node.js-Anbindung darüber. Sie ist in früher Entwicklung und noch nicht veröffentlicht, daher wird sie vorerst aus dem Quellcode gebaut.
Über dieses Projekt
DaruDB ist eine Datenbank, die in einer Anwendung läuft statt neben ihr. Es gibt keinen Server, den man installieren oder starten müsste: Ein Programm öffnet eine Datei, liest und schreibt Objekte darin und schließt sie wieder. Damit eignet sie sich als Speicher, in dem eine Desktop-App, eine mobile App oder ein Kommandozeilenwerkzeug die eigenen Daten ablegt. Die Engine ist einmal geschrieben, in Rust, und andere Sprachen erreichen sie über dünne Anbindungen, die kein eigenes Verhalten hinzufügen. Eine aus Node.js geschriebene Datei liest sich deshalb aus Rust genauso.
Daten werden als Schema aus Collections deklariert und mit Abfragen gelesen, die im Code zusammengesetzt oder als Text geschrieben werden, mit Indizes, Verknüpfungen zwischen Objekten und Migrationen von einer Schemaversion zur nächsten. Ergebnisse sind schlichte Objekte statt Handles, die an die geöffnete Datenbank gebunden sind. Eine Datei lässt sich mit einem Schlüssel oder einem Passwort Seite für Seite verschlüsseln und authentifizieren, mehrere Prozesse teilen sich eine Datei allein über die Dateisperren des Betriebssystems, und eine festgeschriebene Seite wird nie an Ort und Stelle überschrieben, sodass ein Absturz den zuletzt festgeschriebenen Stand unversehrt lässt. Integritätsprüfung, Online-Sicherung, Verdichtung und die Rettung beschädigter Dateien gehören zur Bibliothek.
DaruDB ist in früher Entwicklung. Das Rust-Crate und das Node.js-Paket werden aus dem Quellcode gebaut statt installiert, das Dateiformat kann sich bis zur ersten Veröffentlichung ohne Migrationspfad ändern, und ein Dart-Paket ist geplant. Geschwindigkeit, Haltbarkeit und Plattformabdeckung sind die Ziele, nach denen der Entwurf ausgerichtet ist, und jedes wird erst dann zur Aussage, wenn der Benchmark oder die Testsuite dahinter im Repository liegt. Die Dokumentationsseite behandelt Anleitungen, Engine und API auf Englisch und Koreanisch.
Funktionen
Dokumentationsseite
TypeScript-Typen
Mehrsprachig
Durch Tests geprüft
