Kasandras datu modelis ar vienkāršu piemēru

Satura rādītājs:

Anonim

Kaut arī Cassandra vaicājumu valoda atgādina SQL valodu, to datu modelēšanas metodes ir pilnīgi atšķirīgas.

Kasandrā slikts datu modelis var pasliktināt veiktspēju, it īpaši, ja lietotāji mēģina ieviest RDBMS koncepcijas Kasandrā. Vislabāk ir paturēt prātā dažus noteikumus, kas sīki aprakstīti zemāk.

Šajā apmācībā jūs uzzināsiet

  • Kasandras datu modeļa noteikumi
  • Modelējiet savus datus Kasandrā
  • Darbs ar vienu pret vienu
  • Darbs ar vienu pret daudzām attiecībām
  • Darbs ar daudzām un daudzām attiecībām

Kasandras datu modeļa noteikumi

Kasandrā raksti nav dārgi. Kasandra neatbalsta pievienošanos, grupēšanu pēc VAI klauzulas, apkopošanu utt. Tāpēc dati ir jāuzglabā tā, lai tie būtu pilnībā izgūstami. Tātad, modelējot datus Kasandrā, šie noteikumi ir jāpatur prātā.

  1. Palieliniet rakstu skaitu

    Kasandrā raksti ir ļoti lēti. Kasandra ir optimizēta augstai rakstīšanas veiktspējai. Tāpēc mēģiniet maksimāli palielināt savu rakstīšanu, lai nodrošinātu labāku lasīšanas veiktspēju un datu pieejamību. Pastāv kompromiss starp datu rakstīšanu un datu nolasīšanu. Tātad, optimizējiet datu nolasīšanas veiktspēju, maksimāli palielinot datu rakstīšanas skaitu.

  2. Maksimizēt datu dublēšanos

    Datu denormalizācija un datu dublēšanās ir Kasandras defacto. Vieta diskā nav dārgāka par atmiņu, procesora apstrādi un IO darbību. Tā kā Cassandra ir izplatīta datu bāze, datu dublēšanās nodrošina tūlītēju datu pieejamību un nav viena kļūmes punkta.

Datu modelēšanas mērķi

Modelējot datus Kasandrā, jums vajadzētu būt šādiem mērķiem.

  1. Vienmērīgi izklājiet datus ap kopu

    Jūs vēlaties vienādu datu apjomu par katru Kasandras klastera mezglu. Dati tiek izplatīti dažādos mezglos, pamatojoties uz nodalījuma atslēgām, kas ir primārās atslēgas pirmā daļa. Tātad, mēģiniet izvēlēties veselus skaitļus kā galveno atslēgu, lai vienmērīgi izplatītu datus ap kopu.

  2. Samaziniet lasīto nodalījumu skaitu, vienlaikus vaicājot par datiem

    Partition ir ierakstu grupa ar vienu un to pašu nodalījuma atslēgu. Kad tiek izsniegts lasītais vaicājums, tas apkopo datus no dažādiem mezgliem no dažādiem nodalījumiem.

    Ja būs daudz nodalījumu, vaicājuma datu apkopošanai ir jāapmeklē visi šie nodalījumi.

    Tas nenozīmē, ka nevajadzētu izveidot nodalījumus. Ja jūsu dati ir ļoti lieli, jūs nevarat saglabāt šo milzīgo datu daudzumu vienā nodalījumā. Vienu nodalījumu palēninās.

    Tāpēc mēģiniet izvēlēties sabalansētu nodalījumu skaitu.

Laba primārā atslēga

Ņemsim piemēru un atradīsim, kura primārā atslēga ir laba.

Šeit ir tabula MusicPlaylist.

Create table MusicPlaylist(SongId int,SongName text,Year int,Singer text,Primary key(SongId, SongName));

Iepriekš minētajā piemērā tabula MusicPlaylist,

  • Songid ir nodalījuma atslēga un
  • Dziesmas nosaukums ir kopu kolonna
  • Dati tiks grupēti, pamatojoties uz SongName. Ar SongId tiks izveidots tikai viens nodalījums. Tabulā MusicPlaylist nebūs neviena cita nodalījuma.

Datu izguve šajā datu modelī būs lēna, jo ir slikta primārā atslēga.

Šeit ir vēl viena tabula MusicPlaylist.

Create table MusicPlaylist(SongId int,SongName text,Year int,Singer text,Primary key((SongId, Year), SongName));

Iepriekš minētajā piemērā tabula MusicPlaylist,

  • Songid un Year ir nodalījuma atslēga, un
  • Dziesmas nosaukums ir kopu kolonna.
  • Dati tiks grupēti, pamatojoties uz SongName. Šajā tabulā katru gadu tiks izveidots jauns nodalījums. Visas gada dziesmas būs vienā mezglā. Šī primārā atslēga būs ļoti noderīga datiem.

Izmantojot šo datu modeli, mūsu datu meklēšana būs ātra.

Modelējiet savus datus Kasandrā

Modelējot savus jautājumus, jāpatur prātā šādas lietas.

  1. Nosakiet, kādus vaicājumus vēlaties atbalstīt
  2. Vispirms nosakiet, kādus vaicājumus vēlaties.

    Piemēram, vai jums vajag?

    • Pievienojas
    • Grupēt pēc
    • Filtrēšana uz kuras kolonnas utt.
  3. Izveidojiet tabulu atbilstoši saviem jautājumiem

    Izveidojiet tabulu atbilstoši saviem jautājumiem. Izveidojiet tabulu, kas apmierinās jūsu jautājumus. Mēģiniet izveidot tabulu tā, lai būtu jāizlasa minimālais nodalījumu skaits.

Darbs ar vienu pret vienu

Viena pret vienu nozīmē, ka divām tabulām ir viena pret vienu sarakste. Piemēram, students var reģistrēt tikai vienu kursu, un es vēlos meklēt studentam, kurā kursā konkrētais students ir reģistrēts.

Tātad šajā gadījumā jūsu tabulas shēmai jāietver visa informācija par studentu, kas atbilst konkrētajam kursam, piemēram, kursa nosaukums, studenta saraksta numurs, studenta vārds utt.

Create table Student_Course(Student rollno int primary key,Student_name text,Course_name text,);

Darbs ar vienu pret daudzām attiecībām

Attiecības “viens pret daudziem” nozīmē, ka starp divām tabulām ir sarakste no viena līdz daudziem.

Piemēram, kursu var apgūt daudzi studenti. Es gribu pārmeklēt visus studentus, kuri apgūst konkrētu kursu.

Tāpēc, vaicājot par kursa nosaukumu, man būs daudz studentu vārdu, kuri studēs konkrētu kursu.

Create table Student_Course(Student_rollno int,Student_name text,Course_name text,);

Es varu iegūt visus studentus konkrētam kursam, izmantojot šādu vaicājumu.

Select * from Student_Course where Course_name='Course Name';

Darbs ar daudzām un daudzām attiecībām

Daudzas attiecības nozīmē, ka starp divām tabulām ir sarakste no daudz līdz daudziem.

Piemēram, kursu var apgūt daudzi studenti, un students var apgūt arī daudzus kursus.

Es gribu pārmeklēt visus studentus, kuri apgūst konkrētu kursu. Es arī vēlos meklēt visus kursus, kurus mācās konkrēts students.

Tāpēc šajā gadījumā man būs divas tabulas, ti, problēmu sadalīšu divos gadījumos.

Pirmkārt, es izveidošu tabulu, pēc kuras jūs varat atrast konkrēta studenta kursus.

Create table Student_Course(Student_rollno int primary key,Student_name text,Course_name text,);

Visus konkrētā studenta kursus varu atrast pēc šāda vaicājuma. ->

Select * from Student_Course where student_rollno=rollno;

Otrkārt, es izveidošu tabulu, pēc kuras jūs varat uzzināt, cik daudz studentu mācās konkrēto kursu.

Create table Course_Student(Course_name text primary key,Student_name text,student_rollno int);

Es varu atrast studentu noteiktā kursā pēc šāda vaicājuma.

Select * from Course_Student where Course_name=CourseName;

Atšķirība starp RDBMS un Kasandras datu modelēšanu

RDBMS

Kasandra

Saglabā datus normalizētā formā

Glabā datus denormalizētā formā

Mantotie dbms; strukturēti dati

Plašs rindu veikals, Dynamic; strukturēti un nestrukturēti dati

Kopsavilkums

Datu modelēšana Kasandrā atšķiras no citām RDBMS datu bāzēm. Kasandras datu modelēšanā ir daži noteikumi. Šie noteikumi jāievēro labai datu modelēšanai. Bez šiem noteikumiem mēs redzējām trīs dažādus datu modelēšanas gadījumus un to, kā ar tiem rīkoties.