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
