Mô hình dữ liệu trong Cassandra
MÔ HÌNH DỮ LIỆU CASSANDRA
Trong RDBMS, dữ liệu được lưu trữ trong bảng và những bảng trong một ứng dụng có mối quan hệ với nhau. Dữ liệu thường được chuẩn hóa sao cho giảm dư thừa dữ liệu. Còn trong Cassandra, keyspace là đối tượng chứa dữ liệu của ứng dụng, tương tự như database hay schema trong RDBMS. Bên trong keyspace là một hoặc nhiều column families - được hiểu như các bảng. Column family chứa các dòng gồm một tập những cột có liên quan với nhau được định nghĩa bởi một row key. Mỗi row trong một column family không yêu cầu phải có cùng số cột.
Cassandra không bắt buộc phải thiết lập mối quan hệ giữa các
column family. Không có khóa ngoại trong Cassandra, không hỗ trợ join các
column family tại thời điểm truy vấn. Mỗi column family sẽ có một tập những cột
cho phép liên kết những bảng lại để lấy thông tin khi câu truy vấn được thực hiện.
1. Keyspace
Trong Cassandra, keyspace chứa toàn bộ dữ liệu của ứng dụng,
tương tự schema trong RDBMS. Keyspace
dùng để nhóm những column family lại với nhau. Mặc dù người ta khuyên rằng chỉ
nên dùng một keyspace duy nhất ứng với một ứng dụng. Tuy nhiên vẫn hoàn toàn có
thể tạo nhiều keyspace với một ứng dụng để phù hợp với yêu cầu.
Trong
Cassandra, thuộc tính cơ bản để cấu hình một keyspace gồm Replication factor
(RF), placement strategy.
2. Column family
Column
family tương tự như bảng trong RDBMS. Tuy nhiên, chúng có những đặc điểm khác
nhau. Trong RDBMS, khi định nghĩa bảng cùng với cột của nó (tên cột, kiểu dữ liệu
cột), ta phải xác định trước các thuộc tính. Trong Cassandra, khi định nghĩa
column family, column family có thể định nghĩa metadata về các cột, nhưng số lượng
cột thực tế tạo nên một dòng được quyết định bởi client. Mỗi row có thể có số cột
khác nhau.
Có 2 loại column family trong Cassandra là: Static và Dynamic.
- Static column family: Có nhiều sự tương đồng với bảng trong RDBMS. Một static column family sử dụng một tập tương đối cố định các cột, thường có metadata được định nghĩa trước cho mỗi cột. Mặc dù các dòng có cùng một tập cột, nhưng không nhất thiết phải nhập giá trị xác định cho tất cả các cột.
- Dynamic column family: Thể hiện toàn bộ sự linh động của Cassandra. Một column family động cho phép tính toán trước các tập kết quả và lưu chúng trong một dòng đơn để truy vấn dữ liệu hiệu quả. Mỗi dòng là một snapshot của dữ liệu thỏa mãn một truy vấn cụ thể.
3. Column
Column là phần tử nhỏ nhất trong Cassandra. Nó chứa đựng một
tên, một giá trị và một timestamp (nhãn thời gian).
Về kiểu dữ liệu: Trong RDBMS, cần phải đặc tả kiểu dữ liệu
cho mỗi cột khi định nghĩa bảng, và kiểu dữ liệu sẽ ràng buộc dữ liệu được
insert vào đó. Tên cột trong RDBMS là một nhãn cố định. Còn trong Cassandra, kiểu
dữ liệu của giá trị cột được gọi là validator, kiểu dữ liệu của tên cột được gọi
là comparator. Ta có thể định nghĩa kiểu dữ liệu khi tạo column family hoặc
không. Mặc định Cassandra lưu trữ tên cột và giá trị cột dưới dạng hex byte
(BytesType).
Cassandra sử dụng cột nhãn thời gian để xác định cập nhật gần nhất của một cột. Nhãn thời gian được cung cấp bởi ứng dụng.
Nhận xét
Đăng nhận xét