Die Entwickler der Datenbank EdgeDB haben die Umbenennung des Projekts in Gel bekannt gegeben. Gleichzeitig wurde eine neue bedeutende Version — Gel 6.0 — veröffentlicht. Als Grund für den Namenswechsel wird das Bestreben genannt, irreführende Konnotationen zu vermeiden, die durch die Verwendung des Begriffs „edge“ entstehen, aufgrund dessen viele das Projekt als Datenbank für Edge-Computing oder als Graphdatenbank wahrnehmen. Die Umbenennung betraf lediglich die Markenelemente. Die Struktur des Projekts, die Ziele und das Team blieben unverändert. Die Werkzeuge und Bibliotheken in der neuen Version wurden umbenannt, aber zur Gewährleistung der Abwärtskompatibilität bleibt die Möglichkeit, alte Namen über symbolische Links und Wrapper zu verwenden.
Das Projekt entwickelt sich in Form einer Erweiterung von PostgreSQL, die ein relationales und graphbasiertes Datenmodell sowie die Abfragesprache EdgeQL implementiert, die für die Arbeit mit komplexen hierarchischen Daten optimiert ist. Der Code ist in Python und Rust (Parser und performancekritische Teile) geschrieben und wird unter der Lizenz Apache 2.0 verbreitet. Clientbibliotheken sind für die Programmiersprachen Python, Go, Rust, .NET, Elixir und TypeScript/Javascript verfügbar. Es wird eine Kommandozeilenwerkzeug zur Verwaltung der Datenbank und zur interaktiven Ausführung von Abfragen (REPL) bereitgestellt.
Anstelle eines tabellenbasierten Datenmodells verwendet Gel ein deklaratives System auf Basis von Objekttypen. Anstelle von Fremdschlüsseln zur Definition der Beziehungen zwischen den Typen wird die Verknüpfung durch Referenzen verwendet (ein Objekt kann als Eigenschaft eines anderen Objekts genutzt werden).
type Person { required name: str; } type Movie { required title: str; multi actors: Person; }
Es werden Funktionen wie strikte Typisierung von Eigenschaften, Einschränkungen für Eigenschaftswerte, berechnete Eigenschaften und gespeicherte Prozeduren unterstützt. Zu den Besonderheiten des Objektschemas in Gel, das in gewisser Weise an ORM erinnert, gehört die Möglichkeit, Schemata zu mischen, Eigenschaften aus verschiedenen Objekten zu verknüpfen und die integrierte Unterstützung von JSON. Zur Beschleunigung der Abfrageverarbeitung können Indizes verwendet werden.
Es stehen integrierte Tools für die Migration von Speicher-Schemas zur Verfügung – nach der Änderung des in einer separaten esdl-Datei definierten Schemas genügt es, den Befehl „gel migration create“ auszuführen, und die Datenbankanalyse erkennt die Unterschiede im Schema und generiert im interaktiven Modus das Skript für den Übergang zum neuen Schema. Die Historie der Schemaänderungen wird automatisch verfolgt.
Für die Erstellung von Abfragen wird die Abfragesprache GraphQL sowie die eigene Sprache EdgeQL unterstützt, die eine Anpassung von SQL für hierarchische Daten darstellt. Anstelle von Listen werden die Abfrageergebnisse in strukturierter Form dargestellt, 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’ } ) }
Die wichtigsten Änderungen in Gel 6.0:
- Die Möglichkeit, traditionelle SQL-Abfragen bei der Verbindung zur Datenbank über das Gel-Protokoll oder im PostgreSQL-Protokollmodus zu verwenden, wurde hinzugefügt. Es wird angenommen, dass die Unterstützung von SQL die Migration bestehender Projekte auf Gel erleichtert, die nun schrittweise von SQL zu Gel überführt werden können, während die alten SQL-Clients und SQL-ORM weiterhin verwendet werden. Projekte, die ursprünglich EdgeQL verwenden, können zusätzliche Funktionen nutzen, die in SQL verfügbar sind, aber derzeit nicht in EdgeQL implementiert sind, wie z. B. Fensterfunktionen, rekursive Abfragen und explizite Sperren.
- Die Unterstützung für In-Place-Updates wurde hinzugefügt, die keine Erstellung und Hochladung eines Datenbank-Dumps beim Wechsel zu einer neuen Hauptversion erfordert. Beim Upgrade von EdgeDB 5.x auf Gil 6.0 muss die alte Methode verwendet werden, aber beim Wechsel von Gil 6.x zu 7.0 ist eine Neuladen des Dumps nicht erforderlich.
- Die Speicherung von Leistungsstatistiken über Abfragen, die über die Objekte sys::QueryStats zugänglich sind, wurde sichergestellt.
- Die Unterstützung für die PostgreSQL-Erweiterung PostGIS zur Speicherung von räumlichen Daten, die in geografischen Informationssystemen verwendet werden, wurde hinzugefügt.
- Die Bibliothek std::net für das Senden von Netzwerkabfragen (HTTP wird unterstützt) im asynchronen Modus wurde hinzugefügt.
- Zusätzlich zu ext::auth wurde die Unterstützung für die Konfiguration von OpenID Connect-Anbietern hinzugefügt.
- In der Ergänzung ext::ai wurde die Liste der unterstützten großen Sprachmodelle von OpenAI, Anthropic und Mistral aktualisiert.
- Zusätzlich wurde die Möglichkeit geschaffen, weitere Handler für Befehle in der Utility gel zu integrieren.
- In EdgeQL wurde die Semantik zum Auffinden von Pfaden zwischen Knoten des Graphen vereinfacht.
- In gel.toml wurde die Einstellung „[[watch]]“ hinzugefügt, die es ermöglicht, Skripte bei Änderungen an bestimmten Dateien auszuführen.
- In ORM Drizzle wurde die Unterstützung für Gel implementiert.
Quelle: opennet.ru
