Quando si dispone di dati estremamente grandi, è consigliabile evitare i join. Ciò è dovuto al fatto che il sovraccarico di una ricerca di chiavi individuali è relativamente ampio (il servizio deve determinare quali nodi interrogare e interrogarli in parallelo e attendere le risposte). Per overhead, intendo latenza, non limitazione del throughput.
Questo rende i join estremamente efficaci, in quanto è necessario eseguire molte ricerche di chiavi esterne, che finirebbero per raggiungere molti, molti nodi diversi (in molti casi). Quindi vorresti evitare questo come schema.
Se non succede molto spesso, è probabile che tu prenda il colpo, ma se vuoi farne molti, potrebbe valere la pena "denormalizzare" i dati.
Il tipo di elementi memorizzati negli archivi NoSQL è in genere piuttosto "anormale". Non è raro duplicare gli stessi dati in tutti i tipi di luoghi diversi per semplificare le ricerche.
Inoltre la maggior parte di nosql non supporta (davvero) indici secondari, il che significa che è necessario duplicare elementi se si desidera eseguire una query in base a qualsiasi altro criterio.
Se si memorizzano dati come dipendenti e reparti, si sta davvero meglio con un database convenzionale.
Si desidera un'operazione * SQL * JOIN o UNION in un prodotto denominato * NoSQL *? – gbn
Semplice, usate playOrm e unite le partizioni (le partizioni di solito sono meno di 1 milione di righe ma la tabella può essere infinita) e funziona bene. –