Cassandra là gì? Cấu trúc dữ liệu của Cassandra

Nói về cơ sở dữ liệu thì chắc ai cũng nghĩ ngay đến hệ quản trị cơ sở dữ liệu quan hệ như Mysql, PostgreSQL, hay NoSQL như MongoDB, DynamoDB, Cassandra…Và trong số đó, Apache Cassandra (Cassandra) đang thu hút sự chú ý đặc biệt gần đây. Vậy Cassandra là gì chúng ta cùng tìm hiểu nhé.

Cassandra là gì?

Apache Cassandra là một cơ sở tài liệu NoSQL phân tán, bắt đầu được tăng trưởng 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 tàng trữ tài liệu bằng cách phân tán tài liệu ra những nodes khác nhau trong một cluster để bảo vệ việc giải quyết và xử lý tài liệu nhanh gọn và bảo đảm an toàn dù có một hoặc 1 số ít nodes xảy ra lỗi .

Cấu trúc dữ liệu

Dữ liệu được tàng trữ trong DB của Cassandra thuộc dạng Key value store ( KVS ) .

Có thể tạo được nhiều table trong database nhưng mà giữa các table sẽ không có mỗi quan hệ nào. Nhiều table được tổng hợp lại thành keyspace.

Thông thường database trong NoSQL thì không thiết yếu phải tạo schema ngay lúc đầu. Thế nhưng Cassandra thì lại khác. Trước khi insert tài liệu thì cần phải tạo keyspace và schema của table .
Có thể triển khai được 1 số câu query như select, update, insert, delete, drop .

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. 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.

Tổng quan về Apache Cassandra

Apache Cassandra là một NoSQL Database, tàng trữ tài liệu dưới dạng wide-column bằng cách tích 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.

casandra 1
Ngoài ra, những bạn hoàn toàn có thể tìm hiểu thêm điểm khác nhau giữa Cassandra và RDBMS ( Relational Database Management System ) trong bảng dưới đây :
casandra 2

NoSQL là gì?

Khi nghe đến thuật ngữ “ No SQL ” mọi người thường có khuynh hướng nghĩ rằng, nó là sự vô hiệu RDBMS ( Relational Database Management System-Hệ thống quản trị cơ sở tài liệu quan hệ ) và thay thế sửa chữa bằng KVS, nhưng thực ra không phải vậy. Hàm ý của nó là RDBMS vẫn sử dụng trong những nghành nghề dịch vụ mà RDBMS hoạt động giải trí tốt, còn với những nghành nghề dịch vụ không tương thích với RDBMS thì sử dụng những middleware thích hợp hơn. NoSQL đúng mực mang ý nghĩa là Not Only SQL ( Không chỉ SQL ) .
Nếu so sánh NoSQL middleware với RDBMS thì có sự độc lạ sau :
casandra 3

Một số đặc trưng chi tiết của NoSQL middleware

  • Hoạt động nhanh
  • Là data model (Mô hình dữ liệu) chứ không phải là relation model (Mô hình quan hệ)
  • Kiến trúc tỷ lệ
  • Được xây dựng bởi commodity server
  • Giản đồ miễn phí
  • Nó không có SPOF (điểm duy nhất của sự thất bại)
  • Tự động sao chép sang nhiều đơn vị
  • Cho phép lựa chọn tính nhất quán hoặc nhất quán cuối cùng
  • Không có ngôn ngữ truy vấn mạnh như SQL và chỉ có thể thực hiện các truy vấn đơn giản

Các tính năng ưu việt của Cassandra

① Thích hợp để sử dụng thực tiễn

② Khả năng chịu lỗi cao

③ Kiến trúc không có SPOF ( một điểm gây tổn hại )
④ Mức độ tự do trấn áp đồng điệu
⑤ Mô hình tài liệu nhiều mẫu mã
⑥ Có thể tăng cường cải tổ thông lượng cho tuyến tính
⑦ Tính khả dụng cao
⑧ Hỗ trợ những ngôn từ khác nhau dưới dạng client code
⑨ Dễ dàng chớp lấy trạng thái bên trong của sever bằng JMX / Dễ giám sát
Điểm đặc biệt quan trọng mê hoặc trong những mục này là 3 đặc trưng sau : ③ “ Kiến trúc không có SPOF ”, ⑤ “ Mô hình tài liệu phong phú và đa dạng ” và ⑧ “ Hỗ trợ những ngôn từ khác nhau dưới dạng client code ”
Trước hết, không có SPOF vì kiến trúc của Cassandra không có nút chính. Kết quả là, hàng loạt mạng lưới hệ thống sẽ không dừng lại do một phần nào đó bị thất bại, service vẫn liên tục được quản lý và vận hành, thế cho nên hoàn toàn có thể nói rằng năng lực chịu lỗi là rất cao .
Trong Cassandra, tài liệu được sao chép và phân phối cho mỗi nút, và những giải pháp chống mất tài liệu cũng được vận dụng can đảm và mạnh mẽ. Ngoài ra, như đã đề cập trong ⑨, bạn hoàn toàn có thể chớp lấy và giám sát trạng thái bên trong của sever một cách chi tiết cụ thể, ví dụ điển hình như bao nhiêu tài liệu được ghi / đọc bởi JMX. Ngoài ra, việc thêm một máy ( nút ) hoàn toàn có thể kỳ vọng cải tổ được hiệu suất tuyến tính tương đối .
Dựa vào đặc trưng này, những công ty như Twitter và Digg sử dụng Cassandra để giảm thiểu ngân sách hoạt động giải trí hơn là sử dụng theo cách quản lý và vận hành chia dọc + Memcached trong RDBMS .

Về mô hình dữ liệu, Cassandra có mô hình dữ liệu phong phú như mô hình dữ liệu của Bigtable. Khác biệt so với mô hình quan hệ của RDBMS, nó giúp dễ hình dung ra được hình ảnh mình đang tính toán trong đầu.

Về tương hỗ những ngôn từ khác nhau được liệt kê ở điểm thứ ba là vì Cassandra thu thập dữ liệu bằng framework có tên là Thrift. Thrift có một chính sách để tiếp xúc với nhiều những ngôn từ khác nhau, vì thế người mua Cassandra hoàn toàn có thể đối ứng với nhiều ngôn từ khác nhau .
Nếu Thrift diễn đạt IDL ( Ngôn ngữ định nghĩa giao diện ), nó sẽ tự động hóa tạo ra mã của phần tiếp xúc. Vì Cassandra đã định nghĩa IDL của Thfift (. thrift ), hoàn toàn có thể chạy ứng dụng Cassandra bằng những ngôn từ sau, ví dụ :

  • C ++
  • Java
  • Python
  • PHP
  • Ruby
  • Erlang
  • Perl
  • Haskell
  • C #
  • Objective-C
  • Smalltalk
  • OCaml

Trên đây là những thông tin liên quan đến Cassandra do dean2020.edu.vn đã tổng hợp và chia sẻ đến các bạn. Hy vọng rằng với những chia sẻ trên đây sẽ giúp bạn có thêm những kiến thức bổ ích, và đừng quên theo dõi bài viết của chúng tôi để cập nhật những kiến thức mới bạn nhé!

5/5 - (1 vote)

Bài viết liên quan

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments