Operazione di Join con NOSQL

Mi sono passati attraverso alcuni articoli in materia di Bigtable e NOSQL. È molto interessante che evitano le operazioni di JOIN.

Per fare un esempio, prendiamo Impiegato e Dipartimento di tabella e di assumere i dati vengono distribuiti su più tabelle /server.

Voglio solo sapere, se i dati sono distribuiti su più server, come facciamo ADERIRE o UNIONE di operazioni?

  • Volete un JOIN SQL o operazione di UNIONE in un prodotto chiamato NoSQL?
  • Semplice, si utilizza playOrm e unire partizioni(le partizioni sono di solito meno di 1 milione di righe, ma la tabella non può essere infinita) e rende bene.
InformationsquelleAutor Sri | 2010-01-03

 

3 Replies
  1. 38

    Quando si dispone di dati estremamente grandi, probabilmente si vuole evitare di join. Questo è perché il sovraccarico di un singolo tasto di ricerca è relativamente grande (il servizio ha bisogno di capire che il nodo(s) per la query, query e loro in parallelo e in attesa delle risposte). Il cielo, voglio dire la latenza, non la velocità effettiva limitazione.

    Questo ti unisce a succhiare davvero male, come si avrebbe bisogno di fare un sacco di chiave esterna ricerche, che finirebbe per andare a molti,molti nodi diversi (in molti casi). Così si vuole evitare questo come un modello.

    Se non capita molto spesso, si potrebbe probabilmente prendere il colpo, ma se si sta andando a voler fare un sacco di loro, potrebbe essere la pena di “denormalising” i dati.

    Il genere di roba che viene memorizzato nel NoSQL negozi è di solito abbastanza “anomala”, in primo luogo. Non è raro per duplicare gli stessi dati in tutte le tipologie di luoghi per rendere le ricerche più facile.

    Inoltre la maggior parte nosql non (davvero) di supporto gli indici secondari, il che significa che è necessario duplicare roba se si desidera eseguire la query da qualsiasi altro criterio.

    Se stai memorizzazione dati, come i dipendenti e i dipartimenti, stai davvero meglio con un normale database.

  2. 5

    Si dovrebbe fare più seleziona e unire manualmente i dati nell’applicazione. Vedere questo post per ulteriori informazioni. Da quel post:

    Bigtable set di dati può essere interrogato da servizi come AppEngine, utilizzando un linguaggio chiamato GQL (“gee-kwal”), che è basato su un sottoinsieme di SQL. Vistosamente manca da GQL è alcun tipo di comando JOIN. A causa della natura distribuita di Bigtable database, eseguire un join tra due tabelle sarebbe terribilmente inefficiente. Invece, il programmatore deve implementare tale logica, nella sua applicazione, o di design, la sua applicazione in modo da non averne bisogno.

  3. 3

    Kaleb è di destra. La scrittura di codice personalizzato con un NoSQL soluzione se i dati non si adatta bene in una chiave-valore. -Ridurre la mappa/async elaborazione e visualizzazione personalizzata delle cache del comune. Brian Aker ha dato un molto divertente (e satirico e di parte) di presentazione presso il Nov 2009 OpenSQLCamp http://www.youtube.com/watch?v=LhnGarRsKnA. Saltare in 40 secondi per sentire parlare di join.

Lascia un commento