Gli alberi di merle (ovvero gli alberi di hash) vengono utilizzati per la sincronizzazione dei dati sia in "Cassandra" & "Dynamo".Sincronizzazione dei dati di Merkle Tree Falsi positivi
Come con qualsiasi funzione hash, v'è una probabilità che dati diversi possono avere lo stesso valore di hash:
Esiste un x ed y dove [! Y = x] ma [hash (x) = hash (y)]
Man mano che i "big data" in NOSQL aumentano, la probabilità di incontrare tali dati aumenta.
Ciò significa che quando i set di dati diventano più grandi, è quasi certo che nodi diversi nell'albero Merkle genereranno lo stesso hash genitore.
In tale occasione, quando due macchine diverse nel cluster attraversano i loro alberi di merle, otterranno un falso positivo che i loro dati siano coerenti. Se non si scrivono più dati su quel ramo dell'albero, le macchine rimarranno non sincronizzate per sempre.
Come viene gestito?
C'è un altro meccanismo di sincronizzazione che alla fine potrebbe dare il calcio qui? Oppure questi database si basano semplicemente sulle funzioni hash distribuite uniformemente? Vi ricordo che nel caso di Cassandra la maggior parte degli utenti utilizza una funzione di hash predefinita, che probabilmente non ha una distribuzione ottimale. – eshalev
No, la maggior parte dei sistemi si basa su funzioni di hash distribuite uniformemente (si basano su [SUHA] (http://en.wikipedia.org/wiki/SUHA_ (computer_science)) e dubito fortemente che la funzione di hash predefinita di Cassandra non usa il SUHA – kokx
Come potrebbe cassandra assumere la stessa distribuzione su dati che non sono loro? L'utente può sempre scrivere dati che non giocano bene con la funzione hash – eshalev