7

Ho più server CouchDB che desidero mantenere sincronizzati tra loro e utilizzo questi server per condividere file di grandi dimensioni (ad esempio> 100 MB). Per mantenerli sincronizzati, ogni istanza CouchDB esegue una replica di pull continuo da ogni altra istanza.Replicazione parallela/ridondante nel CouchDB

Ecco un esempio: io ho tre server CouchDB A, B, & C, che hanno tutti repliche estraibili continui gli uni dagli altri, come così:

------- <------------- ------- 
| A | -------------> | B | 
-------    ------- 
^|     |^
    | |     | | 
    | V     | | 
------- <---------------- | 
| C | ------------------- 
------- 

Qualcuno carica un documento al server A con un Allegato 500 MB. B e C sia iniziare replicare il documento da A e B termina la replica prima di C fa:

------- doc   ------- 
| A |--------------->| B | 
-------    ------- 
    | 
    | doc 
    V 
------- 
| C | 
------- 

La mia domanda è, sarà C quindi avviare replicare lo stesso documento da B (dal C ha anche una continua estrarre la replica da B), mentre sta ancora trasferendo il documento da A?

-------    ------- 
| A |    | B | 
-------    ------- 
    |   doc   | 
doc| |------------------ 
    | | 
    V V 
    ------- 
    | C | 
    -------       

direi che sarebbe successo, dal momento che per quanto ne so, la replica CouchDB in realtà non memorizzare i documenti replicati al target (utilizzando i _bulk_docs API) fino a quando i documenti (compresi gli allegati) sono stati completamente prelevato dalla fonte [1]. Sono preoccupato che questo accada poiché sarebbe ridondante e un grande spreco di larghezza di banda.

[1] https://github.com/couchbaselabs/TouchDB-iOS/wiki/Replication-Algorithm

+0

Hai già guardato BigCouch per la replica? Non dovrei farlo manualmente. – ryan1234

+0

Ho guardato BigCouch, tuttavia sto creando reti mobili ad-hoc con dispositivi che vanno e vengono. AFAIK, per BigCouch, devi impostare tutto staticamente per il clustering e la replica. Ma grazie per il suggerimento! –

+0

Sto lavorando a un progetto con BigCouch e dispositivi mobili in grado di connettersi a un cluster e funziona benissimo. L'idea è di mettere Couchbase Mobile (o TouchDB) sul dispositivo mobile e di avere un cluster di macchine BigCouch dietro un sistema di bilanciamento del carico. I dispositivi si connettono e fanno riferimento a un database e i dati vengono replicati verso il basso. Ma forse il tuo caso d'uso è un po 'diverso. – ryan1234

risposta