Credo che, dopo aver accuratamente circa su un paio di pagine su questo argomento, tutto dipende il tipo di dati che si sta trattando.
RDBMS rappresentano un approccio top-down, dove, lo sviluppatore del database, affermi la struttura di tutti i dati che esisteranno nel database. Si definisce che una persona ha un primo, ultimo, secondo nome e un indirizzo di casa, ecc. È possibile far rispettare questo utilizzando un RDBMS. Se non hai una colonna per l'HomePlanet di Person, vuoi essere la persona che ha un diverso HomePlanet rispetto alla Terra; dovrai aggiungere una colonna in una data successiva o i dati non possono essere memorizzati nell'RDBMS. La maggior parte dei programmatori fa comunque ipotesi come questa nelle loro app, quindi questa non è una cosa stupida da assumere e far rispettare. Definire le cose può essere buono. Ma se è necessario registrare ulteriori attributi in futuro, sarà necessario aggiungerli. Il modello di relazione presuppone che gli attributi dei dati non cambieranno molto.
banche dati di tipo "cloud" usando qualcosa come MapReduce, nel tuo caso CouchDB, non fanno l'ipotesi di cui sopra, e invece guardano i dati dal basso verso l'alto. I dati sono inseriti nei documenti, che potrebbero avere un numero qualsiasi di attributi variabili. Presume che i tuoi dati, per la sua stessa definizione, siano diversi nei tipi di attributi che potrebbe avere. Si dice, "so solo che ho questo documento Persona database che dispone di un attributo homeplanet di 'Eternium' e un FirstName di 'Signore Nibbler' ma no Cognome." Questo modello si adatta le pagine web: tutte le pagine web sono un documento, ma il contenuto/tags/chiavi effettivi del documento variano ampiamente soo che non è possibile inserirsi nella struttura rigida che il DBMS pontifica upon alta. Questo è il motivo per cui Google pensa che i modelli di MapReduce siano più sassosi, perché il set di dati di Google è così vario da dover creare ambiguità fin dall'inizio e, grazie ai massivi set di dati, è possibile utilizzare l'elaborazione parallela (che MapReduce rende banale) . Il modello del database del documento presuppone che gli attributi dei tuoi dati possano cambiare molto o essere molto diversi con "lacune" e molte colonne scarsamente popolate che si potrebbero trovare se i dati sono stati archiviati in un database relazionale. Mentre è possibile utilizzare un RDBMS per archiviare dati come questo, diventerebbe brutto molto velocemente.
Per rispondere alla tua domanda, allora: non si può pensare "relazionale" a tutti quando guardando un database che utilizza il paradigma MapReduce. Perché, in realtà, non ha una relazione forzata. È una gobba concettuale che dovrai solo superare.
Un buon articolo mi sono imbattuto in che confronta e contrappone i due database abbastanza bene è MapReduce: A Major Step Back, che sostiene che i database paradigma MapReduce sono un passo tecnologico all'indietro, e sono inferiori a RDBMS. Non sono d'accordo con la tesi dell'autore e vorrei dire che il progettista del database dovrebbe semplicemente selezionare quello giusto per la sua situazione.
È improbabile che tu abbia mai imparato la conoscenza del DB relazionale. È uno di quegli argomenti che ha un sacco di disinformazione su ciò che viene passato come legittimo. Hai mai letto un libro di Chris Date? se lo avessi, probabilmente non staresti cercando di usare CouchDB. Lo sapresti meglio – Breton
Detto questo, immagina di avere una singola tabella chiamata "documenti" con tutte le colonne generate automaticamente di cui hai bisogno, e penso che tu abbia una buona approssimazione di cosa si tratta: un DB specifico del dominio (blog Think) – Breton
@Brenton - Ehi, ehi! Ottieni i tuoi dati corretti. Questo è C J Date to you. :) –