EdgeDB, ein relationales Daten-DBMS für Graphen

Vor kurzem die Veröffentlichung des DBMS «EdgeDB 2.0» wurde angekündigt, das das relationale Datenmodell des relationalen Graphen und die Abfragesprache EdgeQL implementiert, die für die Arbeit mit komplexen hierarchischen Daten optimiert sind.

EdgeDB ist eine Open-Source-Datenbank, die als spiritueller Nachfolger von SQL und dem relationalen Paradigma entwickelt wurde. Sein Ziel ist es, einige schwierige Entwurfsprobleme zu lösen, die die Verwendung vorhandener Datenbanken unnötig erschweren.

EdgeDB wird von der Postgres-Abfrage-Engine unter der Haube angetrieben und betrachtet Schemas genauso wie Sie: als Objekte mit Eigenschaften, die durch Bindungen verbunden sind. Es ist wie eine relationale Datenbank mit einem objektorientierten Datenmodell oder eine Graphdatenbank mit einem strengen Schema. Wir nennen es eine relationale Datenbank von Graphen.

Über EdgeDB

Das Projekt wird als Plugin für PostgreSQL entwickelt. Die Clientbibliotheken sind für die Sprachen Python, Go, Rust und TypeScript/Javascript vorbereitet.

Anstelle eines tabellenbasierten Datenmodells bietet EdgeDB verwendet ein deklaratives System, das auf Objekttypen basiert. Anstelle von Fremdschlüsseln (Fremdschlüssel) wird zur Bestimmung der Beziehung zwischen Typen eine Referenzbindung verwendet (ein Objekt kann als Eigenschaft eines anderen Objekts verwendet werden).

Indizes können verwendet werden, um die Abfrageverarbeitung zu beschleunigen. Ebenfalls Funktionen wie starke Eigenschaftstypisierung werden unterstützt, Eigenschaftenwertbeschränkungen, berechnete Eigenschaften und gespeicherte Prozeduren. Einige der Funktionen des EdgeDB-Objektspeicherschemas, die etwas an ORM erinnern, umfassen die Möglichkeit, Schemas zu mischen, Eigenschaften verschiedener Objekte zu binden und Unterstützung für eingebettetes JSON.

Für die Migration werden integrierte Tools bereitgestellt das Speicherschema: Nachdem Sie das in einer separaten esdl-Datei angegebene Schema geändert haben, führen Sie einfach den Befehl „edgedb migration create“ aus und das DBMS analysiert die Unterschiede im Schema und generiert interaktiv ein Skript. auf das neue Schema migrieren. Der Schemaänderungsverlauf wird automatisch nachverfolgt.

Für Abfragen werden sowohl die GraphQL-Abfragesprache als auch die als eigene Sprache EdgeDB, das eine Adaption von SQL für hierarchische Daten ist. Anstelle von Listen haben Abfrageergebnisse ein strukturiertes Format, und anstelle von Unterabfragen und JOINs kann eine EdgeQL-Abfrage als Ausdruck innerhalb einer anderen Abfrage angegeben werden. Transaktionen und Zyklen werden unterstützt.

Die wichtigsten neuen Funktionen von EdgeDB 2.0

In der vorgestellten neuen Version integriertes Webinterface wurde hinzugefügt zur Datenbankverwaltung ermöglicht das Anzeigen und Bearbeiten von Daten sowie das Ausführen von EdgeQL-Abfragen und analysieren Sie das verwendete Speicherschema. Die Schnittstelle wird mit dem Befehl „edgedb ui“ gestartet, danach ist sie über den Zugriff auf localhost verfügbar.

Ausdruck "GROUP" wurde implementiert, um Datenpartitionierung und -aggregation zu ermöglichen und Gruppieren von Daten mithilfe beliebiger EdgeQL-Ausdrücke, ähnlich der Gruppierung in einer SELECT-Operation.

Möglichkeit, den Zugriff auf Objektebene zu steuern, Zugriffsregeln werden auf Speicherschemaebene definiert und ermöglichen es Ihnen, die Verwendung eines bestimmten Satzes von Objekten bei Auswahl-, Einfüge-, Lösch- und Aktualisierungsvorgängen einzuschränken. Sie können beispielsweise eine Regel hinzufügen, die es nur dem Autor erlaubt, einen Beitrag zu aktualisieren.

Es wird auch hervorgehoben, dass Möglichkeit hinzugefügt, globale Variablen zu verwenden im Lagerschema. Zur Bindung an den Benutzer wurde eine neue globale Variable vorgeschlagen.

Von den anderen Änderungen, die auffallen:

  • Die offizielle Client-Bibliothek für die Rust-Sprache wurde vorbereitet.
  • Das EdgeDB-Binärprotokoll wurde stabilisiert, wodurch es möglich geworden ist, mehrere verschiedene Sitzungen gleichzeitig innerhalb derselben Netzwerkverbindung zu verarbeiten, indem sie über HTTP weitergeleitet werden, indem globale Variablen und lokale Zustände verwendet werden.
  • Unterstützung für Typen hinzugefügt, die Wertebereiche (Range) definieren.
  • Unterstützung für die Socket-Aktivierung hinzugefügt, die es ermöglicht, den Servertreiber nicht im Speicher zu halten und ihn nur zu starten, wenn versucht wird, eine Verbindung herzustellen (nützlich zum Einsparen von Ressourcen auf Entwicklungssystemen).

Schließlich für diejenigen, die mehr darüber wissen möchten, sollten sie wissen, dass der Code in Python und Rust geschrieben und unter der Apache 2.0-Lizenz veröffentlicht ist.

Mehr darüber erfahren Sie unter folgenden Link


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.