Ποιο ORM JavaScript πρέπει να χρησιμοποιείτε το 2018;

ΣΗΜΕΙΩΣΗ: Μάιος 2018: Διαβάστε από TypeORM στο LoopBack: A Retrospectiveγια μια ενημερωμένη προοπτική!

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Αυτό το άρθρο εξετάζει τις λύσεις Object Relational Mapping (ORM) στο οικοσύστημα JavaScript και προσδιορίζει μια ιδανική λύση βάσει συγκεκριμένων απαιτήσεων.

Τι είναι το ORM και γιατί είναι τόσο σημαντικό;

Οι λύσεις ORM είναι χρήσιμες για τη διευκόλυνση της ανάπτυξης API βάσει δεδομένων. Οι χρήστες έχουν συγκεκριμένες ανάγκες που οδηγούν το μοντέλο δεδομένων μιας εφαρμογής. Στην ανάπτυξη παλαιού τύπου, αυτή η αρχιτεκτονική δεδομένων εφαρμόζεται συνήθως και ελέγχεται η έκδοση χρησιμοποιώντας σενάρια βάσης δεδομένων, όπως σενάρια SQL. Στη συνέχεια χρησιμοποιείται μια ξεχωριστή βιβλιοθήκη για την εφαρμογή διακομιστή για την εκτέλεση ενεργειών CRUD στη βάση δεδομένων.

Τα ORM λειτουργούν ως API υψηλού επιπέδου για την εκτέλεση του CRUD και αυτές τις μέρες τα ποιοτικά ORM μας επιτρέπουν επίσης να αρχικοποιήσουμε τα δεδομένα μέσω κώδικα. Ο σύνθετος χειρισμός δεδομένων, ο καθαρισμός και ούτω καθεξής, είναι συχνά πιο εύκολος στον κώδικα. Ενώ υπάρχουν ειδικά εργαλεία Extract, Transform και Load (ETL), οι ίδιες εργασίες ETL μπορούν εύκολα να εφαρμοστούν στο ORM.

Η εφαρμογή εκχυλίσματος, μετασχηματισμού και φόρτωσης με κώδικα επιτρέπει σε ένα σύστημα να ενσωματώνει πιο εύκολα δεδομένα από πολύ διαφορετικές πηγές. Βάσεις δεδομένων SQL πολλαπλών γεύσεων, δεδομένα NoSQL, δεδομένα συστήματος αρχείων και δεδομένα τρίτων μπορούν όλα να ενσωματωθούν σε μία γλώσσα με ένα ORM JavaScript.

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

Για επαναφορά, τα ORM βελτιώνουν την παραγωγικότητα του προγραμματιστή παρέχοντας ένα API υψηλού επιπέδου, σε μία γλώσσα, με λειτουργικότητα που θα απαιτούσε παραδοσιακά πολλά διαφορετικά εργαλεία και σύνολα δεξιοτήτων. Λιγότερες ανάγκες δεξιοτήτων, ανάγκες εργαλείων και ώρες που απαιτούνται διευκολύνουν το περιθώριο του έργου. Απρόβλεπτες απαιτήσεις και χρονοδιάγραμμα έργου προετοιμάζονται καλύτερα με ευέλικτη διαμόρφωση δεδομένων κατασκευής και χρόνου εκτέλεσης

Προτιμώμενες δυνατότητες ORM

Το συγκεκριμένο πλαίσιο έργου που οδηγεί σε αυτήν την αναθεώρηση ORM απαιτεί την εφαρμογή μιας πρωτοποριακής, καθολικής εφαρμογής JavaScript.

Τα πρωτοποριακά γενικά πλαίσια JavaScript διαθέτουν ουσιαστικά 3 γεύσεις: Angular, React και Vue. Δηλαδή Angular Universal, Next και Nuxt.

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

  1. Υποστήριξη για Mongo και MySQL, με προτίμηση την υποστήριξη πρόσθετων επιλογών
  2. Ενσωμάτωση με το Webpack
  3. Ενσωμάτωση με Express
  4. Ελάχιστη επιτυχία στην απόδοση στο χρόνο εκτέλεσης
  5. Διαισθητική σύνταξη
  6. Επιπλέον χαρακτηριστικά
  7. Υψηλή αναλογία αστέρι προς έκδοση Github
  8. Συντηρείται ενεργά χωρίς αποτυχίες κατασκευής ή εξαρτημένες καταργήσεις

Οι υποψήφιοι και τα αποτελέσματα

Κάθε υποψήφιος έλαβε βαθμολογία μεταξύ 0 και 10 για κάθε προτιμώμενη ικανότητα. Ένα σκορ 5 σημαίνει αποδεκτό. Ο μέσος όρος για μια στήλη μπορεί να είναι περισσότερο ή μικρότερος από 5. Για παράδειγμα, ένα ORM με υποστήριξη για πολλές βάσεις δεδομένων NoSQL και καμία υποστήριξη για οποιαδήποτε βάση δεδομένων SQL θα λάβει βαθμολογία μεταξύ 2 και 4. Το 0 υποδηλώνει την πλήρη έλλειψη ενός χαρακτηριστικού.

Μια ειδική κραυγή στους joi, pg και knex. Αυτές οι βιβλιοθήκες δεν είναι πλήρεις ORM, αλλά είναι εξαιρετικές σε ό, τι κάνουν. Εάν δεν χρειάζεστε ένα πλήρες ORM, ρίξτε μια ματιά και δείτε εάν μπορούν να καλύψουν τις ανάγκες σας.

συμπέρασμα

Τα σύνολα αντικατοπτρίζουν τη συνολική χρησιμότητα κάθε λύσης. Τα κορυφαία 5 αποτελέσματα ήταν:

  1. Loopback
  2. Γραμμή
  3. Μαγκούστα
  4. ΠληκτρολογήστεORM
  5. Ακολουθήστε

Ένας συνδυασμός αναγκών για συγκεκριμένο έργο, παραλειφθέντων παραγόντων και προσωπικών προτιμήσεων οδηγεί στις κορυφαίες 3 επιλογές.

Το Waterline ενσωματώνεται σε μεγάλο βαθμό στο πλαίσιο Sails και το Mongoose υποστηρίζει μόνο το MongoDB.

Το Sequelize και το NodeORM2 περιορίζονται σε SQL και στερούνται δημιουργίας API.

Λόγω της σύνταξης TypeScript, το TypeORM ενσωματώνεται όμορφα με ένα έργο Angular.

Ως προγραμματιστής, προτείνω να δημιουργήσετε πρωτότυπα περισσότερες από μία κορυφαίες λύσεις για να προσδιορίσετε τον πραγματικό νικητή. Οι 3 κορυφαίες λύσεις, οι οποίες είναι όλοι υποψήφιοι πρωτότυπου, περιλαμβάνουν:

  1. Loopback
  2. ΠληκτρολογήστεORM
  3. Caminte

Έδωσα αυτές τις πληροφορίες σε άλλους προγραμματιστές του έργου και ως ομάδα αποφασίσαμε να δοκιμάσουμε πρώτα το TypeORM. Ελέγξτε ξανά αργότερα για την αναδρομική!

Τι πιστεύετε για αυτό το αποτέλεσμα; Αφήστε ένα σχόλιο ή συνεισφέρετε τις σκέψεις σας σε αυτήν τη σύγκριση.