il key-value store si presenta logicamente come una pseudotabella di soli due campi (chiave, valore) dove la chiave indicizza il valore permettendone il ritrovamento all'interno della tabella. un altro modello logico di comprensione del key-value store è quello dell'array associativo - un vettore di valori indicizzati per chiave (di solito una stringa) - reso persistente su disco.
va tutto bene, anzi una meraviglia - solo che prima o poi mi accorgo che devo mettere in una qualche relazione dati immagazzinati in due pseudotabelle diverse. oops, ma per queste cose con il DBMS avrei fatto una bella JOIN mentre, sorpresa, i key-value store non implementano l'algebra relazionale.
ah ok è un classico caso del principio detto di faenza - si fa senza; andiamo solo a vedere come fanno i DBMS ad implementare le join, poi le riproporremo funzionalmente nel nostro codice applicativo.
per fortuna qualcuno su wikipedia si è preso il disturbo di tramandare ai posteri tutta questa scienza: ecco infatti come funzionano, in linea di principio, le nested loop join, le hash join, le sort-merge join: buona lettura.
ora, qualcuno potrebbe pensare, e non avrebbe tutti i torti, che stiamo facendo un gigantesco passo all'indietro se dopo quarant'anni circa di database relazionale ci tocca reimplementare le join a manina: è un'opinione legittima.