Vrijgave van de relationele grafische database EdgeDB 2.0

De release van de databasesoftware EdgeDB 2.0 is gepresenteerd, die een relationeel-grafisch gegevensmodel en de EdgeQL-querytaal implementeert, geoptimaliseerd voor het werken met complexe hiërarchische data. De code is geschreven in de programmeertalen Python en Rust (parser en prestatiekritische onderdelen) en wordt verspreid onder de Apache 2.0-licentie. Het project ontwikkelt zich als een uitbreiding bovenop PostgreSQL. Klantbibliotheken zijn voorbereid voor de talen Python, Go, Rust en TypeScript/Javascript. Er is een opdrachtregeltool beschikbaar voor het beheren van de database en het interactief uitvoeren van queries (REPL).

In plaats van een tabel-gebaseerd datamodel, gebruikt EdgeDB een declaratief systeem gebaseerd op objecttypen. In plaats van buitenlandse sleutels (foreign key) om de relatie tussen typen te definiëren, wordt binding door middel van referenties toegepast (een object kan als eigenschap van een ander object worden gebruikt).

type Person { required property name -> str; } type Movie { required property title -> str; multi link actors -> Person; }

Voor het versnellen van het verwerken van aanvragen kunnen indexen worden gebruikt. Ook worden functionaliteiten ondersteund zoals strikte typering van eigenschappen, waarde-beperkingen voor eigenschappen, berekende eigenschappen en opgeslagen procedures. Een van de kenmerken van het opslagobjectmodel van EdgeDB, dat enige gelijkenis vertoont met ORM, is de mogelijkheid tot het mengen van schema's, het koppelen van eigenschappen van verschillende objecten en de geïntegreerde ondersteuning voor JSON.

Er zijn ingebouwde tools beschikbaar voor het migreren van het opslagchema — na een wijziging in het schema, zoals opgegeven in een afzonderlijk esdl-bestand, is het voldoende om het commando 'edgedb migration create' uit te voeren, waarna de database de verschillen in het schema analyseert en interactief een script genereert voor de overgang naar het nieuwe schema. De geschiedenis van schemawijzigingen wordt automatisch bijgehouden.

Voor het vormen van aanvragen wordt zowel de GraphQL-querytaal als de eigen EdgeDB-querytaal ondersteund, die een aanpassing van SQL voor hiërarchische gegevens vertegenwoordigt. In plaats van lijsten worden de resultaten van de aanvraag gestructureerd weergegeven, en in plaats van sub-aanvragen en JOIN-operaties is het mogelijk om een enkele EdgeQL-aanroep als expressie binnen een andere aanvraag op te geven. Transacties en lussen worden ondersteund.

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 } );

In de nieuwe versie:

  • Er is een ingebouwde webinterface toegevoegd voor het beheren van de database, waarmee gebruikers gegevens kunnen bekijken en bewerken, EdgeQL-queries kunnen uitvoeren en de toegepaste opslagstructuur kunnen analyseren. De interface kan worden gestart met het commando 'edgedb ui', waarna deze toegankelijk is via localhost.
    Vrijgave van de relationele grafische database EdgeDB 2.0
  • De 'GROUP'-expressie is geïmplementeerd, waarmee gegevens gesegmenteerd en geaggregeerd kunnen worden, en gegevens kunnen worden gegroepeerd op willekeurige EdgeQL-expressies, vergelijkbaar met de GROEPEN functie in de SELECT-operatie.
  • Mogelijkheid tot toegangsbeheer op objectniveau. Toegangsregels worden gedefinieerd op het niveau van de opslagstructuur en stellen gebruikers in staat om de toegang tot een specifieke set objecten te beperken in selecties, invoegingen, verwijderingen en updates. Bijvoorbeeld, er kan een regel worden toegevoegd die de publicatie alleen toestaat voor de auteur.
  • De mogelijkheid om globale variabelen in de opslagstructuur te gebruiken, is toegevoegd. Een nieuwe globale variabele 'current_user' is voorgesteld voor gebruikersbinding.
  • Ondersteuning voor typen die waardegebieden (range) definiëren, is toegevoegd.
  • Een officiële klantbibliotheek voor de taal Rust is voorbereid.
  • Het binaire protocol EdgeDB is gestabiliseerd, waarbij het mogelijk is om meerdere verschillende sessies tegelijkertijd binnen één netwerkverbinding te verwerken, doorgegeven via HTTP, en het gebruik van globale variabelen en lokale toestanden.
  • Ondersteuning voor socketactivatie is toegevoegd, waardoor de serververwerker niet in het geheugen hoeft te worden gehouden en alleen wordt gestart wanneer er geprobeerd wordt een verbinding te maken (nuttig voor het besparen van middelen op ontwikkelaarsystemen).

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster