Datenbanken: EdgeDB 2.0 spricht Client-seitig nun auch Rust
Das zweite Major Release der Open-Source-Datenbank EdgeDB liefert eine Client-Library in Rust und bietet Admins eine neue umfangreiche Bedienungskonsole.
Das EdgeDB-Team legt nur gut ein halbes Jahr nach dem ersten Meilenstein der graph-relationalen Open-Source-Datenbank bereits Version 2.0 vor. Das zweite Major Release bietet laut Ankündigung eine ganze Reihe neuer Funktionen und Verbesserungen, mit dem neuen EdgeDB UI will das Entwicklerteam aber vor allem Datenbankadministratorinnen und -adminstratoren eine umfangreiche und übersichtliche Bedienungskonsole an die Hand geben. Darüber hinaus lässt sich die sicherheitsrelevante Zugriffssteuerungslogik für Applikationen nun bereits auf Ebene des Schemas implementieren und der Rust-Client ist fertiggestellt.
Neue Schaltzentrale fĂĽr DB-Admins
Die auf einem PostgreSQL-Backend aufbauende Datenbank will die Vorteile relationaler und Graphdatenbanken sowie ORMs (Object-Relational Mapping) unter einen Hut bringen und auf Basis eines objektrelationalen Datenmodells mit der eigenen Query Language EdgeQL gegen SQL antreten. Dabei soll das in Version 2.0 neu eingefĂĽhrte und per edgedb ui
-Befehl zu startende Browserinterface die Bedienung weiter vereinfachen. Derzeit stellt es eine REPL-Umgebung (read–eval–print loop) zum Schreiben und Ausführen von EdgeQL-Abfragen, einen Daten-Browser und -Editor sowie ein Tool zum Inspizieren des Schemas bereit. In künftigen Releases will das Team weitere Funktionen ergänzen, darunter beispielsweise die Möglichkeit zum Visualisieren von Abfrageplänen.
Mit dem neuen GROUP
-Statement zum Partitionieren und Aggregieren von Daten will das Entwicklerteam hinter der Datenbank EdgeQL einen weiteren Vorteil gegenĂĽber den typischen SQL-SELECT
-Abfragen mit GROUP BY
verschaffen. Im Abfrageergebnis repräsentiert jedes Objekt eine Gruppe, in der Regel mit den drei Feldern grouping
, key
und elements
.
Dem EdgeDB-Team zufolge verfälsche das in SQL an SELECT
angehängte GROUP BY
häufig die eigentliche Intention einer Abfrage. Als Beispiel dafür führt der Blogbeitrag an, dass mitunter alle Spalten, die nicht zu gruppierten Schlüsseln gehören, nur als Argumente für Aggregatfunktionen verwendet werden können. Das GROUP
-Statement in EdgeQL eröffne hingegen mehr Freiheiten beim Gruppieren, unter anderem durch beliebige Ausdrücke, verschachtelte Abrufeigenschaften und das Verlinken auf Elemente.
Erweiterte Optionen fĂĽr die Zugriffskontrolle
EdgeDB 2.0 eröffnet Entwicklerinnen und Entwicklern die Möglichkeit, eine Zugriffssteuerung für Applikationen auf der Ebene des Datenbankschemas zu implementieren – das Team spricht dabei von Object-level Security. Den Objekttypen lassen sich dazu Zugriffsregeln zuweisen, die festlegen, welche Objekte eines Typs ausgewählt, eingefügt, aktualisiert oder gelöscht werden dürfen. EdgeDB kann dann die Einhaltung der Regeln durchsetzen und übernimmt in diesem Fall die Rolle einer Single Source of Truth für die komplette Infrastruktur.
Noch mehr Rust
Während das CLI der Datenbank bereits vollständig in Rust geschrieben ist, steht mit dem Update auf Version 2.0 nun auch ein Rust-Client zur Verfügung. Die vom EdgeDB-Team bereitgestellten Client-Bibliotheken liegen damit nun in den vier Programmiersprachen TypeScript, Python, Go und Rust vor. Die Community steuert darüber hinaus noch Library-Packages für .NET und Elixir bei.
Das EdgeDB-Protokoll hat zudem Version 1.0 erreicht. Es erlaubt nun unter anderem mehrere gleichzeitige Sitzungen innerhalb einer Verbindung sowie das Tunneln des Protokolls ĂĽber HTTP. Mehr Details und eine komplette Ăśbersicht aller weiteren Neuerungen in EdgeDB 2.0 fasst der Blogbeitrag zusammen. Alle weiteren Informationen finden sich auf der Website des Projekts sowie in dessen GitHub-Repository.
(map)