Cassandra Modello di dati con esempio di database semplice
Sebbene il Cassandra il linguaggio di query assomiglia a SQL linguaggio, i loro metodi di modellazione dei dati sono totalmente diversi.
In Cassandra, un modello dati errato puรฒ ridurre le prestazioni, soprattutto quando gli utenti tentano di implementare i concetti RDBMS su Cassandra. ร meglio tenere a mente alcune regole dettagliate di seguito.
Cassandra Regole del modello di dati
In Cassandra, le scritture non sono costose. Cassandra non supporta join, raggruppamenti per, clausole OR, aggregazioni, ecc. Quindi devi archiviare i tuoi dati in modo tale che siano completamente recuperabili. Pertanto รจ necessario tenere presenti queste regole durante la modellazione dei dati Cassandra.
Massimizza il numero di scritture
In Cassandra, le scritture sono molto economiche. Cassandra รจ ottimizzato per prestazioni di scrittura elevate. Quindi prova a massimizzare le tue scritture per migliorare le prestazioni di lettura e la disponibilitร dei dati. Esiste un compromesso tra scrittura e lettura dei dati. Pertanto, ottimizza le prestazioni di lettura dei dati massimizzando il numero di scritture di dati.
Massimizza la duplicazione dei dati
La denormalizzazione e la duplicazione dei dati sono di fatto Cassandra. Lo spazio su disco non รจ piรน costoso della memoria, dell'elaborazione della CPU e del funzionamento degli I/O. COME Cassandra รจ un database distribuito, quindi la duplicazione dei dati fornisce disponibilitร immediata dei dati e nessun singolo punto di errore.
Cassandra Obiettivi della modellazione dei dati
Dovresti avere i seguenti obiettivi durante la modellazione dei dati in Cassandra:
Diffondere i dati in modo uniforme intorno al Cluster
Desideri una quantitร uguale di dati su ciascun nodo di Cassandra Cluster. I dati vengono distribuiti su diversi nodi in base alle chiavi di partizione che rappresentano la prima parte della chiave primaria. Quindi, prova a scegliere i numeri interi come chiave primaria per distribuire i dati in modo uniforme nel cluster.
Ridurre al minimo il numero di partizioni lette durante l'esecuzione di query sui dati
La partizione รจ un gruppo di record con la stessa chiave di partizione. Quando viene emessa la query di lettura, raccoglie dati da diversi nodi da diverse partizioni.
Se saranno presenti molte partizioni, sarร necessario visitarle tutte per raccogliere i dati della query.
Ciรฒ non significa che non si debbano creare partizioni. Se i tuoi dati sono molto grandi, non puoi conservare un'enorme quantitร di dati su un'unica partizione. La singola partizione verrร rallentata.
Quindi prova a scegliere un numero equilibrato di partizioni.
Buona chiave primaria Cassandra
Facciamo un esempio e scopriamo quale chiave primaria รจ buona.
Ecco la tabella MusicPlaylist.
Create table MusicPlaylist
(
SongId int,
SongName text,
Year int,
Singer text,
Primary key(SongId, SongName)
);
Nell'esempio sopra, tabella MusicPlaylist,
- Songid รจ la chiave di partizione e
- SongName รจ la colonna di clustering
- I dati verranno raggruppati in base a SongName. Verrร creata solo una partizione con SongId. Non ci sarร nessun'altra partizione nella tabella MusicPlaylist.
Il recupero dei dati sarร lento da parte di questo modello dati a causa della chiave primaria errata.
Ecco un'altra tabella MusicPlaylist.
Create table MusicPlaylist
(
SongId int,
SongName text,
Year int,
Singer text,
Primary key((SongId, Year), SongName)
);
Nell'esempio sopra, tabella MusicPlaylist,
- Songid e Year sono la chiave di partizione e
- SongName รจ la colonna di clustering.
- I dati verranno raggruppati in base a SongName. In questa tabella, ogni anno, verrร creata una nuova partizione. Tutte le canzoni dell'anno saranno sullo stesso nodo. Questa chiave primaria sarร molto utile per i dati.
Il nostro recupero dei dati sarร rapido grazie a questo modello di dati.
Modella i tuoi dati in Cassandra
Quando si modellano le query, รจ opportuno tenere a mente i seguenti aspetti:
Determina quali query vuoi supportare
Prima di tutto, determina quali query desideri.
Ad esempio, hai bisogno?
- Entra a far parte
- Raggruppa per
- Filtraggio su quale colonna, ecc.
Crea una tabella in base alle tue domande
Crea una tabella in base alle tue domande. Crea una tabella che soddisfi le tue domande. Prova a creare una tabella in modo tale da dover leggere un numero minimo di partizioni.
Gestire la relazione uno a uno in Cassandra
La relazione uno a uno significa che due tabelle hanno una corrispondenza uno a uno. Ad esempio, lo studente puรฒ iscriversi a un solo corso e io voglio cercare su uno studente a quale corso รจ iscritto un determinato studente.
In questo caso, lo schema della tabella dovrebbe comprendere tutti i dettagli dello studente corrispondenti a quel particolare corso, come il nome del corso, il numero di matricola dello studente, il nome dello studente, ecc.

Create table Student_Course
(
Student rollno int primary key,
Student_name text,
Course_name text,
);
Gestire la relazione uno a molti in Cassandra
Relazioni uno a molti significa avere corrispondenza uno a molti tra due tabelle.
Ad esempio, un corso puรฒ essere seguito da molti studenti. Voglio cercare tutti gli studenti che stanno studiando un corso particolare.
Quindi, interrogando il nome del corso, avrรฒ molti nomi di studenti che studieranno un corso particolare.

Create table Student_Course
(
Student_rollno int,
Student_name text,
Course_name text,
);
Posso recuperare tutti gli studenti di un corso specifico tramite la seguente query.
Select * from Student_Course where Course_name='Course Name';
Gestire la relazione molti a molti in Cassandra
Relazioni molti a molti significa avere una corrispondenza molti a molti tra due tabelle.
Ad esempio, un corso puรฒ essere studiato da molti studenti e uno studente puรฒ anche studiare molti corsi.

Voglio cercare tutti gli studenti che stanno studiando un corso particolare. Inoltre, voglio cercare tutto il corso che sta studiando un determinato studente.
Quindi in questo caso avrรฒ due tabelle, ovvero dividerรฒ il problema in due casi.
Per prima cosa creerรฒ una tabella in cui potrai trovare i corsi di un particolare studente.
Create table Student_Course
(
Student_rollno int primary key,
Student_name text,
Course_name text,
);
Posso trovare tutti i corsi tenuti da uno studente specifico tramite la seguente query.
Select * from Student_Course where student_rollno=rollno;
In secondo luogo, creerรฒ una tabella in base alla quale potrai scoprire quanti studenti stanno studiando un particolare corso.
Create table Course_Student
(
Course_name text primary key,
Student_name text,
student_rollno int
);
Posso trovare uno studente in un corso specifico tramite la seguente query.
Select * from Course_Student where Course_name=CourseName;
Differenza tra RDBMS e Cassandra Modellazione dei dati
| RDBMS | Cassandra |
|---|---|
| Memorizza i dati in forma normalizzata | Memorizza i dati in forma denormalizzata |
| DBm legacy; dati strutturati | Negozio ad ampia fila, dinamico; dati strutturati e non strutturati |
Sintesi
- Modellazione dei dati in Cassandra รจ diverso dagli altri Banche dati RDBMS.
- Cassandra la modellazione dei dati ha alcune regole. Queste regole devono essere seguite per una buona modellazione dei dati. Oltre a queste regole, abbiamo visto tre diversi casi di modellazione dei dati e come gestirli.
- La relazione uno a uno significa che due tabelle hanno una corrispondenza uno a uno.
- Relazioni uno a molti significa avere corrispondenza uno a molti tra due tabelle.
- Relazioni molti a molti significa avere una corrispondenza molti a molti tra due tabelle.
