Skip to content

4.1.2 Hiểu về mô hình dữ liệu Cassandra

Như tôi đã đề cập, Cassandra rất khác biệt so với cơ sở dữ liệu quan hệ. Trước khi bạn có thể bắt đầu ánh xạ các kiểu miền (domain types) của mình sang các bảng Cassandra, điều quan trọng là phải hiểu một vài điểm khác biệt trong cách mô hình dữ liệu Cassandra so với cách bạn có thể mô hình dữ liệu để lưu trữ trong cơ sở dữ liệu quan hệ.

Một vài điểm quan trọng nhất cần hiểu về mô hình dữ liệu Cassandra như sau:

  • Các bảng Cassandra có thể có bất kỳ số lượng cột nào, nhưng không phải tất cả các hàng đều nhất thiết phải sử dụng tất cả các cột đó.
  • Cơ sở dữ liệu Cassandra được chia thành nhiều phân vùng. Bất kỳ hàng nào trong một bảng có thể được quản lý bởi một hoặc nhiều phân vùng, nhưng không có khả năng tất cả các phân vùng sẽ có tất cả các hàng.
  • Một bảng Cassandra có hai loại khóa: khóa phân vùng (partition key) và khóa sắp xếp (clustering key). Các phép băm (hash) được thực hiện trên khóa phân vùng của mỗi hàng để xác định hàng đó sẽ được quản lý bởi phân vùng nào. Các khóa sắp xếp xác định thứ tự mà các hàng được duy trì trong một phân vùng (không nhất thiết là thứ tự xuất hiện trong kết quả của truy vấn). Tham khảo tài liệu Cassandra http://mng.bz/yJ6E để biết giải thích chi tiết hơn về mô hình dữ liệu trong Cassandra, bao gồm phân vùng, cụm (cluster) và các khóa tương ứng của chúng.
  • Cassandra được tối ưu hóa cao cho các thao tác đọc. Do đó, việc bảng bị phi chuẩn hóa nhiều và dữ liệu bị trùng lặp ở nhiều bảng là điều phổ biến và được mong muốn. (Ví dụ: thông tin khách hàng có thể được lưu trong một bảng khách hàng cũng như được sao chép trong một bảng chứa các đơn hàng mà khách hàng đó đã đặt.)

Tóm lại, việc điều chỉnh các kiểu miền trong Taco Cloud để hoạt động với Cassandra sẽ không chỉ đơn giản là thay một vài annotation của JPA bằng annotation của Cassandra. Bạn sẽ phải suy nghĩ lại cách mô hình hóa dữ liệu.

Released under the MIT License.