+2

Cassandra notes

Ghi chép về một số kinh nghiệm khi sử dụng Cassandra

Ngừng sử dụng Cassandra

Nếu bạn có ý định làm quen với Cassandra, bạn nên ngừng lại và tìm hiểu một database engine khác, như AeroSpike http://www.aerospike.com/

Hiện tại tốc độ phát triển dung lượng bộ nhớ tăng rất nhanh, các database engine hoàn toàn dùng memory sẽ nhanh chóng trở lên phổ biến với ưu thế về tốc độ trong khi Cassandra mặc dù đã tương đối ổn định về mã nguồn nhưng vẫn lưu trữ data trên hard disk.

Bạn có thể kiểm tra ở đây http://yourdatafitsinram.com/ để dự tính xem khối lượng data của bạn có phù hợp cho một in memory database.

Nếu đang/sẽ phải sử dụng Cassandra

Không sử dụng secondary index

Index được Cassandra tạo ra để tạo điều kiện dễ dàng cho các query, giống như MySQL. Tuy nhiên chức năng này chủ yếu được tạo ra để thu hút người dùng hơn là mang lại giá trị thực tiễn.

Khi dataset còn nhỏ, secondary index có vẻ hoạt động rất tốt, tuy nhiên khi lượng data nhiều hơn index không những không làm tăng tốc độ query, ngược lại tăng latency và dễ dàng fail. Ngoài ra, index cũng sẽ làm cho quá tình compaction, repair trở lên chậm chạp hơn.

Giải pháp để không sử dụng index là tạo ra các bảng mới để thực hiện query. Việc tạo bảng mới sẽ làm tăng độ trùng lặp dữ liệu tuy nhiên dabase như Cassandra khuyến khích điều này. Dung lượng không phải là một vấn đề nghiêm trọng với Cassandra.

Casandra không phù hợp cho các thay đổi thường xuyên trong cấu trúc dữ liệu

Đơn giản là khi data lớn lên, việc dịch chuyển dữ liệu khi thay đổi cấu trúc là rất phiền phức.

Backup & Restore

Công cụ backup có sẵn của Cassandra không giúp ích gì nhiều, một số công cụ hỗ trợ bên ngoài thì khó sử dụng và nhiều bugs. Việc tốt nhất bạn có thể làm là giữ cho cluster luôn khỏe mạnh.

Widerow

Về lý thuyết một row trong Cassandra có thể chứa tới 2 tỉ cột, tuy nhiên đây chỉ là trên lí thuyết. Thực tế là không nên quá 100.000 cột hay 100MB cho mỗi dòng. Các widerow quá nặng nề sẽ làm chậm query và gây ra các vấn đề lớn khi compact.

Tuy nhiên nếu không sử dụng widerow thì chẳng cần dùng Cassandra làm gì.

Replication factor bao nhiêu là phù hợp

3

Sử dụng token hay num_token

Nên bắt đầu với num_token, sẽ tránh được càng phiền phức khi thêm node, giảm node, rebalance.

Tuy vậy, sử dụng num_token sẽ khiến cho thời gian repair tăng lên.

Sự cố khi thêm node

Các nodes trong cluster đều bị high load sau khi có node mới tham gia vào cluster -> khởi động lại các nodes bị high load.

Node mới tham gia vào cluster bị kẹt ở trạng thái joining -> tắt Cassandra trên node đó, vào thư mục data của Cassanra xóa bảng system rồi khởi động lại.

Nếu node được thêm là clone từ một node hiện tại, hãy chắc chắn rằng các thư mục trong /vả/lib/casandra/ đều không có gì.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí