Cassandra được thiết kế để đạt được thông lượng cao và thao tác ghi nhanh hơn.
Khóa chính xác định duy nhất từng hàng của bảng. Trong Cassandra, khóa chính có hai phần:
PRIMARY KEY (city_id, event_id)
. Khóa chính này bao gồm hai phần, được biểu thị bằng hai cột:
1. city_id
đóng vai trò là khóa phân vùng, nghĩa là dữ liệu sẽ được phân vùng dựa trên trường city_id
, dẫn đến tất cả các hàng có cùng city_id
sẽ được lưu trữ trên cùng một nút.
2. event_id
đóng vai trò là khóa phân cụm. Trong mỗi nút, dữ liệu được sắp xếp và lưu trữ theo thứ tự sắp xếp dựa trên cột event_id
.
Mỗi hàng có khóa phân vùng = "Paris" sẽ được lưu trữ trên cùng một nút, được sắp xếp theo giá trị của cột event_id.
Trình phân vùng trong Cassandra chịu trách nhiệm quyết định cách phân phối dữ liệu trên vòng Hash nhất quán. Khi dữ liệu được chèn vào cụm Cassandra, trình phân vùng sẽ áp dụng thuật toán băm cho khóa phân vùng . Kết quả của thuật toán băm này xác định phạm vi dữ liệu rơi vào và xác định nút mà dữ liệu sẽ được lưu trữ trên đó.
Nút nhận được yêu cầu được gọi là nút điều phối và có thể là bất kỳ nút nào trong cụm. Nếu khóa không thuộc phạm vi của điều phối viên, yêu cầu sẽ được chuyển tiếp đến bản sao chịu trách nhiệm về phạm vi đó.
Cassandra vượt trội trong các ứng dụng yêu cầu xử lý khối lượng dữ liệu lớn và ưu tiên tính khả dụng của dữ liệu hơn tính nhất quán. Nó rất phù hợp cho :
1. Ứng dụng Internet of Things (IoT) : Cassandra là một lựa chọn lý tưởng cho môi trường IoT, vì nó có thể xử lý lượng dữ liệu khổng lồ được tạo ra bởi các thiết bị và cảm biến. Kiến trúc phân tán của nó cho phép quản lý dữ liệu quy mô lớn, phân tán về mặt địa lý.
2. Dữ liệu chuỗi thời gian : Các ứng dụng xử lý dữ liệu chuỗi thời gian, chẳng hạn như số liệu, hệ thống giám sát và dữ liệu đo từ xa, được hưởng lợi từ hoạt động ghi hiệu quả và khả năng mở rộng theo chiều ngang của Cassandra. Những khả năng này rất quan trọng để lưu trữ và quản lý khối lượng lớn dữ liệu được đánh dấu thời gian.
3. Ứng dụng web và di động : Cassandra cung cấp khả năng truy cập dữ liệu thông lượng cao và độ trễ thấp, khiến nó phù hợp với nền tảng web và di động có cơ sở người dùng lớn tạo ra lượng dữ liệu đáng kể. Điều này bao gồm các nền tảng truyền thông xã hội, ứng dụng trò chơi và trang web thương mại điện tử.
4. Phân tích dữ liệu lớn theo thời gian thực : Cassandra hỗ trợ xử lý dữ liệu lớn theo thời gian thực, khiến nó trở thành lựa chọn có giá trị cho các ứng dụng yêu cầu thông tin chi tiết ngay lập tức từ các bộ dữ liệu lớn. Ví dụ bao gồm các công cụ đề xuất và hệ thống phát hiện gian lận.
5. Kho dữ liệu phân tán : Các doanh nghiệp có bộ dữ liệu phân tán lớn có thể tận dụng Cassandra làm giải pháp kho dữ liệu. Khả năng sao chép dữ liệu trên nhiều trung tâm dữ liệu của nó đảm bảo tính sẵn sàng cao và khắc phục thảm họa.
6. Hệ thống nhắn tin : Thông lượng ghi và đọc cao của Cassandra khiến nó rất phù hợp với các hệ thống nhắn tin xử lý khối lượng dữ liệu lớn, chẳng hạn như ghi nhật ký sự kiện, đường kiểm tra hoặc hàng đợi tin nhắn.
7. Hệ thống quản lý nội dung và cá nhân hóa : Các ứng dụng yêu cầu phân phối nội dung được cá nhân hóa trên quy mô lớn, chẳng hạn như hệ thống quản lý nội dung, được hưởng lợi từ tốc độ và khả năng mở rộng của Cassandra trong việc cung cấp nội dung tùy chỉnh cho nhiều người dùng cùng một lúc.
8. Ứng dụng phân tán theo địa lý : Khả năng hỗ trợ của Cassandra dành cho nhiều trung tâm dữ liệu khiến nó trở thành lựa chọn tuyệt vời cho các ứng dụng yêu cầu dữ liệu phân bố theo địa lý. Nó đảm bảo truy cập dữ liệu có độ trễ thấp trên các khu vực khác nhau và mang lại khả năng phục hồi cao.
Mặc dù Apache Cassandra mạnh mẽ và có khả năng mở rộng nhưng nó có thể không phù hợp với mọi ứng dụng hoặc trường hợp sử dụng. Nó ít phù hợp hơn với các ứng dụng nặng về giao dịch, truy vấn phức tạp và các tình huống yêu cầu tính nhất quán cao hoặc thay đổi lược đồ nhanh chóng. Các hệ thống quản lý cơ sở dữ liệu quan hệ truyền thống (RDBMS) hoặc các giải pháp NoSQL khác có thể phù hợp hơn trong những trường hợp như vậy. Dưới đây là một số tình huống trong đó Cassandra có thể không phải là lựa chọn tối ưu :
Dự án quy mô nhỏ : Các yêu cầu về tài nguyên và độ phức tạp của Cassandra có thể quá mức đối với các dự án hoặc ứng dụng quy mô nhỏ có bộ dữ liệu hạn chế. Các giải pháp cơ sở dữ liệu đơn giản hơn có thể mang lại giải pháp thay thế hiệu quả hơn và dễ quản lý hơn.
Hệ thống giao dịch yêu cầu thuộc tính ACID : Cassandra không hỗ trợ đầy đủ các thuộc tính ACID (Tính nguyên tử, tính nhất quán, cách ly, độ bền). Nếu ứng dụng của bạn yêu cầu các giao dịch phức tạp thường thấy trong hệ thống tài chính hoặc ngân hàng thì RDBMS truyền thống có thể phù hợp hơn.
Tham gia các truy vấn và tập hợp nặng : Nếu ứng dụng của bạn phụ thuộc nhiều vào các phép nối, truy vấn phụ hoặc các tập hợp phức tạp, Cassandra có thể không phải là lựa chọn phù hợp nhất. Nó được thiết kế để ghi và đọc nhanh nhưng không dùng để xử lý truy vấn phức tạp.
Dữ liệu có yêu cầu nhất quán mạnh mẽ : Cassandra cung cấp tính nhất quán cuối cùng, có thể không phù hợp với các trường hợp sử dụng yêu cầu tính nhất quán cao cho mọi thao tác đọc và ghi.
Đọc và ghi có độ trễ thấp trong một cụm đơn : Mặc dù Cassandra hoạt động tốt trong môi trường phân tán nhiều nút, nhưng nó có thể không phải là lựa chọn tối ưu cho việc triển khai một nút hoặc cụm nhỏ yêu cầu đọc và ghi có độ trễ thấp.
Bộ nhớ Blob : Cassandra không được tối ưu hóa để lưu trữ các đối tượng nhị phân (blob) lớn như hình ảnh hoặc video. Các giải pháp lưu trữ khác phù hợp hơn để xử lý hiệu quả các đốm màu lớn.
Các ứng dụng yêu cầu truy vấn đặc biệt : Khả năng truy vấn của Cassandra bị hạn chế so với cơ sở dữ liệu SQL chính thức. Nó không phù hợp lắm cho các ứng dụng phụ thuộc nhiều vào truy vấn và báo cáo đặc biệt.
Trong Cassandra, thiết kế bảng được kết nối chặt chẽ với cách truy cập dữ liệu, nhấn mạnh vào các mẫu truy vấn thay vì chỉ tập trung vào mối quan hệ giữa các thực thể dữ liệu. Điều này khác với cách tiếp cận trong RDBMS, trong đó thiết kế lược đồ dựa trên các nguyên tắc chuẩn hóa.
Tiến hóa lược đồ nhanh : Nếu ứng dụng của bạn yêu cầu thay đổi thường xuyên đối với lược đồ cơ sở dữ liệu, việc quản lý lược đồ của Cassandra có thể kém linh hoạt hơn so với các hệ thống RDBMS truyền thống hoặc các giải pháp NoSQL khác.
Ứng dụng kho dữ liệu liên quan đến các truy vấn, kết nối và phân tích dữ liệu lịch sử phức tạp : Mặc dù Cassandra rất phù hợp với khối lượng công việc ghi nhiều và truy cập dữ liệu theo thời gian thực, nhưng nó có thể không phải là lựa chọn phù hợp nhất cho các tình huống lưu trữ dữ liệu yêu cầu các truy vấn phức tạp, tham gia và phân tích dữ liệu lịch sử.
Có một số khía cạnh thú vị của Cassandra mà tôi sẽ đề cập trong bài viết tiếp theo của mình. Hãy subscribe cho tôi để không bỏ lỡ nhé!