2012-04-02 12 views
6

Nota: (Ho studiato CouchDB per un periodo e ho bisogno di alcune esperienze effettive).A CouchDB o no?

Ho un database Oracle per un servizio di monitoraggio della flotta e un po 'lo stato qui sono:

  1. 100 GB db
  2. enorme inserimento/sec (i nostri messaggi ricevuti)
  3. replica affidabile (tramite flussi di Oracle su 4 server)
  4. Interrogazioni complesse.

Ora la domanda: CouchDB può essere utilizzato in questo caso?

Nota: perché ho pensato a CouchDB?

  1. Ho letto sulla sua capacità di scalare orizzontalmente molto bene. Questo è molto importante nel nostro caso.
  2. Poiché è privo di schemi, siamo in grado di gestire le modifiche in modo più corretto poiché abbiamo molte modifiche in diverse tabelle e stored procedure.

Grazie

Edit I: ho bisogno transazioni troppo. Ma posso tollerare anche altre soluzioni. E se c'è un piccolo ritardo nella replica, non sarebbe un problema se fosse garantito.

+0

Avete bisogno di transazioni?Avete bisogno di una replica sincrona garantita? – edze

+0

Grazie per il vostro chiarimento. Sì; Ho bisogno di transazioni, ma posso tollerare qualche ritardo nella replica. –

+1

http://stackoverflow.com/questions/299723/can-i-do-transactions-and-locks-in-couchdb – edze

risposta

23

Si sta godendo le seguenti caratteristiche con il database:

  1. usarlo in produzione
  2. I dati sono naturalmente relazionale (in relazione a se stesso)
  3. tassi di inserimento enorme (nessuna preoccupazione MVCC)
  4. query complesse
  5. transazioni

Questi sono tutti i motivi non per passare a CouchDB.

Naturalmente, la storia non è così semplice. Penso che tu abbia scoperto ciò che molte persone non imparano mai: problemi complessi richiedono soluzioni complesse. Non possiamo semplicemente sostituire il nostro database e prendere il resto del mese. Certo, CouchDB (e BigCouch) supporta un eccellente ridimensionamento orizzontale (e anche la replica cross-datacenter!) Ma il costo riscriverà un'applicazione di produzione. Non è giusto.

Quindi, dove può esserti utile CouchDB?

Suggerisco di iniziare incrementando l'applicazione con applicazioni CouchDB. Distribuisci CouchDB, importa i tuoi dati e crea non mission-critical applicazioni. Guarda dove si adatta meglio.

per il progetto, questi sono i principali punti di forza CouchDB:

  1. Si tratta di un piccolo, semplice strumento — facile per voi per impostare su una workstation o server di
  2. Si tratta di un server web. Si integra perfettamente con con l'infrastruttura e le politiche di sicurezza.
    • Ad esempio, se si dispone di una politica flessibile, basta installarla sul vostro LAN
    • Se si dispone di una rete di rigorosa e la politica del firewall, è possibile impostare dietro una VPN, o con i vostri certificati SSL
  3. Con quel passo fatto, è molto facile accedere ora. Basta fare richieste http o http. Sia che importi dati da Oracle con uno strumento personalizzato, sia che usi il tuo browser , è tutto uguale.
  4. Sì! CouchDB è anche un app server! Ha un'app di amministrazione integrata, per esplorare i dati, modificare la configurazione, ecc. (Come un phpmyadmin integrato). Ma per te, il valore creerà applicazioni e report di amministrazione come semplici, tradizionali applicazioni HTML/Javascript/CSS. Puoi avere la fantasia o la semplicità che desideri.
  5. Come il progetto cresce e diventa prezioso, ci si trova in una posizione ideale per crescere, utilizzando la replica
    • O ampliare il nucleo con i cluster CouchDB grandi
    • Oppure, replicare i dati e le applicazioni in diversi centri dati, o sulle singole postazioni di lavoro, o telefoni cellulari, ecc (la strategia sarà più evidente quando sarà il momento.)

CouchDB ti dà un sito web server e web semplice. Ti fornisce l'API di servizi web integrata nei dati . Semplifica la creazione di app Web. Pertanto, CouchDB sembra ideale per estendendo l'applicazione principale, non sostituendo it.

+2

Grazie Un sacco! Era più informativo e prezioso di quanto desideravo! –

+0

Una nota a margine: stiamo ancora cercando di sostituire Oracle (la ragione principale è che è un costo elevato) con una tecnologia open source (PostgreSQL o MySQL forse (?)). –

+2

Ho sentito Jan Lehnardt (cofondatore di Couchbase, committer originale di Apache CouchDB) chiamare PostgreSQL, "l'altro * buon database" :) – JasonSmith

0

non sono d'accordo con questa risposta ..

Penso CouchDB si adatta particolarmente bene flotta caso d'uso di monitoraggio, a causa della loro natura distribuita. Inoltre, la natura inaffidabile delle connessioni gprs utilizzate per trasmettere i dati di posizione, rende il paradygm non in linea di couchapps il partner perfetto per la vostra applicazione.

Per il caricamento dei dati dal camion, la velocità di inserimento può trarre un enorme vantaggio dalla replica di couchdb e dagli inserimenti di massa, soprattutto se eseguita su basebasata su ssd.

Per il download di dati su camion, couchdb fornisce la replica filtrata, consentendo a ciascun carrello di scaricare solo i dati di cui ha realmente bisogno, anziché l'intero database.

Per quanto riguarda le query complesse, il database NoSQL è più flessibile e può eseguire molto più rapidamente dei database di relazione. È solo questione di strutturare e interrogare i dati in modo ragionevole.