Κυκλοφορία του FerretDB 0.1, μια υλοποίηση του MongoDB που βασίζεται στο PostgreSQL DBMS

Δημοσιεύτηκε η κυκλοφορία του έργου FerretDB 0.1 (πρώην MangoDB), επιτρέποντάς σας να αντικαταστήσετε το προσανατολισμένο σε έγγραφα DBMS MongoDB με PostgreSQL χωρίς να κάνετε αλλαγές στον κώδικα της εφαρμογής. Ο FerretDB υλοποιείται ως διακομιστής μεσολάβησης που μεταφράζει τις κλήσεις προς το MangoDB σε ερωτήματα SQL στο PostgreSQL, επιτρέποντας τη χρήση του PostgreSQL ως πραγματική αποθήκευση. Ο κώδικας είναι γραμμένος στο Go και διανέμεται με την άδεια Apache 2.0.

Η ανάγκη για μετεγκατάσταση μπορεί να προκύψει λόγω της μετάβασης του MongoDB σε μια ιδιόκτητη άδεια SSPL, η οποία βασίζεται στην άδεια AGPLv3, αλλά δεν είναι ανοιχτή, καθώς περιέχει μια μεροληπτική απαίτηση να παραδίδεται σύμφωνα με την άδεια SSPL όχι μόνο ο ίδιος ο κωδικός εφαρμογής, αλλά και τον πηγαίο κώδικα όλων των στοιχείων που εμπλέκονται στην υπηρεσία cloud παροχής.

Το κοινό-στόχος του FerretDB είναι χρήστες που δεν χρησιμοποιούν τις προηγμένες δυνατότητες του MongoDB στις εφαρμογές τους, αλλά θέλουν να χρησιμοποιήσουν μια εντελώς ανοιχτή στοίβα λογισμικού. Στο τρέχον στάδιο ανάπτυξης, το FerretDB εξακολουθεί να υποστηρίζει μόνο μέρος των δυνατοτήτων MongoDB που χρησιμοποιούνται συχνότερα σε τυπικές εφαρμογές. Στο μέλλον, σχεδιάζουν να επιτύχουν πλήρη συμβατότητα με προγράμματα οδήγησης για το MongoDB και να παρέχουν τη δυνατότητα χρήσης του FerretDB ως διαφανούς αντικατάστασης του MongoDB.

Θυμηθείτε ότι το MongoDB καταλαμβάνει μια θέση μεταξύ γρήγορων και επεκτάσιμων συστημάτων που λειτουργούν με δεδομένα στη μορφή κλειδιού/τιμής και σχεσιακών DBMS, λειτουργικών και βολικών στη δημιουργία ερωτημάτων. Το MongoDB υποστηρίζει την αποθήκευση εγγράφων σε μορφή JSON, έχει μια αρκετά ευέλικτη γλώσσα για τη δημιουργία ερωτημάτων, μπορεί να δημιουργήσει ευρετήρια για διάφορα αποθηκευμένα χαρακτηριστικά, παρέχει αποτελεσματικά αποθήκευση μεγάλων δυαδικών αντικειμένων, υποστηρίζει καταγραφή λειτουργιών για αλλαγή και προσθήκη δεδομένων στη βάση δεδομένων, μπορεί λειτουργεί σύμφωνα με το παράδειγμα Χάρτης/Μείωση, υποστηρίζει την αναπαραγωγή και τη δημιουργία διαμορφώσεων ανεκτικών σφαλμάτων.

Η κυκλοφορία του FerretDB 0.1.0 επανασχεδίασε πλήρως τη μέθοδο ανάκτησης δεδομένων από την PostgreSQL. Προηγουμένως, για κάθε εισερχόμενο αίτημα MongoDB, δημιουργήθηκε ένα ερώτημα SQL στην PostgreSQL, χρησιμοποιώντας συναρτήσεις για εργασία με τη μορφή JSON και φιλτράρισμα των αποτελεσμάτων στην πλευρά PostgreSQL. Λόγω διαφορών στη σημασιολογία των συναρτήσεων PostgreSQL και MongoDB json, υπήρξε ασυμφωνία στη συμπεριφορά κατά τη σύγκριση και την ταξινόμηση διαφορετικών τύπων. Για την επίλυση αυτού του προβλήματος, τα δεδομένα λαμβάνονται πλέον περιττή από την PostgreSQL και το αποτέλεσμα φιλτράρεται στην πλευρά FerretDB, γεγονός που κατέστησε δυνατή την αναπαραγωγή της συμπεριφοράς του MongoDB στις περισσότερες περιπτώσεις.

Το τίμημα της αυξημένης συμβατότητας ήταν μια μείωση στην απόδοση, την οποία σε μελλοντικές εκδόσεις αναμένουν να αντισταθμίσουν με επιλεκτικό φιλτράρισμα από την πλευρά του FerretDB μόνο ερωτήματα για τα οποία υπάρχει απόκλιση στη συμπεριφορά. Για παράδειγμα, το ερώτημα "db.collection.find({_id: 'some-id-value'})" μπορεί να υποβληθεί σε πλήρη επεξεργασία στο PostgreSQL. Ο πρωταρχικός στόχος του έργου σε αυτό το στάδιο ανάπτυξης είναι η επίτευξη συμβατότητας με το MongoDB και η απόδοση έχει υποβιβαστεί προς το παρόν στο παρασκήνιο. Μεταξύ των λειτουργικών αλλαγών στη νέα έκδοση, σημειώνεται η υποστήριξη για όλους τους τελεστές bit, ο τελεστής σύγκρισης «$eq», καθώς και οι τελεστές «$elemMatch» και «$bitsAllClear».

Πηγή: opennet.ru

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