Nén column family

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

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

3.7 Nén column family

Việc nén dữ liệu có thể được cấu hình trên mỗi column family. Việc nén này sẽtối

đa hóa dung lượng lưu trữ của các node Cassandra bằng cách giảm dung lượng dữ liệu trên đĩa. Hơn nữa ngồi tiết kiệm khơng gian lưu trữ, việc nén cũng giảm vào ra đĩa, đặc

biệt là cho các cơng việc chỉ đọc.

Bên cạnh việc giảm kích thước dữ liệu, việc nén thường cải thiện cả hiệu năng đọc và ghi. Cassandra có thể nhanh chóng tìm ra vị trí của các dòng trong chỉ mục SSTable, và chỉ giải nén nhóm dữ liệu có liên quan. Điều này có nghĩa việc nén cải thiện hiệu năng

đọc không chỉ bằng cách cho phép lưu trữ được nhiều dữ liệu hơn trên bộ nhớ mà cịn có

Khơng giống như cơ sở dữ liệu truyền thống, hiệu năng ghi bị ảnh hưởng tiêu cục bởi việc nén trong Cassandra. Ghi dữ liệu trên các bảng đã nén trong thực tế đã cho thấy cải thiện được 10% hiệu năng. Trong cơ sở dữ liệu quan hệ truyền thống, việc ghi đòi hỏi

ghe đè lên các file dữ liệu đang tồn tại trên đĩa. Điều này nghĩa là các cơ sở dữ liệu phải định vị các trang liên quan trên đĩa, giải nén chúng, ghi đè dữ liệu liên quan lên, và sau đó

lại nén lại (một thao tác đắt đỏ về cả sử dụng CPU và vào ra đĩa).

Vì các file dữ liệu Cassandra SSTable là bất biến (chúng không dược viết lại sau

khi đãđược ghi vào đĩa), khong cần phải giản nén để xử lý thao tác ghi. SSTable chỉ được

nén một lần, khi chúng được ghi vào đĩa.

Việc nén có thể đưa lại các lợi ích sau, phụ thuộc vào đặc trưng dữ liệu của column family:

• Giảm 2x-4xtrong kích thước dữ liệu

• Cải thiện 25-35% hiệu năng đọc

• Cải thiện 5-10% hiệu năng của thao tác ghi.

3.7.1 Khi nào sửdụng nén

Nén phù hợp nhất cho các column family có nhiều dịng, mỗi dịng có cùng số cột, hoặc ít nhất có nhiều cột chung. Ví dụ, một column family chứa dữ liệu người dùng như

tên, email… có thể làứng cử viên tốt cho việc nén. Càng có nhiều dữ liệu tương đồng trên

các dịng tỉ lệ nén càng lớn, và đạt được hiệu năng đọc tốt hơn.

Nén khong tốt đối với các column family mà mỗi dịng có tập các cột khác nhau, hoặc có rất ít dịng rộng. Column family động như vậy sẽ khơng tốt trong tỉ lệ nén.

3.7.2 Cấu hình nén cho một Column Family

Khi bạn tạo hay cập nhật một column family, bạn có thể chọn làm nó thành một column family nén bằng cách thiết lập thuộc tính compression_options. Bạn có thể cho phép nén khi bạn tạo một column family mới,hoặc cập nhật một column family đã cóđể

thêm việc nén vào sau. Khi bạn thêm thao tác nén vào một column family mới, SSTable dã có trênđĩa khong được nén ngay lập tức. Bất cứ SSTable mới nào được tạo ra cũng sẽ được nén, và các SSTable đã có sẽ được nén trong q trình nén Cassandra thơng thường. Nếu cần, bạn có thể ép buộc các bảng SSTable đã có được ghi lại và nén bằng cách sử

dụng một số nodetool.

[default@demo] CREATE COLUMN FAMILY users WITH key_validation_class=UTF8Type AND column_metadata = [

{column_name: name, validation_class: UTF8Type} {column_name: email, validation_class: UTF8Type} {column_name:

state, validation_class: UTF8Type} {column_name: gender, validation_class: UTF8Type} {column_name: birth_year,

validation_class: LongType} ] AND

compression_options={sstable_compression:SnappyCompressor, chunk_length_kb:64};

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

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

(50 trang)