EdgeDB, een grafische relationele data-DBMS

onlangs de release van het DBMS «EdgeDB 2.0» werd aangekondigd, die het relationele grafische gegevensmodel en de EdgeQL-querytaal implementeert, geoptimaliseerd voor het werken met complexe hiërarchische gegevens.

EdgeDB is een open source database die is ontworpen als een spirituele opvolger van SQL en het relationele paradigma. Het doel is om een ​​aantal moeilijke ontwerpproblemen op te lossen die bestaande databases onnodig belastend maken om te gebruiken.

Aangedreven door de Postgres-query-engine onder de motorkap, denkt EdgeDB aan schema op dezelfde manier als u: als objecten met eigenschappen die zijn verbonden door bindingen. Het is als een relationele database met een objectgeoriënteerd gegevensmodel of een grafische database met een strikt schema. We noemen het een relationele database van grafieken.

Over EdgeDB

Het project wordt ontwikkeld als een plug-in voor PostgreSQL. De clientbibliotheken zijn voorbereid voor de talen Python, Go, Rust en TypeScript/Javascript.

In plaats van een op tabellen gebaseerd gegevensmodel, EdgeDB maakt gebruik van een declaratief systeem op basis van objecttypen. In plaats van refererende sleutels (vreemde sleutel) wordt voor het bepalen van de relatie tussen typen referentiebinding gebruikt (een object kan worden gebruikt als een eigenschap van een ander object).

Indexen kunnen worden gebruikt om de verwerking van query's te versnellen. Ook functies zoals sterk typen van eigenschappen worden ondersteund, eigenschapswaardebeperkingen, berekende eigenschappen en opgeslagen procedures. Enkele van de functies van het EdgeDB-objectopslagschema, dat enigszins doet denken aan ORM, zijn de mogelijkheid om schema's te mixen, eigenschappen van verschillende objecten te binden en ondersteuning voor ingesloten JSON.

Er zijn ingebouwde tools om te migreren het opslagschema: na het wijzigen van het schema dat is gespecificeerd in een afzonderlijk esdl-bestand, voert u gewoon de opdracht "edgedbmigration create" uit en het DBMS zal de verschillen in het schema analyseren en interactief een script genereren. om naar het nieuwe schema te migreren. De geschiedenis van schemawijzigingen wordt automatisch bijgehouden.

Voor query's, zowel de GraphQL-querytaal als de als zijn eigen taal EdgeDB, een aanpassing van SQL voor hiërarchische gegevens. In plaats van lijsten hebben queryresultaten een gestructureerd formaat en in plaats van subquery's en JOIN's kan een EdgeQL-query worden opgegeven als een expressie binnen een andere query. Transacties en cycli worden ondersteund.

Belangrijkste nieuwe functies van EdgeDB 2.0

In de nieuwe versie die werd gepresenteerd, geïntegreerde webinterface is toegevoegd voor databasebeheer maakt het mogelijk om gegevens te bekijken en te bewerken, EdgeQL-query's uit te voeren en analyseer het gebruikte opslagschema. De interface wordt gestart met de opdracht "edgedb ui", waarna deze beschikbaar is door toegang te krijgen tot localhost.

uitdrukking "GROUP" is geïmplementeerd om gegevenspartitionering en -aggregatie mogelijk te maken en het groeperen van gegevens met behulp van willekeurige EdgeQL-expressies, vergelijkbaar met groeperen in een SELECT-bewerking.

Mogelijkheid om de toegang op objectniveau te regelen, toegangsregels worden gedefinieerd op het niveau van het opslagschema en stellen u in staat het gebruik van een specifieke set objecten bij selectie-, invoeg-, verwijder- en updatebewerkingen te beperken. U kunt bijvoorbeeld een regel toevoegen waarmee alleen de auteur een bericht kan bijwerken.

Dat wordt ook benadrukt extra mogelijkheid om globale variabelen te gebruiken in het opslagschema. Om aan de gebruiker te binden, is een nieuwe globale variabele voorgesteld.

Van de andere veranderingen die opvallen:

  • De officiële klantenbibliotheek voor de Rust-taal is voorbereid.
  • Het binaire protocol EdgeDB is gestabiliseerd, waarbij het mogelijk is geworden om meerdere verschillende sessies tegelijkertijd binnen dezelfde netwerkverbinding te verwerken, door te sturen via HTTP, met behulp van globale variabelen en lokale statussen.
  • Ondersteuning toegevoegd voor typen die waardenbereiken definiëren (bereik).
  • Ondersteuning toegevoegd voor socket-activering, waardoor het serverstuurprogramma niet in het geheugen kan worden bewaard en alleen kan worden gestart wanneer wordt geprobeerd een verbinding tot stand te brengen (handig om bronnen op ontwikkelingssystemen te besparen).

Eindelijk voor diegenen die er meer over willen weten, moeten ze weten dat de code is geschreven in Python en Rust en is vrijgegeven onder de Apache 2.0-licentie.

Je vindt er meer over op volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.