Quale ORM JavaScript dovresti usare nel 2018?

di John Vandivier

NOTA: Maggio 2018: Leggi Da TypeORM a LoopBack: una retrospettiva per una prospettiva aggiornata!

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Questo articolo esamina le soluzioni ORM (Object Relational Mapping) nell’ecosistema JavaScript e identifica una soluzione ideale in base a requisiti specifici.

Cos’è un ORM e perché è così importante?

Le soluzioni ORM sono utili per facilitare lo sviluppo API basato sui dati. Gli utenti hanno esigenze concrete che guidano il modello di dati di un’applicazione. Nello sviluppo legacy, questa architettura di dati viene in genere implementata e controllata dalla versione utilizzando script di database come script SQL. Una libreria separata viene quindi utilizzata per l’applicazione server per eseguire azioni CRUD sul database.

Gli ORM funzionano come API di alto livello per eseguire CRUD, e in questi giorni gli ORM di qualità ci consentono anche di inizializzare i dati attraverso il codice. La manipolazione complessa dei dati, la pulizia e così via, è spesso più facile nel codice. Mentre esistono strumenti dedicati per estrarre, trasformare e caricare (ETL), le stesse attività ETL possono essere facilmente implementate in ORM.

L’implementazione di extract, transform e load with code consente a un sistema di integrare più facilmente dati provenienti da fonti molto diverse. I database SQL di più versioni, dati NoSQL, dati del file system e dati di terze parti possono essere integrati in un’unica lingua con un ORM JavaScript.

Infine, il controllo dei dati orientato al codice consente anche a un sistema di implementare l’utilizzo dei dati in fase di esecuzione o nel processo di compilazione e adattare in modo flessibile l’utilizzo durante il processo di sviluppo in base alle esigenze.

Per ribadire, ORM migliora la produttività degli sviluppatori fornendo un’API di alto livello, in un’unica lingua, con funzionalità che richiederebbero tradizionalmente diversi strumenti e set di abilità. Meno esigenze di abilità, necessità di strumenti e ore richieste facilitano il margine di progetto. I requisiti imprevisti e la timeline del progetto sono meglio preparati con la configurazione flessibile dei dati di build e runtime.

Funzionalità ORM preferite

Il particolare contesto di progetto che porta a questa revisione ORM richiede l’implementazione di un’applicazione JavaScript universale all’avanguardia, simile a CMS.

I framework JavaScript universali all’avanguardia sono disponibili essenzialmente in 3 gusti: Angular, React e Vue. Vale a dire Angular Universal, Next e Nuxt.

Node supporta nativamente le operazioni del file system, quindi i requisiti dei dati del sistema di gestione dei contenuti equivalgono a una preferenza per il supporto di database ad ampio raggio. In totale, sono considerati i seguenti requisiti:

  1. Supporto per Mongo e MySQL, con preferenza per il supporto di opzioni aggiuntive
  2. Integrazione con Webpack
  3. Integrazione con Express
  4. Minimo colpo di prestazioni in fase di esecuzione
  5. sintassi Intuitiva
  6. caratteristiche aggiuntive
  7. Alta Github stelle al problema del rapporto
  8. Attivamente mantenuto, senza costruire guasti o obsoleti dipendenze

Candidati e Risultati

Ogni candidato ha ottenuto un punteggio tra 0 e 10 per ogni preferito capacità. Un punteggio di 5 significa accettabile. La media per una colonna può essere maggiore o minore di 5. Ad esempio, un ORM con supporto per più database NoSQL e nessun supporto per qualsiasi database SQL riceverà un punteggio compreso tra 2 e 4. 0 indica la completa mancanza di una funzione.

Visualizza questo post o questo foglio di Google per fare clic sui collegamenti ipertestuali o copiare i dati come tabella.

Un grido speciale per joi, pg e knex. Queste librerie non sono ORM completi, ma sono grandi in quello che fanno. Se non hai bisogno di un ORM in piena regola, dai un’occhiata e vedi se possono soddisfare le tue esigenze.

Conclusione

I totali riflettono l’utilità complessiva di ciascuna soluzione. I primi 5 risultati sono stati:

  1. Loopback
  2. Linea di galleggiamento
  3. Mangusta
  4. TypeORM
  5. Sequelize

Una combinazione di esigenze specifiche del progetto, fattori omessi e preferenze personali portano alle prime 3 scelte.

Linea di galleggiamento è fortemente integrato nel quadro Vele e Mangusta supporta solo MongoDB.

Sequelize e NodeORM2 sono limitati a SQL e mancano della generazione di API.

A causa della sintassi TypeScript, TypeORM si integra bene con un progetto angolare.

Come sviluppatore, consiglio di prototipare più di una soluzione top per identificare il vero vincitore. Le prime 3 soluzioni, che sono tutte candidate alla prototipazione, includono:

  1. Loopback
  2. TypeORM
  3. Caminte

Ho inviato queste informazioni ad altri sviluppatori del progetto, e come team abbiamo deciso di provare TypeORM prima. Torna più tardi per la retrospettiva!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.