Die erste stabile Version des relationalen Graphen-Datenbanksystems EdgeDB

Die erste stabile Version des EdgeDB-Datenbanksystems ist jetzt verfügbar. Sie basiert auf PostgreSQL und implementiert ein relationales und graphbasiertes Datenmodell sowie die Abfragesprache EdgeQL, die für die Verarbeitung komplexer hierarchischer Daten optimiert ist. Der Code ist in Python und Rust geschrieben und steht unter der Lizenz Apache 2.0. Client-Bibliotheken sind für die Programmiersprachen Python, Go, Rust und TypeScript/Javascript verfügbar. Ein Kommandozeilenwerkzeug zur Verwaltung der Datenbank und zur interaktiven Ausführung von Abfragen (REPL) wird bereitgestellt.

EdgeDB verwendet anstelle eines tabellenbasierten Datenmodells ein deklaratives System, das auf objektbasierten Typen basiert. Anstelle von Fremdschlüsseln zur Definition von Beziehungen zwischen Typen wird das Verknüpfen durch Referenzen verwendet (ein Objekt kann als Attribut eines anderen Objekts dienen). 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 Abfragen wird 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 Ergebnisse der Abfrage strukturiert 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 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 } );

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