Qualcosa di utile da ORM per un progetto NodeJS è già implementato in SQL?

1

Beh, in realtà è un progetto di assegnazione e ho già implementato un forum semplice ma funzionale con NodeJS. Ma ora ci è stato richiesto di utilizzare i framework ORM per refactoring parte del codice che vale la pena refactoring .

Poiché utilizzo Node.JS, non sono disponibili i vantaggi sicuri dal tipo di ORM che potrei ottenere. Inoltre, il codice è già funzionante e non vedo che cosa potrebbe offrirti un buon ORM ...

(Le richieste sono gestite abbastanza rapidamente e in modo indipendente ... Non penso che mi piacerebbe memorizzare nella cache tonnellate di Object s dal database a request.session ...)

La mia domanda è: quali possibili benefici un ORM porterà a un progetto NodeJS stabile?

    
posta phoeagon 01.06.2013 - 14:50
fonte

1 risposta

1

Gli ORM offrono alcuni vantaggi oltre allo scopo principale di mappare i dati dell'oggetto ai dati relazionali. Un ORM tradizionale e ORM di terze parti comuni potrebbero non adattarsi particolarmente a ciò che si sta facendo, e questo è un buon punto di partenza per spiegare perché uno non è stato impiegato, ma ci sono altri vantaggi degli ORM che potrebbero voler considerare o riconsiderare.

  • L'ORMS promuove o applica la condivisione di interfacce comuni su un livello distinto e un limite di sistema

    Quando si incontrano tipi specifici ORM, si dovrebbe essere molto vicini a lasciare il regno del codice dell'applicazione e inserire il codice di persistenza. Questo dovrebbe essere il caso anche nel caso in cui si arrotoli e si metta in posizione il proprio ORM personalizzato rispetto o preferibilmente all'ORM di una terza parte. Idealmente, la struttura di un'applicazione dovrebbe essere quella di eliminare e sostituire un ORM e un intero meccanismo di persistenza con un ORM concorrente o alternativo e un meccanismo di persistenza senza un notevole sforzo in termini di cambiamento fondamentale, dovrebbe essere relativamente indolore.

    Alcune applicazioni si prendono la briga di rendere la sostituzione dei componenti una priorità particolarmente alta e impiegano l'iniezione di dipendenza per fornire il provider ORM effettivo. In questo caso, un'impostazione puramente accademica, DI per il provider ORM probabilmente non è necessaria. In effetti, la maggior parte dei progetti vedrebbe che è al di là superfluo. Per alcuni, tuttavia, questa indiretta e flessibilità sono molto importanti in quanto consente di collegare diversi bit che forniscono notevoli vantaggi situazionali a seconda dei benchmark o delle funzionalità che stanno inseguendo. Il software del forum è una di queste classi di software che potrebbe essere un buon candidato per quel tipo di flessibilità, specialmente se mirato come prodotto di un mercato di massa.

    Esiste una chiara distinzione tra comportamento del dominio e problemi di persistenza? Questa distinzione avviene nello stesso modo in tutto o in parte dell'applicazione?

    Sono query di cittadini di prima classe o vengono semplicemente presentati come stringhe formattate a un'origine dati? Che tipo di meccanismo è in atto per estendere o modificare una query? Le interrogazioni possono essere estese o modificate attraverso l'assegnazione dei parametri? Come vengono gestiti i vincoli? La strategia di smistamento può essere facilmente modificata a livello di codice durante l'esecuzione? Non rispondere a queste domande qui, considerale solo quando valuti ulteriormente cosa potrebbe significare utilizzare un ORM o impiegare le caratteristiche più importanti se sottovalutate di un ORM.

    Ci sono comportamenti all'interno del livello di persistenza che sono fondamentalmente uguali e potrebbero beneficiare di ulteriori astrazioni comuni?

  • Gli ORM spesso forniscono il caching

    Perché usiamo il caching? Per mantenere necessario leggere frequentemente, ma raramente i dati scritti, più vicini. L'unico modo per sapere in modo definitivo se il caching sarebbe o non sarebbe d'aiuto è attraverso test e profiling. Tuttavia, ci sono momenti in cui diventa ovvio che potrebbe essere di aiuto il caching.

    Ad esempio, la promozione di una variabile transitoria da un ambito del blocco locale a un ambito più globale può essere considerata una forma di memorizzazione nella cache e può migliorare significativamente le prestazioni nelle giuste circostanze. Quella strategia, non diversamente da qualsiasi altra strategia ha un compromesso. Il compromesso per la promozione dell'ambito di una variabile è la rimozione di alcune protezioni intrinseche associate a quella vita più breve e la riduzione del grado di incapsulamento.

    Il software del forum come classe di software è spesso un candidato fenomenale per il caching. Di solito la maggior parte delle operazioni del forum sta leggendo i dati molto più spesso rispetto alla scrittura di dati, soprattutto considerando che molti forum hanno argomenti popolari che vengono letti e riletti forse molte volte rispetto al numero di volte in cui vengono aggiunti nuovi post che estendono l'argomento. Il software del forum in questione potrebbe non realizzare un grande vantaggio come progetto puramente accademico perché potrebbe non sperimentare condizioni del mondo reale che gli scenari del mondo reale di molti utenti che colpiscono il sito produrranno.

    Poiché a questo punto non ti stai affidando a un ORM di terze parti, il tuo potenziale meccanismo di memorizzazione nella cache e la strategia sono leggermente più flessibili. È possibile utilizzare un provider comune per memorizzare nella cache sia le pagine post-elaborate che i set di dati.

Ci sono più vantaggi per gli ORM che non sono menzionati. Ma dal momento che questo è accademico, non voglio prendere tutto il piacere del processo di ricerca. Dai uno sguardo ravvicinato a quali ORM offrono o come vantaggio pubblicizzato diretto, o come conseguenza o effetto collaterale che spesso accompagna il loro uso.

    
risposta data 01.06.2013 - 23:01
fonte

Leggi altre domande sui tag