Cassandra Mô hình dữ liệu với ví dụ cơ sở dữ liệu đơn giản
Mặc dù Cassandra ngôn ngữ truy vấn giống với SQL ngôn ngữ, phương pháp mô hình hóa dữ liệu của họ hoàn toàn khác nhau.
In Cassandra, một mô hình dữ liệu kém có thể làm giảm hiệu suất, đặc biệt khi người dùng cố gắng triển khai các khái niệm RDBMS trên Cassandra. Tốt nhất bạn nên ghi nhớ một số quy tắc chi tiết dưới đây.
Cassandra Quy tắc mô hình dữ liệu
In Cassandra, viết không đắt tiền. Cassandra không hỗ trợ các phép nối, nhóm theo, mệnh đề OR, tập hợp, v.v. Vì vậy, bạn phải lưu trữ dữ liệu của mình theo cách có thể truy xuất được hoàn toàn. Vì vậy, những quy tắc này phải được ghi nhớ trong khi lập mô hình dữ liệu trong Cassandra.
Tối đa hóa số lượng ghi
In Cassandra, viết rất rẻ. Cassandra được tối ưu hóa cho hiệu suất ghi cao. Vì vậy, hãy cố gắng tối đa hóa khả năng ghi của bạn để có hiệu suất đọc và tính khả dụng của dữ liệu tốt hơn. Có sự cân bằng giữa ghi dữ liệu và đọc dữ liệu. Vì vậy, hãy tối ưu hóa hiệu suất đọc dữ liệu của bạn bằng cách tối đa hóa số lần ghi dữ liệu.
Tối đa hóa việc sao chép dữ liệu
Việc không chuẩn hóa dữ liệu và sao chép dữ liệu là sự thật của Cassandra. Dung lượng ổ đĩa không đắt hơn bộ nhớ, xử lý CPU và hoạt động IO. BẰNG Cassandra là một cơ sở dữ liệu phân tán, do đó việc sao chép dữ liệu cung cấp dữ liệu sẵn có ngay lập tức và không có điểm lỗi nào.
Cassandra Mục tiêu lập mô hình dữ liệu
Bạn nên có các mục tiêu sau khi mô hình hóa dữ liệu trong Cassandra:
Trải đều dữ liệu xung quanh Cluster
Bạn muốn có lượng dữ liệu bằng nhau trên mỗi nút của Cassandra Cluster. Dữ liệu được lan truyền đến các nút khác nhau dựa trên các khóa phân vùng là phần đầu tiên của khóa chính. Vì vậy, hãy thử chọn số nguyên làm khóa chính để phân bổ dữ liệu đều khắp cụm.
Giảm thiểu số lượng phân vùng được đọc trong khi truy vấn dữ liệu
Phân vùng là một nhóm các bản ghi có cùng khóa phân vùng. Khi truy vấn đọc được đưa ra, nó sẽ thu thập dữ liệu từ các nút khác nhau từ các phân vùng khác nhau.
Nếu có nhiều phân vùng thì cần phải truy cập tất cả các phân vùng này để thu thập dữ liệu truy vấn.
Điều đó không có nghĩa là không nên tạo phân vùng. Nếu dữ liệu của bạn rất lớn, bạn không thể giữ lượng dữ liệu khổng lồ đó trên một phân vùng. Phân vùng đơn sẽ bị chậm lại.
Vì vậy, hãy cố gắng chọn số lượng phân vùng cân bằng.
Khóa chính tốt trong Cassandra
Hãy lấy một ví dụ và tìm khóa chính nào tốt.
Đây là bảng MusicPlaylist.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key(SongId, SongName) );
Trong ví dụ trên, bảng MusicPlaylist,
- Songid là khóa phân vùng và
- SongName là cột phân cụm
- Dữ liệu sẽ được nhóm trên cơ sở SongName. Chỉ có một phân vùng sẽ được tạo bằng SongId. Sẽ không có phân vùng nào khác trong bảng MusicPlaylist.
Việc truy xuất dữ liệu sẽ bị chậm bởi mô hình dữ liệu này do khóa chính không hợp lệ.
Đây là một bảng khác MusicPlaylist.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key((SongId, Year), SongName) );
Trong ví dụ trên, bảng MusicPlaylist,
- Songid và Year là khóa phân vùng và
- SongName là cột phân cụm.
- Dữ liệu sẽ được phân cụm trên cơ sở SongName. Trong bảng này, mỗi năm sẽ có một phân vùng mới được tạo. Tất cả các bài hát của năm sẽ nằm trên cùng một nút. Khóa chính này sẽ rất hữu ích cho dữ liệu.
Việc truy xuất dữ liệu của chúng ta sẽ nhanh chóng nhờ mô hình dữ liệu này.
Lập mô hình dữ liệu của bạn trong Cassandra
Bạn cần lưu ý những điều sau khi lập mô hình truy vấn:
Xác định những truy vấn bạn muốn hỗ trợ
Trước hết, hãy xác định những truy vấn bạn muốn.
Ví dụ, bạn có cần không?
- Tham gia
- Nhóm theo
- Lọc trên cột nào, v.v.
Tạo bảng theo truy vấn của bạn
Tạo bảng theo truy vấn của bạn. Tạo một bảng sẽ đáp ứng các truy vấn của bạn. Cố gắng tạo một bảng sao cho số lượng phân vùng tối thiểu cần được đọc.
Xử lý mối quan hệ một đối một trong Cassandra
Mối quan hệ 1-1 có nghĩa là hai bảng có sự tương ứng 1-1. Ví dụ: sinh viên chỉ có thể đăng ký một khóa học và tôi muốn tìm kiếm một sinh viên mà khóa học mà một sinh viên cụ thể đã đăng ký.
Vì vậy, trong trường hợp này, lược đồ bảng của bạn phải bao gồm tất cả các chi tiết của sinh viên tương ứng với khóa học cụ thể đó như tên khóa học, số hiệu danh sách của sinh viên, tên sinh viên, v.v.
Create table Student_Course ( Student rollno int primary key, Student_name text, Course_name text, );
Xử lý mối quan hệ một-nhiều trong Cassandra
Mối quan hệ một đến nhiều có nghĩa là có một đến nhiều sự tương ứng giữa hai bảng.
Ví dụ, một khóa học có thể được nhiều sinh viên theo học. Tôi muốn tìm kiếm tất cả các sinh viên đang theo học một khóa học cụ thể.
Vì vậy, bằng cách truy vấn tên khóa học, tôi sẽ có nhiều tên sinh viên sẽ theo học một khóa học cụ thể.
Create table Student_Course ( Student_rollno int, Student_name text, Course_name text, );
Tôi có thể lấy thông tin về tất cả học sinh của một khóa học cụ thể bằng truy vấn sau.
Select * from Student_Course where Course_name='Course Name';
Xử lý mối quan hệ nhiều-nhiều trong Cassandra
Mối quan hệ nhiều-nhiều có nghĩa là có nhiều-nhiều sự tương ứng giữa hai bảng.
Ví dụ, một khóa học có thể được nhiều sinh viên học và một sinh viên cũng có thể học nhiều khóa học.
Tôi muốn tìm kiếm tất cả các sinh viên đang theo học một khóa học cụ thể. Ngoài ra, tôi muốn tìm kiếm tất cả khóa học mà một sinh viên cụ thể đang theo học.
Vì vậy trong trường hợp này tôi sẽ có hai bảng tức là chia bài toán thành hai trường hợp.
Đầu tiên, tôi sẽ tạo một bảng để bạn có thể tìm các khóa học của một sinh viên cụ thể.
Create table Student_Course ( Student_rollno int primary key, Student_name text, Course_name text, );
Tôi có thể tìm thấy tất cả các khóa học của một học viên cụ thể bằng truy vấn sau.
Select * from Student_Course where student_rollno=rollno;
Thứ hai, tôi sẽ tạo một bảng để bạn có thể biết có bao nhiêu sinh viên đang theo học một khóa học cụ thể.
Create table Course_Student ( Course_name text primary key, Student_name text, student_rollno int );
Tôi có thể tìm kiếm một sinh viên trong một khóa học cụ thể bằng truy vấn sau.
Select * from Course_Student where Course_name=CourseName;
Sự khác biệt giữa RDBMS và Cassandra Mô hình hóa dữ liệu
RDBMS | Cassandra |
---|---|
Lưu trữ dữ liệu ở dạng chuẩn hóa | Lưu trữ dữ liệu ở dạng không chuẩn hóa |
dbms kế thừa; Dữ liệu có cấu trúc | Cửa hàng có hàng rộng, Năng động; dữ liệu có cấu trúc và không cấu trúc |
Tổng kết
- Mô hình hóa dữ liệu trong Cassandra khác với những cái khác Cơ sở dữ liệu RDBMS.
- Cassandra mô hình hóa dữ liệu có một số quy tắc. Những quy tắc này phải được tuân theo để mô hình hóa dữ liệu tốt. Bên cạnh những quy tắc này, chúng tôi đã thấy ba trường hợp lập mô hình dữ liệu khác nhau và cách xử lý chúng.
- Mối quan hệ 1-1 có nghĩa là hai bảng có sự tương ứng 1-1.
- Mối quan hệ một đến nhiều có nghĩa là có một đến nhiều sự tương ứng giữa hai bảng.
- Mối quan hệ nhiều-nhiều có nghĩa là có nhiều-nhiều sự tương ứng giữa hai bảng.