2012-01-24 7 views
7

Desidero scegliere un servizio Web di back-end per la mia app. Leggere la documentazione di questi servizi (Parse, Proxomo, Cocoafish, StackMob ecc.) Rivela che alcuni di essi offrono di archiviare i dati in forma di schemi mentre altri menzionano che lo schema deve essere specificato apriori. Capisco qual è lo schema dei dati e spero che gli schemi siano facili da usare, ma vogliamo conoscere pregi e demeriti di ciascuno. Qualsiasi spiegazione sarà molto apprezzata.Vantaggio dei dati di schemi che memorizzano i dati memorizzati con lo schema

risposta

6

La più grande differenza è la scalabilità.

Le soluzioni di archiviazione dati con schema sono molto più difficili da distribuire rispetto alle soluzioni di archiviazione dati gratuite di Schema. È davvero facile da replicare (schema free) coppie chiave-valore per tolleranza d'errore. È davvero facile distribuire copie attraverso i nodi per tempi di lettura rapidi ed è più facile fornire scritture veloci con coerenza finale. Se gestisci il tuo database questo significa che sarà molto più semplice gestire soluzioni senza schema quando è necessario scalare su più server. Se si utilizza un servizio questo significa che le soluzioni senza schema sono normalmente più economiche e veloci.

Il problema con lo schema libero si verifica quando sono necessarie transazioni e coerenza tra vari set di dati o tabelle. Tutto questo deve essere fatto in codice.

Quindi la linea di fondo è: se avete bisogno di enormi volumi di dati con accesso rapido a buon mercato, deve essere privo di schemi. Se, d'altro canto, le dimensioni e il carico dei dati sono modesti rispetto ai sistemi basati su schema, sono migliori.

Se hai bisogno di aiuto per scegliere il servizio con cui andare, un modo migliore per decidere sarebbe di fare una lettura/sec write/sec e l'analisi delle dimensioni dei dati prevista sulla tua applicazione e poi scegliere quale soluzione è più economica. Tutti questi servizi presumibilmente scaleranno per i tuoi carichi ma il costo sarà il fattore decisivo.

1

Io non sono un vero e proprio specialista di questo, ma da quello che ho letto, ecco cosa la mia percezione:

  • maggior parte del tempo, i database schemaless consentono di memorizzare facilmente valori chiave /, oggetti JSON. Quindi è spesso abbastanza facile collegare gli oggetti che si manipolano nella propria applicazione allo storage DB. Non è necessario utilizzare un ORM (Object Relational Mapper) perché gli oggetti sono direttamente nel formato accettato dal DB (la maggior parte delle volte è abbastanza facile generare un JSON dall'oggetto che si ha in un'app)

  • Se non si dispone di uno schema, è possibile regolare facilmente (aggiungi/rimuovi) le proprietà degli oggetti che si desidera archiviare nel DB senza dover passare attraverso un aggiornamento dello schema e una migrazione dei dati dal database. vecchio schema a quello nuovo.

  • nei CON per gli schemi, la mia sensazione è che non è possibile esprimere tutti i vincoli che si possono fare in SQL standard per recuperare i dati (non si fa nessun join ecc.) Quindi forse si deve veramente controllare come vuoi recuperare roba dai dati db e vedere cosa viene offerto dal motore di schemi.

+0

Grazie mille Yonel per i vostri pensieri e spiegazioni. Non sono solo nuovo ai servizi Web, ma anche alla programmazione in generale, quindi potrei sbagliarmi ma (riconducendo al terzo punto) schemi di archiviazione dei dati i servizi sono in realtà molti filtri per il recupero dei dati. Aspetterò ancora un po 'di tempo e poi segnerò la tua risposta come corretta e darò la generosità. – chatur