Apache Cassandra là một cơ sở dữ liệu NoSQL phân tán, ban đầu được phát triển bởi Facebook và trở thành công cụ nguồn mở năm 2008. Sau đó được chuyển giao cho Apache từ năm 2009. Cassandra lưu trữ dữ liệu bằng cách phân tán dữ liệu ra các nodes khác nhau trong một cluster để đảm bảo việc xử lý dữ liệu nhanh chóng và an toàn dù có một hoặc một số nodes xảy ra lỗi.

Trước khi tìm hiểu sâu về Apache Cassandra, ta cần phân biệt giữa khái niệm NoSQL và Relational Database:

– Relational Database (Cơ sở dữ liệu quan hệ) lưu trữ dữ liệu có cấu trúc dưới dạng các table với các row và column đồng thời sử dụng SQL(Structured Query Language) để thực hiện các thao tác trên cơ sở dữ liệu này. SQL cho phép người dùng có thể truy cập dữ liệu có cấu trúc một cách nhanh chóng, dễ dàng. Người dùng có thể trích xuất được nhiều thông tin có giá trị bằng việc kết hợp nhiều query khác nhau,… Tuy nhiên, Relational Database cũng có một số điểm hạn chế như chúng ta phải định nghĩa schema trước khi có thể xây dựng cơ sở dữ liệu, các dữ liệu phải có cấu trúc tương tư nhau,… Một số ví dụ về dạng cơ sở dữ liệu này là Oracle, MySQL, SQLite,..

– NoSQL Database là một dạng cơ sở dữ liệu được thiết kế để khắc phục một số điểm yếu của Relational Database bằng cách cho phép người dùng lưu trữ các dữ liệu có cấu trúc khác nhau (schema-free). Mỗi loại NoSQL Database lại có cách lưu trữ dữ liệu riêng, ví dụ như Casandra và HBase lưu trữ dữ liệu dưới dạng Column còn MongoDB, Apache CouchDB lại lưu trữ dưới dạng Document,…[1]. Tuy nhiên NoSQL chỉ hỗ trợ các query đơn giản và người dùng không thể thực hiện được các query phức tạp như trong Relational Database.

Apache Cassandra là một NoSQL Database, lưu trữ dữ liệu dưới dạng wide-column bằng cách kết hợp cả dạng key-value và dạng table. Thành phần chính của Cassandra là Keyspace với 3 thuộc tính sau:

– Replication factor: quy định số lượng nodes trong cluster sẽ nhận bản copy của cùng một dữ liệu

– Replica placement strategy: quy định cách lưu trữ các replicas, ví dụ như simple strategy, old network topology strategy, network topology strategy,..

– Column families: dùng để mô tả cấu trúc của dữ liệu. Mỗi một Column family có nhiều rows và mỗi row lại có nhiều columns theo thứ tự nhất định (khác với Relational Database, người dùng có thể tự do thêm column vào bất kỳ lúc nào và các row không nhất thiết phải có cùng các columns). Thông thường mỗi Keyspace thường có ít nhất một hoặc nhiều column families.

Cassandra Column Family

Ngoài ra, các bạn có thể tham khảo điểm khác nhau giữa Cassandra và RDBMS(Relational Database Management System) trong bảng dưới đây[2]:

[1]     “NoSQL,” Wikipedia. 28-Dec-2018. https://en.wikipedia.org/wiki/NoSQL

[2]     tutorialspoint.com, “Cassandra Data Model,” www.tutorialspoint.com. [Online]. Available: https://www.tutorialspoint.com/cassandra/cassandra_data_model.htm. [Accessed: 10-Jan-2019].

Tháng Một 10, 2019
ITechSeeker