Cassandra - Mô hình dữ liệu

Mô hình dữ liệu của Cassandra khác đáng kể so với những gì chúng ta thường thấy trong RDBMS. Chương này cung cấp tổng quan về cách Cassandra lưu trữ dữ liệu của nó.

Cụm

Cơ sở dữ liệu Cassandra được phân phối trên một số máy hoạt động cùng nhau. Vùng chứa ngoài cùng được gọi là Cụm. Để xử lý lỗi, mọi nút đều chứa một bản sao và trong trường hợp bị lỗi, bản sao sẽ bị tính phí. Cassandra sắp xếp các nút trong một cụm, ở định dạng vòng và gán dữ liệu cho chúng.

Keyspace

Keyspace là vùng chứa ngoài cùng cho dữ liệu trong Cassandra. Các thuộc tính cơ bản của Keyspace trong Cassandra là:

  • Replication factor - Là số lượng máy trong cụm sẽ nhận được các bản sao của cùng một dữ liệu.

  • Replica placement strategy- Không có gì khác ngoài chiến lược đặt các bản sao vào võ đài. Chúng tôi có các chiến lược nhưsimple strategy (chiến lược nhận biết giá đỡ), old network topology strategy (chiến lược nhận biết giá đỡ) và network topology strategy (chiến lược chia sẻ trung tâm dữ liệu).

  • Column families- Keyspace là vùng chứa danh sách một hoặc nhiều họ cột. Đến lượt mình, họ cột là một vùng chứa tập hợp các hàng. Mỗi hàng chứa các cột có thứ tự. Họ cột đại diện cho cấu trúc dữ liệu của bạn. Mỗi keyspace có ít nhất một và thường là nhiều họ cột.

Cú pháp tạo Keyspace như sau:

CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

Hình minh họa sau đây cho thấy một dạng xem sơ đồ của Keyspace.

Họ cột

Họ cột là một vùng chứa cho một tập hợp các hàng có thứ tự. Mỗi hàng, lần lượt, là một tập hợp các cột có thứ tự. Bảng sau đây liệt kê các điểm phân biệt họ cột với bảng cơ sở dữ liệu quan hệ.

Bảng quan hệ Cột Cassandra Gia đình
Một lược đồ trong mô hình quan hệ là cố định. Khi chúng ta xác định các cột nhất định cho bảng, trong khi chèn dữ liệu, trong mỗi hàng, tất cả các cột phải được điền ít nhất bằng giá trị null. Trong Cassandra, mặc dù họ cột được xác định, nhưng các cột thì không. Bạn có thể tự do thêm bất kỳ cột nào vào bất kỳ họ cột bất kỳ lúc nào.
Bảng quan hệ chỉ xác định các cột và người dùng điền vào bảng các giá trị. Trong Cassandra, một bảng chứa các cột hoặc có thể được định nghĩa là một họ siêu cột.

Họ cột Cassandra có các thuộc tính sau:

  • keys_cached - Nó đại diện cho số lượng vị trí cần lưu trong bộ nhớ cache trên mỗi SSTable.

  • rows_cached - Nó đại diện cho số hàng mà toàn bộ nội dung sẽ được lưu trong bộ nhớ.

  • preload_row_cache - Nó chỉ định xem bạn có muốn điền trước bộ nhớ cache của hàng hay không.

Note − Không giống như các bảng quan hệ trong đó lược đồ của họ cột không cố định, Cassandra không bắt buộc các hàng riêng lẻ phải có tất cả các cột.

Hình sau đây cho thấy một ví dụ về họ cột Cassandra.

Cột

Một cột là cấu trúc dữ liệu cơ bản của Cassandra với ba giá trị, đó là tên khóa hoặc cột, giá trị và dấu thời gian. Dưới đây là cấu trúc của một cột.

SuperColumn

Siêu cột là một cột đặc biệt, do đó, nó cũng là một cặp khóa-giá trị. Nhưng một siêu cột lưu trữ một bản đồ của các cột con.

Nói chung các họ cột được lưu trữ trên đĩa trong các tệp riêng lẻ. Do đó, để tối ưu hóa hiệu suất, điều quan trọng là phải giữ các cột mà bạn có khả năng truy vấn cùng nhau trong cùng một họ cột và siêu cột có thể hữu ích ở đây. Dưới đây là cấu trúc của siêu cột.

Mô hình dữ liệu của Cassandra và RDBMS

Bảng sau liệt kê các điểm phân biệt mô hình dữ liệu của Cassandra với mô hình của RDBMS.

RDBMS Cassandra
RDBMS xử lý dữ liệu có cấu trúc. Cassandra xử lý dữ liệu phi cấu trúc.
Nó có một lược đồ cố định. Cassandra có một lược đồ linh hoạt.
Trong RDBMS, một bảng là một mảng của các mảng. (ROW x COLUMN) Trong Cassandra, một bảng là danh sách các "cặp khóa-giá trị lồng nhau". (ROW x COLUMN key x COLUMN value)
Cơ sở dữ liệu là vùng chứa ngoài cùng chứa dữ liệu tương ứng với một ứng dụng. Keyspace là vùng chứa ngoài cùng chứa dữ liệu tương ứng với một ứng dụng.
Các bảng là các thực thể của cơ sở dữ liệu. Các bảng hoặc họ cột là thực thể của một không gian khóa.
Hàng là một bản ghi riêng lẻ trong RDBMS. Row là một đơn vị sao chép trong Cassandra.
Cột đại diện cho các thuộc tính của một quan hệ. Cột là một đơn vị lưu trữ trong Cassandra.
RDBMS hỗ trợ các khái niệm về khóa ngoại, phép nối. Các mối quan hệ được biểu diễn bằng cách sử dụng các bộ sưu tập.