Mô hình dữ liệu, tạo và chỉnh sửa bảng trong Cassandra

Mô hình dữ liệu, tạo và chỉnh sửa bảng trong Cassandra

Cassandra là một quản trị hệ cơ sở dữ liệu phân tán mã nguồn mở được thiết kế để xử lý một khối lượng lớn dữ liệu giàn trải trên nhiều node mà vẫn đảm bảo tính sẵn sàng cao (Highly Availability), khả năng mở rộng hay thu giảm số node linh hoạt (Elastic Scalability) và chấp nhận một số lỗi (Fault Tolerant). Nó được phát triển bởi Facebook và vẫn còn tiếp tục phát triển và sử dụng cho mạng xã hội lớn nhất thới giới này. Năm 2008, Facebook chuyển nó cho cộng đồng mã nguồn mở và được Apache tiếp tục phát triển đến ngày hôm nay. Cassandra được coi là sự kết hợp của Amazon’s Dynamo và Google’s BigTable.

Cassandra là gì?

Tạo user và cấp quyền

Keyspace là gì?

Keyspace là một kho chứa các Column Family. Tất cả dữ liệu của Cassandra được đặt trong Keyspace nên có thể tạo một Keyspace duy nhất cho tất các các Column Family. Nhưng ta hoàn toàn có thể tạo nhiều Keyspace cho mỗi dự án khác nhau.Tất cả dữ liệu trong Cassandra sẽ đặt trong một keyspace. Nó có thể được xem như là một cơ sở dữ liệu trong RDBMS, nó là một tập hợp các bảng. Trong trường hợp của Cassandra, một keyspace là một tập hợp hệ thống cột.

Mô hình dữ liệu Cassandra

Mô hình dữ liệu Cassandra tuân theo quy tắc hệ thống cột (the column family).

  • Column Famili: là một đối tượng của NOSQL nơi chứa các cột dữ liệu. Nó là một tập hợp dữ liệu chứa các cặp “khóa – giá trị”. Trong đó “khóa” được ánh xạ đến một giá trị gồm tập hợp các cột. Tương tự với RDBMS, column family là một bảng, mỗi cặp “khóa – giá trị” là một hàng.
  • Cột là một tập hợp dữ liệu (bộ 3) gồm tên cột, giá trị, và mốc thời gian.
  • Siêu cột một cột đặc biệt lưu trữ bản đồ (map) của các cột. Nó giúp lưu trữ cũng như truy xuất dữ liệu dễ dàng và nhanh chóng hơn.

Thao tác với cơ sở dữ liệu

Tạo Keyspace

Trước khi tạo Keyspace bạn phải đăng nhập vào Cassandra, cách đăng nhập các bạn có thể xem bài viết tạo user và cấp quyền nhé.

Cú pháp
cassandra@cqlsh> CREATE KEYSPACE keyspace_name WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;

hoặc

cassandra@cqlsh> CREATE KEYSPACE keyspace_name WITH replication = { 'class' : 'NetworkTopologyStrategy'[, '<data center>' : <integer>, '<data center>' : <integer>] . . . }; AND durable_writes = true;

Trong đó keyspace_name là tên Keyspace muốn tạo.

Thuộc tính của Keyspace
‘class’:’SimpleStrategy’ or ‘NetworkTopologyStrategy’ Bắt buộc có. “SimpleStrategy” dùng cho Single Datacenter. “Network…” dùng cho Multi Datacenter.
‘replication_factor’: <number of replicas> Cần thiết nếu “class” là SimpleStrategy. Số lượng bản sao của dữ liệu.
‘<first data center>’: <number of replicas> Cần thiết nếu “class” là NetworkTopologyStrategy. Bạn phải cung cấp tên của Datacenter và số lượng bản sao của dữ liệu.
‘<next data center>’: <number of replicas> Cần thiết nếu “class” là NetworkTopologyStrategy. Bạn phải cung cấp tên của Datacenter tiếp theo và số lượng bản sao của dữ liệu trên Datacenter  tiếp đó.
durable_writes: true/false Khi thiết lập giá trị “false” thì dữ liệu sẽ được khi nhưng bỏ qua việc ghi LOG. Do vậy hãy cẩn thận với tùy chọn này để tránh mất dữ liệu, tuyệt đối không thiết lập khi “class” là  SimpleStrategy.

[quangcao1]

Ví dụ
SimpleStrategy
cassandra@cqlsh> CREATE KEYSPACE projectA WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} AND durable_writes = true;
NetworkTopologyStrategy
cassandra@cqlsh> CREATE KEYSPACE projectB WITH replication = { 'class' : 'NetworkTopologyStrategy','dc1' : 3, 'dc2' : 5} AND durable_writes = true;

Liệt kê các Keyspace đã tạo:

cassandra@cqlsh> SELECT * FROM system.schema_keyspaces;

Chọn Keyspace:

cassandra@cqlsh>use <keyspaces_name>;

Tạo và chỉnh sửa bảng

Tạo bảng

Một bảng tương ứng với 1 cột trong Cassandra, để tạo bảng sử dụng lệnh CREATE TABLE.

root@cqlsh:keyspace_test> CREATE TABLE IF NOT EXISTS student (id int,name text,email text,phone int,PRIMARY KEY (id));
Liệt kê danh sách bảng:
root@cqlsh:keyspace_test> describe tables;
Xem cấu trúc bảng
root@cqlsh:keyspace_test>  DESCRIBE student;
Click vào ảnh để xem rõ hơn
Chỉnh sửa bảng

Ví dụ thêm class vào bảng student đã tạo sử dụng cú pháp:

root@cqlsh:keyspace_test> ALTER TABLE student ADD address text;
Click vào ảnh để xem rõ hơn
Chèn và cập nhật dữ liệu trong bảng

Chèn dữ liệu sử dụng cú pháp sau:

INSERT INTO student (id, address, class, email, name, phone) VALUES (001, 'Vietnam', 'A1', '[email protected]' ,'ABC' , 09999999);

Cập nhật dữ liệu:

UPDATE student SET email='[email protected]' WHERE id=1;
Truy vấn dữ liệu

Để truy vấn dữ liệu sử dụng lệnh SELECT

 SELECT * FROM student;
Click vào ảnh để xem rõ hơn

 

Trên đây là một số thao tác cơ bản trong Cassandra. Chúc các bạn thành công.