Το MangoDB εκσυγχρονίστηκε και τώρα αλλάζει σε FerretDB

Πρόσφαταs ημέρες ανακοινώθηκε η είδηση ​​της έναρξης του έργου FerretDB, (πρώην MangoDB), το οποίο σας επιτρέπει να αντικαταστήσετε το προσανατολισμένο στα έγγραφα DBMS του MongoDB με το PostgreSQL χωρίς να κάνετε αλλαγές στον κώδικα της εφαρμογής σας.

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

Το FerretDB (πρώην MangoDB) ιδρύθηκε για να γίνει η de facto αντικατάσταση ανοιχτού κώδικα για το MongoDB. Το FerretDB είναι ένας διακομιστής μεσολάβησης ανοιχτού κώδικα που μετατρέπει ερωτήματα πρωτοκόλλου καλωδίου MongoDB σε SQL, χρησιμοποιώντας την PostgreSQL ως μηχανή βάσης δεδομένων.

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

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

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

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

Οι περισσότεροι χρήστες MongoDB δεν χρειάζονται πολλές από τις προηγμένες δυνατότητες που προσφέρει το MongoDB. Ωστόσο, χρειάζονται μια εύκολη στη χρήση λύση βάσης δεδομένων ανοιχτού κώδικα. Αναγνωρίζοντας αυτό, η FerretDB είναι εδώ για να καλύψει αυτό το κενό.

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

Στην κυκλοφορία του 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 και η απόδοση εξακολουθεί να βρίσκεται στο παρασκήνιο.

Από τις λειτουργικές αλλαγές στη νέα έκδοση, υπάρχει υποστήριξη για όλους τους τελεστές bitwise, τον τελεστή σύγκρισης "$e", καθώς και τους τελεστές "$elemMatch" και "$bitsAllClear".

Τελικά για όσους ενδιαφέρονται να μάθουν περισσότερα γι 'αυτό, θα πρέπει να γνωρίζουν ότι ο κωδικός είναι γραμμένος στο Go και διανέμεται με την άδεια Apache 2.0 και μπορείτε να ελέγξετε τον κωδικό του στον παρακάτω σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.