Model Data Cassandra dengan Contoh Ringkas

Isi kandungan:

Anonim

Walaupun bahasa pertanyaan Cassandra menyerupai bahasa SQL, kaedah pemodelan data mereka sama sekali berbeza.

Di Cassandra, model data yang buruk dapat menurunkan prestasi, terutama ketika pengguna berusaha menerapkan konsep RDBMS di Cassandra. Sebaiknya ingat beberapa peraturan yang diperincikan di bawah.

Dalam tutorial ini, anda akan belajar-

  • Peraturan Model Data Cassandra
  • Modelkan Data Anda di Cassandra
  • Mengendalikan Hubungan Satu ke Satu
  • Mengendalikan hubungan antara satu dengan banyak
  • Menangani Hubungan Banyak hingga Banyak

Peraturan Model Data Cassandra

Di Cassandra, penulisan tidak mahal. Cassandra tidak menyokong gabungan, kumpulan mengikut, klausa ATAU, penggabungan, dan lain-lain. Oleh itu, anda harus menyimpan data anda sedemikian rupa sehingga dapat diambil sepenuhnya. Oleh itu, peraturan ini mesti diingat semasa memodelkan data di Cassandra.

  1. Memaksimumkan bilangan penulisan

    Di Cassandra, tulisan sangat murah. Cassandra dioptimumkan untuk prestasi menulis yang tinggi. Oleh itu, cubalah memaksimumkan penulisan anda untuk prestasi membaca dan ketersediaan data yang lebih baik. Terdapat pertukaran antara penulisan data dan pembacaan data. Oleh itu, optimumkan prestasi membaca data anda dengan memaksimumkan jumlah penulisan data.

  2. Memaksimumkan Penduaan

    Denormalisasi data dan penduaan data adalah defacto Cassandra. Ruang cakera tidak lebih mahal daripada memori, pemprosesan CPU dan operasi IO. Oleh kerana Cassandra adalah pangkalan data yang diedarkan, maka penduaan data menyediakan ketersediaan data segera dan tidak ada titik kegagalan.

Matlamat Pemodelan Data

Anda harus mempunyai tujuan berikut semasa memodelkan data di Cassandra.

  1. Sebarkan Data Secara Merata Di Sekitar Kluster

    Anda mahukan jumlah data yang sama pada setiap nod kluster Cassandra. Data disebarkan ke node yang berbeza berdasarkan kunci partisi yang merupakan bahagian pertama kunci utama. Oleh itu, cubalah memilih bilangan bulat sebagai kunci utama untuk menyebarkan data secara merata di seluruh kelompok.

  2. Minimumkan bilangan partisi yang dibaca semasa membuat pertanyaan data

    Partition adalah sekumpulan rekod dengan kunci partition yang sama. Apabila pertanyaan baca dikeluarkan, ia mengumpulkan data dari nod yang berlainan dari partisi yang berlainan.

    Sekiranya terdapat banyak partisi, maka semua partisi ini perlu dikunjungi untuk mengumpulkan data pertanyaan.

    Ini tidak bermaksud bahawa partition tidak boleh dibuat. Sekiranya data anda sangat besar, anda tidak dapat menyimpan sejumlah besar data pada satu partisi. Partition tunggal akan diperlahankan.

    Oleh itu, cuba pilih sebilangan partisi yang seimbang.

Kunci Utama yang Baik

Mari ambil contoh dan cari kunci utama mana yang baik.

Berikut adalah senarai MusicPlaylist.

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

Dalam contoh di atas, jadual MusicPlaylist,

  • Songid adalah kunci partition, dan
  • SongName adalah lajur pengelompokan
  • Data akan dikumpulkan berdasarkan SongName. Hanya satu partisi yang akan dibuat dengan SongId. Tidak akan ada partisi lain dalam jadual MusicPlaylist.

Pengambilan data akan menjadi perlahan oleh model data ini kerana kunci utama yang buruk.

Berikut adalah senarai lain MusicPlaylist.

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

Dalam contoh di atas, jadual MusicPlaylist,

  • Songid dan Tahun adalah kunci partition, dan
  • SongName adalah lajur pengelompokan.
  • Data akan dikumpulkan berdasarkan SongName. Dalam jadual ini, setiap tahun, partisi baru akan dibuat. Semua lagu tahun ini akan berada di simpul yang sama. Kunci utama ini akan sangat berguna untuk data.

Pengambilan data kami akan cepat dengan model data ini.

Modelkan Data Anda di Cassandra

Perkara-perkara berikut harus diingat semasa memodelkan pertanyaan anda.

  1. Tentukan pertanyaan apa yang anda mahu sokong
  2. Pertama sekali, tentukan pertanyaan yang anda mahukan.

    Contohnya, adakah anda memerlukan?

    • Bergabung
    • Kumpulan mengikut
    • Menapis pada ruangan mana dll.
  3. Buat jadual mengikut pertanyaan anda

    Buat jadual mengikut pertanyaan anda. Buat jadual yang akan memenuhi permintaan anda. Cuba buat jadual sedemikian rupa sehingga sebilangan minimum partisi perlu dibaca.

Mengendalikan Hubungan Satu ke Satu

Hubungan satu ke satu bermaksud dua jadual mempunyai korespondensi satu ke satu. Sebagai contoh, pelajar hanya boleh mendaftar satu kursus, dan saya ingin mencari pelajar yang mana kursus pelajar didaftarkan.

Oleh itu, dalam skema ini, skema jadual anda harus merangkumi semua butiran pelajar yang sesuai dengan kursus tertentu seperti nama kursus, senarai no pelajar, nama pelajar, dll.

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

Mengendalikan hubungan antara satu dengan banyak

Hubungan antara satu dengan banyak bermaksud mempunyai persamaan antara dua jadual.

Sebagai contoh, kursus boleh dipelajari oleh banyak pelajar. Saya ingin mencari semua pelajar yang mengikuti kursus tertentu.

Oleh itu, dengan membuat pertanyaan mengenai nama kursus, saya akan mempunyai banyak nama pelajar yang akan mempelajari kursus tertentu.

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

Saya boleh mendapatkan semua pelajar untuk kursus tertentu dengan pertanyaan berikut.

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

Menangani Hubungan Banyak hingga Banyak

Hubungan banyak ke banyak bermaksud mempunyai banyak persamaan antara dua jadual.

Sebagai contoh, satu kursus boleh dipelajari oleh banyak pelajar, dan seorang pelajar juga boleh belajar banyak kursus.

Saya ingin mencari semua pelajar yang mengikuti kursus tertentu. Juga, saya ingin mencari semua kursus yang dipelajari oleh pelajar tertentu.

Jadi dalam kes ini, saya akan mempunyai dua jadual iaitu membahagikan masalah kepada dua kes.

Pertama, saya akan membuat jadual di mana anda boleh mencari kursus oleh pelajar tertentu.

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

Saya dapat mencari semua kursus oleh pelajar tertentu dengan pertanyaan berikut. ->

Select * from Student_Course where student_rollno=rollno;

Kedua, saya akan membuat jadual di mana anda dapat mengetahui berapa banyak pelajar yang mengikuti kursus tertentu.

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

Saya dapat mencari pelajar dalam kursus tertentu dengan pertanyaan berikut.

Select * from Course_Student where Course_name=CourseName;

Perbezaan antara Pemodelan Data RDBMS dan Cassandra

RDBMS

Cassandra

Menyimpan data dalam bentuk normal

Menyimpan data dalam bentuk denormalisasi

Dbms lama; data berstruktur

Kedai barisan luas, Dinamik; data berstruktur & tidak berstruktur

Ringkasan

Pemodelan data di Cassandra berbeza daripada pangkalan data RDBMS yang lain. Pemodelan data Cassandra mempunyai beberapa peraturan. Peraturan ini mesti dipatuhi untuk pemodelan data yang baik. Selain peraturan ini, kami melihat tiga kes pemodelan data yang berbeza dan cara menanganinya.