Sono nuovo di NoSQL e ho sempre sentito parlare di DB " valore-chiave " come Cassandra o Riak e mi aspettavo che le loro tabelle avessero letteralmente due colonne: una chiave e un valore-col. Ho appena iniziato a lavorare in un nuovo negozio in cui gli ingegneri senior hanno scelto Cassandra come datastore principale e impostato personalmente il proprio cluster Cassandra. Basandomi sul design e sull'uso dei tavoli, tuttavia, sto iniziando a sospettare che non stiamo usando Cassandra come "la strada giusta"; cioè, il modo in cui il suo voluto deve essere usato (come un DB KV).
Le tabelle sono tutte relazionali totalmente , proprio come un DB MySQL o Postgres, con colonne UUID non chiave in alcune tabelle che agiscono come chiavi primarie per i record in altri tabelle. E le tabelle sono larghe , a volte con più di 10 colonne e più colonne che costituiscono la chiave della tabella.
Tuttavia in Cassandra non puoi fare join così il software sta saltando attraverso tutti questi ridicoli ostacoli per trattare il datastore KV non relazionale come se fosse relazionale, dove il codice interroga i dati per una tabella e recupera un UUID ("chiave" ) per i record a cui desidera accedere in un'altra tabella, quindi interroga la seconda tabella per i record con un UUID / chiave corrispondente. Per me questo sembra pazzesco. I pensa ottengo la frase chiave "Il codice è re", ma sembra essere molto stonato e inefficiente a colpire il database più volte ea ricucire i dati insieme nel livello dell'app ... Mi sento così significa che i nostri dati sono in realtà relazionali e che dovremmo utilizzare alcuni RDBMS.
Quindi tutto questo per chiedere: È veramente questo il modo in cui Cassandra era previsto per essere usato, o se le tabelle sono veramente coppie di KV a 2 colonne, o è l'uso corretto di Cassandra qualcos'altro interamente?