Veröffentlichung des relationalen und graphenbasierten DBMS EdgeDB 2.0

Die Veröffentlichung von EdgeDB 2.0 ist da, das ein relationales und graphbasiertes Datenmodell sowie die für komplexe hierarchische Daten optimierte Abfragesprache EdgeQL implementiert. Der Code ist in Python und Rust geschrieben (Parser und leistungskritische Teile) und steht unter der Apache 2.0-Lizenz. Das Projekt entwickelt sich als Erweiterung von PostgreSQL. Kundenbibliotheken sind für die Programmiersprachen Python, Go, Rust sowie TypeScript/Javascript verfügbar. Es wird ein Command-Line-Tool zur Verwaltung der Datenbank und zur interaktiven Ausführung von Abfragen (REPL) bereitgestellt.

Anstelle eines tabellenbasierten Datenmodells basiert EdgeDB auf einem deklarativen System aus objektbasierten Typen. Anstelle von Fremdschlüsseln (foreign keys) zur Bestimmung der Beziehungen zwischen den Typen wird eine Verlinkung durch Referenzen verwendet (ein Objekt kann als Eigenschaft eines anderen Objekts genutzt werden).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Zur Beschleunigung der Anfrageverarbeitung können Indizes verwendet werden. Es werden auch Funktionen wie strenge Typisierung von Attributen, Einschränkungen für Attributwerte, berechnete Attribute und gespeicherte Prozeduren unterstützt. Ein besonderes Merkmal des objektorientierten Speicherschemas von EdgeDB, das einem ORM ähnelt, ist die Möglichkeit, Schemas zu mischen, Attribute aus verschiedenen Objekten zu verknüpfen und die integrierte Unterstützung für JSON.

Integrierte Werkzeuge zur Migration des Speichschemas werden bereitgestellt — nach einer Änderung des Schemas, das in einer separaten esdl-Datei definiert ist, genügt es, den Befehl „edgedb migration create“ auszuführen, und das DBMS analysiert die Unterschiede im Schema und generiert interaktiv ein Skript für den Übergang zum neuen Schema. Die Historie der Schemaänderungen wird automatisch verfolgt.

Für die Abfrageerstellung werden sowohl die GraphQL-Abfragesprache als auch die eigene Sprache EdgeDB unterstützt, die eine Anpassung von SQL für hierarchische Daten darstellt. Anstelle von Listen werden die Abfrageergebnisse in strukturierter Form ausgegeben, und anstelle von Unterabfragen und JOIN-Operationen besteht die Möglichkeit, eine EdgeQL-Abfrage als Ausdruck innerhalb einer anderen Abfrage anzugeben. Transaktionen und Schleifen werden ebenfalls unterstützt.

select Movie { title, actors: { name } } filter .title = «The Matrix» insert Movie { title := «The Matrix Resurrections», actors := ( select Person filter .name in { ‘Keanu Reeves’, ‘Carrie-Anne Moss’, ‘Laurence Fishburne’ } ) } for number in {0, 1, 2, 3} union ( select { number, number + 0.5 } );

In der neuen Version:

  • Eine integrierte Weboberfläche zur Verwaltung von Datenbanken wurde hinzugefügt, die es ermöglicht, Daten anzuzeigen und zu bearbeiten, EdgeQL-Abfragen auszuführen und das verwendete Speichermodell zu analysieren. Die Schnittstelle kann mit dem Befehl „edgedb ui“ gestartet werden, woraufhin sie über localhost zugänglich ist.
    Veröffentlichung des relationalen und graphenbasierten DBMS EdgeDB 2.0
  • Die Implementierung des Ausdrucks „GROUP“ ermöglicht es, Daten zu segmentieren und zu aggregieren sowie Daten nach beliebigen EdgeQL-Ausdrücken zu gruppieren, ähnlich wie bei der Gruppierung in der SELECT-Operation.
  • Möglichkeiten zur Zugriffskontrolle auf Objektebene. Die Zugriffsregeln werden auf der Ebene des Speicherschemas definiert und ermöglichen die Einschränkung bestimmter Objektgruppen in Auswahl-, Insert-, Delete- und Update-Operationen. Beispielsweise kann eine Regel hinzugefügt werden, die dem Autor die Aktualisierung eines Beitrags erlaubt.
  • Die Verwendung globaler Variablen im Speicherschema wurde hinzugefügt. Für die Benutzerbindung wird die neue globale Variable current_user angeboten.
  • Unterstützung für Wertebereichsdatentypen (range) hinzugefügt.
  • Eine offizielle Client-Bibliothek für die Programmiersprache Rust wurde bereitgestellt.
  • Das binäre Protokoll von EdgeDB wurde stabilisiert, mit der Möglichkeit, mehrere verschiedene Sitzungen über eine einzige Netzwerkverbindung gleichzeitig zu verarbeiten, über HTTP zu tunneln, globale Variablen und lokale Zustände zu verwenden.
  • Unterstützung für die Aktivierung über den Socket wurde hinzugefügt, wodurch der Server-Handler nicht im Speicher gehalten werden muss und nur bei einem Verbindungsversuch gestartet wird (nützlich zur Ressourcenschonung auf Entwickler-Systemen).

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster