Έκδοση της βάσης δεδομένων σχεσιακού γραφήματος EdgeDB 2.0

Παρουσιάζεται η έκδοση του EdgeDB 2.0 DBMS, το οποίο υλοποιεί το μοντέλο δεδομένων σχεσιακού γραφήματος και τη γλώσσα ερωτημάτων EdgeQL, βελτιστοποιημένη για εργασία με πολύπλοκα ιεραρχικά δεδομένα. Ο κώδικας είναι γραμμένος σε Python και Rust (αναλυτής και κρίσιμα για την απόδοση μέρη) και διανέμεται με την άδεια Apache 2.0. Το έργο αναπτύσσεται ως πρόσθετο για την PostgreSQL. Οι βιβλιοθήκες πελατών προετοιμάζονται για Python, Go, Rust και TypeScript/Javascript. Παρέχει εργαλεία γραμμής εντολών για διαχείριση DBMS και διαδραστική εκτέλεση ερωτημάτων (REPL).

Αντί για ένα μοντέλο δεδομένων που βασίζεται σε πίνακα, το EdgeDB χρησιμοποιεί ένα δηλωτικό σύστημα που βασίζεται σε τύπους αντικειμένων. Αντί για ξένα κλειδιά, η σύνδεση με αναφορά χρησιμοποιείται για τον καθορισμό της σχέσης μεταξύ των τύπων (ένα αντικείμενο μπορεί να χρησιμοποιηθεί ως ιδιότητα άλλου αντικειμένου).

πληκτρολογήστε Person { απαιτούμενο όνομα ιδιοκτησίας -> str; } type Movie { απαιτούμενος τίτλος ιδιοκτησίας -> str; ηθοποιοί πολλαπλών συνδέσμων -> Πρόσωπο; }

Τα ευρετήρια μπορούν να χρησιμοποιηθούν για την επιτάχυνση της επεξεργασίας ερωτημάτων. Υποστηρίζονται επίσης δυνατότητες όπως ισχυρή πληκτρολόγηση ιδιοτήτων, περιορισμοί αξίας ιδιοκτησίας, υπολογισμένες ιδιότητες και αποθηκευμένες διαδικασίες. Τα χαρακτηριστικά του σχήματος αποθήκευσης αντικειμένων EdgeDB, που θυμίζει κάπως ORM, περιλαμβάνουν τη δυνατότητα μίξης σχημάτων, ιδιοτήτων σύνδεσης από διαφορετικά αντικείμενα και ενσωματωμένη υποστήριξη JSON.

Παρέχονται ενσωματωμένα εργαλεία για την αποθήκευση της μετεγκατάστασης σχήματος - μετά την αλλαγή του σχήματος που καθορίζεται σε ένα ξεχωριστό αρχείο esdl, απλώς εκτελέστε την εντολή "edgedb migration create" και το DBMS θα αναλύσει τις διαφορές στο σχήμα και θα δημιουργήσει διαδραστικά ένα σενάριο για μετεγκατάσταση στο νέο σχήμα. Το ιστορικό των αλλαγών σχήματος παρακολουθείται αυτόματα.

Για τη δημιουργία ερωτημάτων, υποστηρίζονται τόσο η γλώσσα ερωτημάτων GraphQL όσο και η ιδιόκτητη γλώσσα EdgeDB, η οποία είναι μια προσαρμογή της SQL για ιεραρχικά δεδομένα. Αντί για λίστες, τα αποτελέσματα ερωτημάτων μορφοποιούνται με δομημένο τρόπο και αντί για δευτερεύοντα ερωτήματα και JOIN, μπορείτε να καθορίσετε ένα ερώτημα EdgeQL ως έκφραση σε ένα άλλο ερώτημα. Υποστηρίζονται συναλλαγές και κύκλοι.

επιλέξτε Ταινία { τίτλος, ηθοποιοί: { όνομα } } filter .title = "The Matrix" insert Movie { title := "The Matrix Resurrections", ηθοποιοί := ( επιλέξτε Person filter .name in { 'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) } για τον αριθμό στην ένωση {0, 1, 2, 3} ( επιλέξτε { αριθμός, αριθμός + 0.5 } );

Στη νέα έκδοση:

  • Προστέθηκε μια ενσωματωμένη διεπαφή ιστού για τη διαχείριση της βάσης δεδομένων, η οποία σας επιτρέπει να προβάλλετε και να επεξεργάζεστε δεδομένα, να εκτελείτε ερωτήματα EdgeQL και να αναλύετε το σχήμα αποθήκευσης που χρησιμοποιείται. Η διεπαφή εκκινείται από την εντολή "edgedb ui", μετά την οποία γίνεται διαθέσιμη κατά την πρόσβαση στον localhost.
    Έκδοση της βάσης δεδομένων σχεσιακού γραφήματος EdgeDB 2.0
  • Η έκφραση "GROUP" έχει εφαρμοστεί, επιτρέποντάς σας να διαμερίζετε και να συγκεντρώνετε δεδομένα και δεδομένα χρησιμοποιώντας αυθαίρετες εκφράσεις EdgeQL, παρόμοια με την ομαδοποίηση σε μια λειτουργία SELECT.
  • Δυνατότητα ελέγχου της πρόσβασης σε επίπεδο αντικειμένου. Οι κανόνες πρόσβασης ορίζονται σε επίπεδο σχήματος αποθήκευσης και σας επιτρέπουν να περιορίσετε τη δυνατότητα χρήσης ενός συγκεκριμένου συνόλου αντικειμένων σε λειτουργίες ανάκτησης, εισαγωγής, διαγραφής και ενημέρωσης. Για παράδειγμα, μπορείτε να προσθέσετε έναν κανόνα που επιτρέπει μόνο στον συγγραφέα να ενημερώσει μια δημοσίευση.
  • Προστέθηκε η δυνατότητα χρήσης καθολικών μεταβλητών στο σχήμα αποθήκευσης. Μια νέα καθολική μεταβλητή current_user έχει προταθεί για σύνδεση με τον χρήστη.
  • Προστέθηκε υποστήριξη για τύπους που ορίζουν εύρη τιμών.
  • Έχει ετοιμαστεί μια επίσημη βιβλιοθήκη πελατών για τη γλώσσα Rust.
  • Το δυαδικό πρωτόκολλο EdgeDB έχει σταθεροποιηθεί, καθιστώντας δυνατή την ταυτόχρονη επεξεργασία πολλών διαφορετικών περιόδων σύνδεσης εντός της ίδιας σύνδεσης δικτύου, προώθησης μέσω HTTP, χρησιμοποιώντας καθολικές μεταβλητές και τοπικές καταστάσεις.
  • Προστέθηκε υποστήριξη για ενεργοποίηση υποδοχής, η οποία σας επιτρέπει να μην διατηρείτε το πρόγραμμα χειρισμού διακομιστή στη μνήμη και να το εκτελείτε μόνο όταν προσπαθείτε να δημιουργήσετε μια σύνδεση (χρήσιμο για εξοικονόμηση πόρων σε συστήματα προγραμματιστών).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο