Các column đặc biệt (Counter, Expiring, Super)

Một phần của tài liệu hệ cơ sở dữ liệu phân tán cassandra (Trang 40 - 42)

3. Mơ hình dữ liệu Cassandra

3.5 Các column đặc biệt (Counter, Expiring, Super)

3.5.1 Expiring Columns

Một cột có thể có một ngày hết hạn tùy chọn gọi là TTL (time to live). Mỗi khi một cột được thêm vào, ứng dụng yêu cầu có thể chỉ ra một giá trị TTL tùy chọn, được định nghĩa bằng giây, cho cột đó. Các cột TTL được đánh dấu xóa sau khi thời gian yêu

cầu hết hạn. Một khi chúng được đánh dấu xóa, chúng sẽ tự động bị loại bỏ khỏi các q trình sửa hay nén thơng thường.

Bạn có thể sử dụng CLI hay CQL để thiết lập TTL cho một cột.

Nếu bạn muốn thay đổi TTL của một cột có hạn, bạn phải thêm lại cột đó với giá trị TTL mới. Trong Cassandra việc thêm một cột thực sự là thao tác thêm hoặc cập nhât, phụ thuộc vào phiên bản trước của cột đó đã tồn tại hay chưa. Điều này có nghĩa là để cập nhật TTL cho một cột với một giá trị khơng xác định, bạn phải đọc cột và sau đó thêm lại cột đó với một giá trị TTL mới.

Các cột TTL có độ chính xác đến một giây, được tính tốn trên server. Do đó, một giá trị TTL rất nhỏ có lẽ khơng có mấy ý nghĩa. Hơn nữa, các đồng hồ trên server phải

được đồng bộ hóa; nếu khơng độ chính xác có thể bị giảm vì thời gian hết hạn được tính

tốn trên máy chủ chính nhận thao tác thêm cột đầu tiên, nhưng sau đó lại được đọc ra bởi các máy khác trên cluster.

Một cột có hạn có thêm 8 byte mào đầu trong bộ nhớ hay ổ đĩa (để ghi TTL và thời gian hết hạn) so với các cột chuẩn.

3.5.2 Counter Columns

Counter là một kiểu cột đặc biệt được sử dụng để lưu trữ một số có giá trị đếm tự

tăng khi có sự xuất hiện của một sự kiện hoặc tiến trình cụ thể nào đó. Ví dụ, bạn có thể

sử dụng cột counter để đếm số lần một trang được xem.

Các counter column family phải sử dụng CounterColumnType là kiểu dữ liệu cho cột. Điều này có nghĩa là hiện tại, các cột counter chỉ có thể được lưu trữ trong các column family chuyên biệt; chúng sẽ được phép trộn với các cột thông thường trong

tương lai.

Cột counter khác với các cột thơng thường ở chỗ một khi nó được định nghĩa, ứng dụng chỉ có thể cập nhật giá trị cột bằng cách tăng hoặc giảm nó. Để cập nhật tới cột counter,ứng dụng cần truyền tên của cột và giá trị tăng (hoặc giảm); không cần nhãn thời

Về bên trong, cấu trúc của một cột counter có một chút phức tạp hơn. Cassandra theo dõi trạng thái phân tán của counter cũng như nhãn thời gian mà server sinh ra khi xóa một cột counter. Vì lý do này, điều quan trọng là tất cả các node trong cluster phải có đồng hồ được đồng bộ hóa bằng giao thức thời gian mạng (network time protocol NTP).

Một cột counter có thể được đọc hay viết ở bất cứ mức độ nhất quán nào. Tuy

nhiên, điều quan trọng là phải hiêu rằng không giống những cột thông thường, việc ghi

vào cột counter yêu cầu một lần đọc trước để đảm bảo rằng các giá trị counter phân tán vẫn thống nhất với nhau trên các bản sao. Nếu bạn ghi ở mức độ nhất quán là 1, việc đọc

ẩn sẽ không ảnh hưởng đến độ ghi trễ, nên 1 là mức độ nhất quán phổ biến nhất dùng với counter.

3.5.3 Super Columns

Một Cassandra column family có thể chứa cả cột thơng thường và siêu cột – điều này làm cho mức độ lồng ghép trong cấu trúc column family thông thường tăng lên. Siêu cột được tạp thành từ tên (siêu) cột và một bản đồ được sắp xếp của các cột con. Một siêu cột có thể chỉ ra một kiểu dữ liệu (comparator) cho cả tên siêu cột và tên cột con.

Một siêu cột là một cách nhóm nhiều cột dựa trên một giá trị tìm kiếm chung. Mục

đích sử dụng chính của siêu cột là để phi chuẩn hóa nhiều dịng từ các column family

khác vào trong một dòng, cho phép lấy dữ liệu dưới cái nhìn cụ thể hóa. Ví dụ, giả sử bạn muốn tạo ra một cái nhìn cụ thể của các blog entry cho những blogger mà một người

Một hạn chế của siêu cột là tất cả các cột con của siêu cột đó phải được giải tuần tự

hóa để đọc từng giá trị riêng của cột con, và bạn không thể tạo ra các chỉ mục thứ cấp trên

các cột con của siêu cột. Do đó, việc dùng siêu cột phù hợp nhất cho trường hợp số lượng cột con tương đối nhỏ.

Một phần của tài liệu hệ cơ sở dữ liệu phân tán cassandra (Trang 40 - 42)

Tải bản đầy đủ (PDF)

(50 trang)