2011-10-22 9 views
13

Mi sono recentemente innamorato di CouchDB. Sono piuttosto entusiasta dei suoi enormi benefici e della sua bellezza. Ora voglio assicurarmi di non aver perso nessuno svantaggio da show-stop.Svantaggi di CouchDB

Cosa ti viene in mente? In allegato c'è un elenco di punti che ho raccolto. C'è qualcosa da aggiungere?

  • I post del blog di fino al 2010 reclamano "non abbastanza maturo" (qualunque cosa valga la pena).
  • Più lento del DBMS in memoria.
  • Gli aggiornamenti sul posto richiedono la logica lato server (update handlers).
  • Commerci disco rispetto alla velocità: i database possono diventare enormi rispetto ad altri DBMS (tuttavia, la funzionalità di compattazione esiste).
  • "Solo" consistenza finale.
  • Le visualizzazioni temporanee su set di dati di grandi dimensioni sono molto lento.
  • Replica di grandi database may fail.
  • Mappare/ridurre il paradigma richiede un ripensamento (solo per completezza).

L'unico punto che preoccupa mi è # 3 (aggiornamenti in-place), perché è abbastanza scomodo. più

+0

E il sovraccarico della comunicazione HTTP? Che dire della difficoltà di limitare i valori nel divano (gli uni unici sono difficili da fare) – Raynos

risposta

10
  • I dati sono in JSON

Ciò significa che i documenti sono piuttosto grandi (BigData, larghezza di banda della rete, velocità) e che i nomi delle chiavi descrittivi effettivamente fanno male, poiché si sommano alle dimensioni del documento.

più some more:

  • Non supporta le transazioni

Significa che far rispettare l'unicità di un campo in tutti i documenti non è sicuro, per esempio, far rispettare che un nome utente è unico.Un'altra conseguenza dell'incapacità di CouchDB di supportare la nozione tipica di una transazione è che cose come inc/decrementando un valore e salvandolo sono anche pericolose. Non ci sono molte istanze che vorremmo semplicemente inc/decrementare qualche valore in cui non potremmo semplicemente archiviare i singoli documenti separatamente e aggregarli con una vista.

  • dati relazionali

Se i dati fa un sacco di senso di essere in forma normale 3 °, e noi cerchiamo di seguire quella forma in CouchDB, stiamo andando a correre in un sacco di guaio. Un modo possibile per risolvere questo problema è vedere le regole di confronto, ma potremmo costantemente combattere con il sistema. Se i dati possono essere riformattati per essere molto denormalizzati, allora CouchDB funzionerà correttamente.

  • Data warehouse

Il problema di questo è che viste temporanee CouchDB su grandi insiemi di dati sono molto lento. Usare CouchDB e le viste permanenti potrebbe funzionare abbastanza bene. Tuttavia, nella maggior parte dei casi, un database orientato a colonne di qualche tipo è uno strumento molto migliore per il lavoro di data warehousing.

Ma Rocce CouchDB!

Ma non lasciarti scoraggiare: i DB NoSQL scritti in Erlang (CouchDB, Riak) sono i migliori, poiché Erlang è pensato per sistemi distribuiti. Divertiti con Couch!

5

2 cose che mi fanno piangere quando si utilizza CouchDB (anche se è impressionante):

  • non è progettato per i dati aggiornati di frequente
  • Esso non sono dotati di ricerca full-text
1
  • attualmente alcun supporto per le query ad-hoc (potrebbe cambiare con avvento di UnQL)
  • mancanza di supporto per il protocollo binario per la comunicazione più veloce
+0

UnQL non ha senso essere sincero. Se tutti i database NoSQL dovessero supportare UnQL, presto vedremmo i database NoUnQL. I database NoSQL sono interessanti in quanto non sono progettati su un linguaggio di query ma su un modo per archiviare i dati. Questo rende le cose così folli come il database di Rest come CouchDB possibile. Per quanto riguarda il protocollo binario, potrebbe essere utile ma, per quanto posso dire, la velocità del protocollo http non è esattamente il grosso problema con couchdb. –

0

Non ha niente a che fare con CouchDB in sé, ma essendo un Il nuovo arrivato relativo sulla scena significa che la maggior parte degli amministratori di sistema non ha ancora familiarità con esso e non lo consentirà da nessuna parte vicino ai "loro" centri dati. Se ti trovi in ​​una situazione in cui ti stai schierando in un ambiente che non controlli te stesso, questa può essere la vera battaglia.

3
  • Mancanza di ACL lettore (non esiste per gli scrittori, però)

Come un vecchio Lotus Domino pro stavo cercando di CouchDB come alternativa per un nuovo progetto a cui sto dando il via e trovato il limiti ai lettori di essere molto deboli in Couch vs. Domino. Nella mia app la sicurezza è una considerazione importante e Couch richiederebbe un livello middleware per gestire la sicurezza del lettore.

Se si dispone di un database in cui è possibile che tutti gli utenti definiti possano vedere tutti i documenti, Couch sembra una piattaforma interessante.

Se è necessario limitare le letture, è necessario cercare una soluzione middleware o considerare un'altra alternativa.

Nota per gli sviluppatori CouchDB: migliorare le opzioni di sicurezza della piattaforma. Mi rendo conto che diminuiranno le prestazioni quando vengono utilizzate, ma tieni presente che e rendi disponibile l'opzione.

Ora ritorno a determinare quale database utilizzare ...

+0

Sì. Questo mi impedisce di eseguire applicazioni solo Couch. – nisc

+0

Nel caso in cui qualcuno sia interessato, Domino 8.5.3 include il supporto JSONRest tramite le funzionalità di Domino Data Service. Si ottiene il modello di sicurezza Domino completo insieme al supporto REST. Molto bella. http://www-10.lotus.com/ldd/ddwiki.nsf/xpViewCategories.xsp?lookupName=Domino%20Data%20Service –