Κυκλοφορία DBMS SQLite 3.42 και DuckDB 0.8.0. CG/SQL με εφαρμογή αποθηκευμένων διαδικασιών για SQLite

Δημοσιεύτηκε η κυκλοφορία του SQLite 3.42, ενός ελαφρού DBMS που έχει σχεδιαστεί ως βιβλιοθήκη plug-in. Ο κώδικας SQLite διανέμεται ως δημόσιος τομέας, δηλ. μπορεί να χρησιμοποιηθεί χωρίς περιορισμούς και δωρεάν για οποιονδήποτε σκοπό. Οικονομική υποστήριξη για προγραμματιστές SQLite παρέχεται από μια ειδικά δημιουργημένη κοινοπραξία, η οποία περιλαμβάνει εταιρείες όπως οι Adobe, Oracle, Mozilla, Bentley και Bloomberg.

Βασικές αλλαγές:

  • Για ευρετήρια πλήρους κειμένου FTS5, έχει εφαρμοστεί η εντολή ασφαλούς διαγραφής, η οποία διαγράφει πλήρως όλα τα υπολειπόμενα δεδομένα μετά τη διαγραφή.
  • Οι λειτουργίες για την επεξεργασία δεδομένων JSON υποστηρίζουν πλέον επεκτάσεις JSON5.
  • Βελτιωμένο πρόγραμμα σχεδιασμού ερωτημάτων. Από προεπιλογή, η βελτιστοποίηση μέτρησης προβολών είναι ενεργοποιημένη. Η επεξεργασία των στηλών που δεν χρησιμοποιούνται σε υποερωτήματα εξαλείφεται. Βελτιωμένη εφαρμογή βελτιστοποίησης push-down.
  • Προστέθηκε η επιλογή «--unsafe-testing» στη διεπαφή της γραμμής εντολών, η οποία επιτρέπει τη χρήση ορισμένων επικίνδυνων εντολών, όπως «.testctrl», που προορίζονται για χρήση σε δοκιμές. Σε ασφαλή λειτουργία (“-safe”), επιτρέπεται η χρήση των εντολών “.log on” και “.log off”. Προστέθηκε υποστήριξη για τον οριοθέτη «—», για ορίσματα μετά τα οποία η επεξεργασία επιλογών είναι απενεργοποιημένη. Προστέθηκαν οι παράμετροι ":inf" και ":nan" που σχετίζονται με τις τιμές άπειρο και NaN.
  • Τα ονόματα των συναρτήσεων SQL που ορίζονται από την εφαρμογή επιτρέπουν τη διασταύρωση με τις λέξεις-κλειδιά CROSS, FULL, NINER, LEFT, NATURAL, OUTER και RIGHT.
  • Οι δυνατότητες του PRAGMA integrity_check έχουν επεκταθεί. Προστέθηκε έλεγχος για τον καθορισμό τιμών NaN σε στήλες με τη συνθήκη NOT NULL. Βελτιωμένο περιεχόμενο πληροφοριών των μηνυμάτων σφάλματος.
  • Το πρόσθετο συνεδρίας επιτρέπει την παρακολούθηση αλλαγών από πίνακες χωρίς ROWID.
  • Ο τροποποιητής "subsec" προστέθηκε σε συναρτήσεις για εργασία με ώρες και ημερομηνίες για χρήση κλασμάτων δευτερολέπτων.
  • Το προεπιλεγμένο βάθος αναδρομής για πίνακες και αντικείμενα JSON έχει μειωθεί από 2000 σε 1000.

Επιπλέον, έχει δημιουργηθεί η κυκλοφορία του DuckDB 0.8.0 DBMS, το οποίο αναπτύσσει μια έκδοση του SQLite, διευρυμένη με δυνατότητες και βελτιστοποιήσεις για την εκτέλεση αναλυτικών ερωτημάτων που καλύπτουν σημαντικό μέρος των αποθηκευμένων δεδομένων, για παράδειγμα, τη συγκέντρωση ολόκληρου του περιεχομένου των πινάκων ή τη συγχώνευση πολλών μεγάλων τραπεζιών. Παρέχει μια προηγμένη διάλεκτο της SQL που περιλαμβάνει πρόσθετες δυνατότητες για την επεξεργασία πολύ περίπλοκων και χρονοβόρων ερωτημάτων και υποστηρίζει επίσης πολύπλοκους τύπους (πίνακες, δομές, ενώσεις), εκτέλεση πολλαπλών ερωτημάτων ταυτόχρονα και εκτέλεση ερωτημάτων απευθείας από αρχεία CSV, JSON και Parquet . Είναι δυνατή η εισαγωγή από το PostgreSQL DBMS.

Εκτός από τον κώδικα φλοιού από το SQLite, το έργο χρησιμοποιεί έναν αναλυτή από την PostgreSQL σε μια ξεχωριστή βιβλιοθήκη, το στοιχείο Date Math από το MonetDB, τη δική του υλοποίηση συναρτήσεων παραθύρου (με βάση τον αλγόριθμο Συνάθροισης Δέντρων τμημάτων), έναν επεξεργαστή κανονικής έκφρασης που βασίζεται σε τη βιβλιοθήκη RE2, το δικό του εργαλείο βελτιστοποίησης ερωτημάτων και έναν μηχανισμό ελέγχου MVCC ταυτόχρονη εκτέλεση εργασιών (Multi-Version Concurrency Control), καθώς και μια διανυσματική μηχανή εκτέλεσης ερωτημάτων που βασίζεται στον αλγόριθμο Hyper-Pipelining Query Execution, ο οποίος επιτρέπει μεγάλα σύνολα τιμών να υποβληθεί σε επεξεργασία ταυτόχρονα σε μία λειτουργία. Ο κωδικός του έργου διανέμεται με την άδεια MIT.

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

  • Προστέθηκαν νέες εκφράσεις "PIVOT" και "UNPIVOT" για τη μετατροπή των σειρών σε στήλες και αντίστροφα.
  • Βελτιωμένη παραλληλοποίηση κατά την εισαγωγή και εξαγωγή δεδομένων. Από προεπιλογή, η ανάγνωση πολλαπλών νημάτων από αρχεία CSV και η γραφή πολλαπλών νημάτων υλοποιούνται κατά τη χρήση μορφών Parquet, CSV και JSON.
  • Προστέθηκε ο τελεστής "**" για αναδρομική επανάληψη μέσω καταλόγων κατά τον προσδιορισμό των διαδρομών αρχείων (για παράδειγμα, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Προστέθηκε υποστήριξη για λειτουργίες συγχώνευσης (JOIN) για δεδομένα με τη μορφή χρονοσειράς (τμήματα τιμών παραμέτρων σε καθορισμένα χρονικά διαστήματα), όπου το κριτήριο για τη συγχώνευση εγγραφών δεν είναι ακριβές, αλλά κατά προσέγγιση σύμπτωση τιμών σε ένα πεδίο με χρόνο (για παράδειγμα, μπορείτε να συγχωνεύσετε εγγραφές, ο χρόνος που δεν διαφέρει περισσότερο από 1 λεπτό).
  • Υλοποιήθηκε η αργή φόρτωση των μεταδεδομένων της βάσης δεδομένων, η οποία κατέστησε δυνατή την επιτάχυνση της εκκίνησης του DBMS κατά δεκάδες φορές.
  • Προστέθηκε υποστήριξη για τη σύνδεση προσαρμοσμένων συναρτήσεων στην Python.
  • Προστέθηκε υποστήριξη για το ADBC ​​(Arrow Database Connectivity) API για μεταφορά δεδομένων χρησιμοποιώντας το Apache Arrow.
  • Έχει εφαρμοστεί δέσμευση για ενσωμάτωση με τον κώδικα Swift.
  • Άλλαξε τη συμπεριφορά του τελεστή διαίρεσης ("/") για να εκτελεί υπολογισμούς κινητής υποδιαστολής αντί για πράξεις ακεραίων από προεπιλογή. Ένας νέος τελεστής "//" προτείνεται για διαίρεση ακέραιου αριθμού. Η παλιά συμπεριφορά μπορεί να επιστραφεί ορίζοντας "SET integer_division=true;".
  • Η μέθοδος συνυπολογισμού μηδενικών εγγραφών κατά την ταξινόμηση έχει αλλάξει από "NULLS FIRST" σε "NULLS LAST", π.χ. Οι τιμές NULL θα εκτυπωθούν τώρα στο τέλος και όχι στην αρχή της λίστας. Η παλιά συμπεριφορά μπορεί να επιστραφεί ορίζοντας "SET default_null_order='nulls_first';".

Επιπλέον, μπορούμε να σημειώσουμε το έργο CG/SQL που αναπτύχθηκε από το Facebook, το οποίο παρέχει μια γεννήτρια κώδικα για τη χρήση αποθηκευμένων διαδικασιών με το SQLite. Το CG/SQL σάς επιτρέπει να γράφετε αποθηκευμένες διαδικασίες σε μια ειδική διάλεκτο της T-SQL (Transact-SQL), η οποία επιτρέπει την κλήση συναρτήσεων της τυπικής βιβλιοθήκης C και την πρόσβαση σε δεδομένα στο SQLite. Οι αποθηκευμένες διαδικασίες που δημιουργούνται μεταγλωττίζονται σε κώδικα C που χρησιμοποιεί το SQLite C API για την εκτέλεση καθορισμένων ενεργειών και την επεξεργασία σύνθετων ερωτημάτων. Οι μεταγλωττισμένες αποθηκευμένες διαδικασίες μπορούν να συνδεθούν με προγράμματα C, Java και Objective-C. Ο κώδικας του έργου είναι γραμμένος σε C και διανέμεται με την άδεια MIT.

Πηγή: opennet.ru

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