Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 33 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
33
Dung lượng
2,22 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH Hệ quản trị sở liệu (CO3021) MySQL & Cassandra GVHD: Nhóm: SV thực hiện: TS Võ Thị Ngọc Châu Vương Anh Khoa – 1711803 Nguyễn Phạm Duy An – 1710430 Nguyễn Xuân Trực – 1513804 Cao Nguyệt Minh – 1710188 Tp Hồ Chí Minh, Tháng 01/2020 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Mục lục Các tính lựa chọn 2 Tính lựa chọn cấu trúc lưu trữ cho tập 2.1 MySQL 2.1.1 InnoDB 2.1.2 Các kiểu liệu MySQL 2.2 Cassandra 2.2.1 Cấu trúc chung Cassandra 2.2.2 Các Kiểu liệu Cassandra 3 8 10 Tính thực hành với mục 3.1 MySQL 3.1.1 Tổng quan 3.1.2 Cấu trúc mục MySQL 3.1.3 Các câu lệnh DDL liên quan đến index MySQL 3.1.4 Ví dụ minh họa: 3.2 Cassandra 13 13 13 13 14 15 15 Tính thực hành phục hồi liệu 4.1 MySQL 4.1.1 Tóm tắt lý thuyết 4.1.2 Thực hành phục hồi liệu 4.2 Cassandra 18 18 18 18 19 tin liệu Tính thực hành lưu liệu 5.1 MySQL 5.1.1 Tóm tắt lý thuyết 5.1.2 Thực hành lưu liệu Windown 5.1.2.a Ví dụ 1: lưu database "quanlydean" 5.1.2.b Ví dụ 2: lưu database "quanlydean" 5.1.2.c Ví dụ 3: lưu database "quanlydean" 5.2 Cassandra 5.2.1 Snapshot tất khơng gian khóa 5.2.2 Snapshot khơng gian khóa 5.2.3 Snapshot bảng 5.2.4 Incremental Backup 5.2.5 Thực hành lưu liệu với Cassandra bằng hoàn dòng lệnh file batch toàn tự động 21 21 21 21 21 22 24 26 27 27 28 28 29 Tổng kết 30 Phân công công việc 30 Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 1/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Các tính lựa chọn Nhóm chọn tính sau để trình bày báo cáo: • Lựa chọn cấu trúc lưu trữ cho tập tin liệu • Thực hành với mục • Thực hành khơi phục liệu • Thực hành lưu liệu Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 2/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Tính lựa chọn cấu trúc lưu trữ cho tập tin liệu 2.1 MySQL • MySQL sở liệu hướng đối tượng Dữ liệu tổ chức thành nhiều ghi (record) Một record bao gồm nhiều trường liệu (field) giá trị tương ứng trường record Một table gồm nhiều record có cấu trúc field giống Trong mơ hình ERD table tương ứng với entity field record thuộc tính (attribute) entity • Theo mặc định, record xếp vật lí đĩa dựa PRIMARY KEY INDEX • Dạng lưu trữ hàng, cột, bảng vv MySQL hay hệ quản trị sở liệu khác cách lưu trữ luận lí nhằm giúp cho người dùng dễ dàng hiểu sử dụng sở liệu Tuy vậy, muốn hiểu việc MySQL lưu trữ liệu ổ cứng ta cần hiểu đến khái niệm Storage Engine Storage Engine thực chất cách MySQL lưu trữ liệu đĩa cứng MySQL lưu database thư mục nằm thư mục data Khi table tạo ra, MySQL lưu định nghĩa bảng file đuôi frm tên trùng với tên bảng tạo Ta tiến hành tìm hiểu Storage Engine sử dụng phổ biến với MySQL: InnoDB 2.1.1 InnoDB Một ghi vật lí MySQL sử dụng storage engine InnoDB gồm có phần: Field Start Offsets, Extra Bytes, Field Contents Name Size Field Start Offsets Extra Bytes Field Contents (F*1) (F*2) bytes bytes Tùy thuộc vào giá trị field Chữ ’F’ đại diện cho số field record Các ghi lưu trữ vật lí vào đơn vị, gọi "page" (hoặc "block") Mỗi page có độ dài cố định 16KB Một page gồm có phần xếp theo thứ tự sau: Fil Header, Page Header, Infimum + Supremum Records, User Records, Free Space, Page Directory, Fil Trailer Có thể thấy phần page record chứa liệu khoảng trống free space dùng để chèn record vào Trong nội dung báo cáo này, nhóm trình bày chi tiết cấu trúc lưu trữ vật lí ghi (record) 2.1.1.1 Field Start Offsets: • Về bản, phần gồm thông tin địa bắt đầu trường liệu • Ta có ví dụ minh họa sau: Giả sử có record có field Field có độ dài 1, Field có độ dài 2, Field có độ dài Trong trường hợp này, giá trị offset trường là: 1, (1+2), and (1+2+4) Các giá trị lưu theo chiều ngược lại nên lưu dạng nhị phân trở thành: 07,03,01 Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 3/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 2.1.1.2 Extra Bytes: • Là header gồm có bytes (fixed-size, 48 bits) Name Size Description info_bits: () () deleted_flag min_rec_flag n_owned heap_no n_fields 1byte_offs_flag next 16 bits ?? bit bit bit bit bits 13 bits 10 bits bit 16 bits record bị xóa record định nghĩa tối thiểu trước Số record Thứ tự record heap trang index Số trường record (1-1023) phần Field Start Offsets có độ dài byte Con trỏ đến record trang • Giả sử cho pointer trỏ đến điểm khởi đầu, InnoDB tìm điểm bắt đầu record cách: – Cho biến X = n_fields – Nếu 1byte_offs_flag == X = X * – Cho X = X + (Cộng thêm bytes phần Extra Bytes) – Điểm bắt đầu record địa pointer value - X 2.1.1.3 Field Contents • Đây phần chứa liệu thật field Các trường lưu trữ theo thứ tự định nghĩa • Cho ví dụ minh họa sau: CREATE TABLE T (FIELD1 VARCHAR(3), FIELD2 VARCHAR(3), FIELD3 VARCHAR(3)) Type=InnoDB; • Bảng T thực chất tạo với cột InnoDB tự động thêm vào "cột hệ thống" vào đầu để quản lí cột row ID, transaction ID rollback pointer • Tiếp theo, Thêm vào bảng vài record: INSERT INTO T VALUES (’PP’, ’PP’, ’PP’); INSERT INTO T VALUES (’Q’, ’Q’, ’Q’); INSERT INTO T VALUES (’R’, NULL, NULL); • Khi đó, giá trị nhị phân lưu đĩa cứng sau: 19 00 00 00 17 00 00 00 15 78 00 00 13 0D 00 00 0C 02 04 09 Hệ quản trị sở liệu - Niên khóa 2020-2021 06 BF 21 2A Field Start Offsets /* First Row */ Extra Bytes System Column #1 System Column #2 Trang 4/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 2.1.2 2.1.2.1 80 50 50 50 00 50 50 50 00 00 2D 00 84 System Column #3 Field1 ’PP’ Field2 ’PP’ Field3 ’PP’ 16 00 00 00 00 51 51 51 15 14 13 0C 00 80 0D 02 00 00 00 04 00 00 00 09 00 00 2D 00 Field1 ’Q’ Field2 ’Q’ Field3 ’Q’ 06 E1 22 2B 84 Field Start Offsets /* Second Row */ Extra Bytes System Column #1 80 System Column #2 System Column #3 94 00 00 00 80 52 94 14 13 0C 00 88 0D 00 00 00 00 04 00 00 00 09 00 00 00 2D Field1 ’R’ 06 74 23 2C 00 Field Start Offsets /* Third Row */ Extra Bytes System Column #1 System Column #2 84 System Column #3 Các kiểu liệu MySQL Các kiểu số nguyên: Các kiểu số nguyên tiêu chuẩn SQL INTEGER (or INT) SMALLINT hỗ trợ MySQL Và mở rộng tiêu chuẩn, MySQL hỗ trợ kiểu số nguyên khác TINYINT, MEDIUMINT, BIGINT Bảng liệt kê kiểu không gian lưu trữ đòi hỏi phạm vi chúng (Giá trị nhỏ nhất, lớn cho kiểu số nguyên có dấu, không dấu) 2.1.2.2 Type Length(byte) Min val(Signed) Max value(Signed) TINYINT SMALLINT MEDIUMINT INT BIGINT -128 -32768 -8388608 -2147483648 -9223372036854775808 127 32767 8388607 2147483647 92233720368 54775807 Kiểu dấu chấm động (Floating-Point Types) Kiểu liệu FLOAT DOUBLE mô tả gần giá trị số thực MySQL sử dụng byte để lưu trữ liệu FLOAT byte dành cho kiểu liệu DOUBLE • FLOAT(M,D): Một số chấm động (floating-point number) khơng thể khơng có dấu (unsigned) Có thể định nghĩa độ dài phần nguyên (M) độ dài phần thập phân (D) Điều không bắt buộc mặc định 10,2, 10 độ dài phần nguyên số số thập phân Phần thập phân sử dụng 24 vị trí cho số FLOAT • DOUBLE(M,D): Một số chấm động DOUBLE (Độ xác gấp 2) khơng thể khơng có dấu (unsigned) Có thể định nghĩa độ dài phần nguyên (M) độ dài phần thập phân Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 5/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính (D) Điều khơng bắt buộc mặc định 16,4, 16 độ dài phần nguyên độ dài phần thập phân Phần thập phân sử dụng tới 53 vị trí cho số DOUBLE REAL từ đồng nghĩa với DOUBLE 2.1.2.3 Kiểu dấu chấm cố định (Fixed-Point Types) Kiểu dấu chấm cố định (Fixed-Point data type) sử dụng để bảo vệ độ xác (precision), ví dụ với liệu tiền tệ Trong MySQL kiểu DECIMAL NUMERIC lưu trữ xác liệu số MySQL 5.6 lưu trữ giá trị DECIMAL theo định dạng nhị phân Trong SQL chuẩn, cú pháp DECIMAL(5,2) nghĩa độ xác (precision) 5, phần thập phân (scale), nghĩa lưu trữ giá trị có chữ số có số thập phân Vì giá trị lưu trữ -999.99 tới 999.99 Cú pháp DECIMAL(M) tương đương với DECIMAL(M,0) Tương tự DECIMAL tương đương với DECIMAL(M,0) M mặc định 10 Độ dài tối đa số cho DECIMAL 65 2.1.2.4 Kiểu liệu DATETIME, DATE, TIMESTAMP • DATETIME: Sử dụng cần giá trị lưu trữ hai thơng tin ngày tháng thời gian Ví dụ: 2020-03-20 07:30:45 • DATE: Sử dụng muốn lưu trữ thơng tin ngày tháng Ví dụ: 2020-03-20 • TIMESTAMP: Lưu trữ hai thông tin ngày tháng thời gian Giá trị chuyển đổi từ múi sang UTC lưu trữ, chuyển trở lại múi lấy liệu Kiểu liệu DATETIME sử dụng cần lưu trữ hai thông tin ngày tháng thời gian MySQL lấy hiển thị DATETIME theo định dạng ‘YYYY-MM-DD HH:MM:SS’ Và hỗ trợ phạm vi từ ’1000-01-01 00:00:00’ tới ’9999-12-31 23:59:59’ Kiểu liệu TIMESTAMP sử dụng muốn lưu trữ hai thông tin ngày tháng thời gian TIMESTAMP có phạm vi ’1970-01-01 00:00:01’ UTC tới ’2038-01-19 03:14:07’ UTC Sự khác biệt DATETIME TIMESTAMP giá trị TIMESTAMP chuyển đổi từ múi sang UTC lưu trữ, chuyển ngược trở lại từ UTC sang múi lúc lấy Còn kiểu liệu DATETIME khơng có thay đổi 2.1.2.5 Kiểu liệu CHAR VARCHAR Các field chia làm loại: fixed-length variable-length (độ dài cố định độ dài biến đổi) Chẳng hạn MySQL, field với type INT có độ dài cố định 4-byte Hoặc CHAR với độ dài cố định người dùng định nghĩa (0-255 bytes), DBMS lưu liệu dạng CHAR cách right-padding khoảng trắng để bù cho đủ độ dài định nghĩa Tuy truy xuất liệu khoảng trắng bị bỏ Còn field với type VARCHAR có độ dài thay đổi (Tuy độ dài tối đa định nghĩa trước, dao động khoảng 0-255) VARCHAR có byte prefix để lưu trữ độ dài giá trị Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 6/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Hình 1: Ví dụ lưu trữ liệu theo kiểu CHAR Hình 2: Ví dụ lưu trữ liệu theo kiểu VARCHAR 2.1.2.6 Kiểu liệu BLOB BLOB đối tượng nhị phân lớn (Binary Large OBject) chứa lượng lớn liệu Có bốn loại BLOB, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB Nhưng khác độ dài tối đa giá trị giữ Kiểu liệu BLOB thường dùng để lưu trữ liệu dạng hình ảnh Type Length TINYBLOB BLOB MEDIUMBLOB LONGBLOB 255 bytes 64 kb 16 Mb Gb Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 7/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 2.2 2.2.1 Cassandra Cấu trúc chung Cassandra Cassandra hệ quản trị sở liệu phân tán (NoSQL) Cơ sở liệu Cassandra phân tán nhiều máy hoạt động với (cluster) Cassandra xếp nút cluster theo định dạng vòng gán liệu cho chúng Keyspace vỏ bọc cho liệu Cassandra, kho chứa Column Family Tất liệu Cassandra đặt Keyspace nên tạo Keyspace cho tất các Column Family Các thuộc tính keyspace Cassandra bao gồm: • Yếu tố nhân rộng (Replication factor): số lượng máy cluster nhận liệu • Chiến lược đặt (Replica placement strategy): chiến lược để đặt vòng (chiến lược đơn giản , chiến lược cấu trúc , chiến lược liên kết mạng) Hình 3: Hình ảnh minh họa cấu trúc Keyspace Dữ liệu lưu trữ DB Cassandra thuộc dạng Key value store (KVS) Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 8/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Mơ hình liệu Cassandra tuân theo quy tắc hệ thống cột (the column family): • Column Family: đối tượng NoSQL nơi chứa cột liệu Nó tập hợp liệu chứa cặp “khóa – giá trị” Trong “khóa” ánh xạ đến giá trị gồm tập hợp cột Tương tự với RDBMS, column family bảng, cặp “khóa – giá trị” hàng Hình 4: Hình ảnh minh họa cấu trúc Column family • Cột tập hợp liệu (bộ 3) gồm tên cột, giá trị, mốc thời gian Hình 5: Hình ảnh minh họa cấu trúc cột • Siêu cột cột đặc biệt lưu trữ đồ (map) cột Nó giúp lưu trữ truy xuất liệu dễ dàng nhanh chóng Hình 6: Hình ảnh minh họa cấu trúc siêu cột Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 9/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Tính thực hành phục hồi liệu 4.1 4.1.1 MySQL Tóm tắt lý thuyết Khơi phục liệu (restore database) việc đưa liệu quay trở trạng thái thời điểm trước Chúng ta khơi phục lại sở liệu trước ta lưu sở liệu Để khôi phục lại sở liệu, ta dùng dùng câu lệnh với cú pháp sau: mysql -u [username] -p [database] < [filename].sql Trong đó: • username: tên user có quyền khơi phục lại database • database: tên database khơi phục • filename: tên file chứa liệu chép trước 4.1.2 Thực hành phục hồi liệu Ví dụ sau khôi phục sở liệu "quanlydean" sử dụng file "quanlydean_backup.sql" tạo từ trình backup trước đó: Bước 1: Mở phpMyAdmin tạo database có tên "quanlydean" Bước 2: Mở CMD thư mục "bin" thư mục cài đặt MySQL chạy lệnh ảnh Sau nhập password nhấn phím enter Và kết sau phục hồi liệu database "quanlydean" Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 18/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 4.2 Cassandra Các lưu có ý nghĩa chúng phục hồi tình keyspace bị xóa cụm khởi chạy từ liệu lưu nút bị thay Có thể khơi phục liệu lưu từ snapshot sử dụng incremental backups cần tất tệp incremental backup tạo sau snapshot Chủ yếu có hai cách để khôi phục liệu từ lưu Một sử dụng nodetool refresh khác sử dụng sstableloader Khôi phục cách sử dụng nodetool refresh: Lệnh nodetool referesh tải SSTables đặt vào hệ thống mà không cần khởi động lại Phương pháp sử dụng nút thay nút khơi phục Có thể khơi phục liệu từ snapshot schema tồn Giả sử tạo nút mới, làm theo bước đây: • Tạo lược đồ chưa tạo • Cắt bớt bảng, cần • Định vị thư mục ảnh chụp nhanh (/ var / lib / keyspacename / tablename UUID / snapshots / snapshotname) chép thư mục • SSTable ảnh chụp nhanh vào thư mục / var / lib / keyspace / tablename-UUID • Chạy nodetool để refresh Khôi phục sstableloader: Sstableloader tải tập hợp tệp SSTable cụm Cassandra Trình sstableloader cung cấp tùy chọn sau • Tải liệu bên ngồi • Tải SSTables có • Khơi phục snapshot Sstableloader không chép SSTables đến nút, mà cịn chuyển phần liệu có liên quan đến nút trì hệ số nhân Ở sstableloader sử dụng để khôi phục snapshot Làm theo bước để khôi phục sstableloader: Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 19/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính • Tạo lược đồ khơng tồn • Cắt bớt bảng cần thiết • Đưa liệu lưu đến nút từ AWS S3 Google Cloud MS Azure Ví dụ: Tải xuống liệu lưu / home / data • Chạy lệnh sstableloader -d ip / home / data Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 20/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Tính thực hành lưu liệu 5.1 MySQL 5.1.1 Tóm tắt lý thuyết Việc lưu (hay cịn gọi export backup) MySQL sử dụng nhờ câu lênh mysqldump, câu lệnh chuyển toàn liệu có database file Cú pháp câu lệnh sau (thực CMD thư mục "bin" thư mục cài đặt MySQL): mysqldump -u [username] -p [database] > [filename].sql Trong đó: • username: tên người dùng có quyền lưu sở liệu • database: tên sở liệu cần lưu • filename: tên file dùng để lưu liệu lưu, rõ đường dẫn cụ thể ổ đĩa khác Chúng ta đưa password vào câu lệnh trên, nhiên khiến người dùng khác có quyền truy cập vào máy chủ họ biết mật user Ví dụ câu lệnh sau lưu database có tên testdb file testdb_backup.sql lưu ổ đĩa C: mysqldump -u root -p testdb > "C:\Users\TRUC BK\Desktop\backup\testdb_backup.sql" 5.1.2 5.1.2.a Thực hành lưu liệu Windown Ví dụ 1: lưu database "quanlydean" dòng lệnh Chúng ta có database tên "quanlydean" thực lưu sau: Bước 1: Mở CMD thư mục "bin" thư mục cài đặt MySQL Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 21/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Bước 2: Gõ lệnh lưu nhập password Chúng ta thực gõ lệnh lưu, sau nhấn phím enter tiến hành nhập password user, rỗng để trống nhấn enter: Sau kết thúc lệnh tạo file lưu có tên "quanlydean_backup.sql" thư mục "backup" Desktop 5.1.2.b Ví dụ 2: lưu database "quanlydean" file batch File batch giúp tạo chương trình nhỏ để tự động thực việc lưu click vào mà không cần phải gõ gõ lại lệnh CMD Các bước thực sau: Bước 1: Thực tạo file batch với nội dung ảnh Lưu ý nội dung câu lệnh lưu, thêm vào password để click vào file, ta không cần nhập mật Sau nhập nội dung, ta lưu file thư mục "backup" ví dụ Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 22/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Bước 2: Thực lưu database Mỗi cần lưu, việc vào thư mục "backup" click vào file quanlydean_backup.bat việc lưu tự động thực Kết tạo file lưu ảnh bên Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 23/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 5.1.2.c Ví dụ 3: lưu database "quanlydean" hoàn toàn tự động Chúng ta thực lưu database "quanlydean" hoàn toàn tự động ứng dụng "Task Scheduler" hỗ trợ Window, bước thực sau: Bước 1: Mở ứng dụng "Task Scheduler" Giao diện ứng dụng bên dưới: Bước 2: Tạo Task Chúng ta tiến hành tạo Task cách nhấn vào nút "Create Task " (tại vị trí số ảnh), cửa sổ Tại tab "General", ta điền tên task (tại vị trí số ảnh) Sau đó, ta chuyển qua tab "Triggers" bấm vào nút "New", cửa sổ để cài đặt thông số thời gian thực việc lưu liệu Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 24/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Tiếp theo chuyển qua tab "Actions", ta chọn chương trình tự động chạy để thực việc lưu, chương trình (file batch) viết ví dụ 2: Hồn tất bước trên, tạo chương trình tự động giúp thực việc lưu database quanlydean ngày Ảnh bên thống kê kết tự động lưu: Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 25/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 5.2 Cassandra Cassandra hệ sở quản trị liệu phân tán (distributed database management system) Trong Cassandra, liệu lưu nút nhiều nút liệu trung tâm Cassandra hoạt động mà không bị đứt quãng nhiều nút hệ thống bị bảo trì/ sập nguồn Trong Cassandra, liệu lưu SSTable files Tuy nhiên, việc lưu liệu cần thiết trường hợp sau: • Bất lỗi xảy liệu ứng dụng phía người dùng Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 26/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính • Bất cẩn xóa liệu • Sập hệ thống làm cho phải dựng lại tồn • Dữ liệu bị hỏng • Cần để khơi phục cluster cũ hoạt động tốt • Lỗi ổ đĩa Cassandra cung cấp loại lưu liệu • Snapshop based backup • Incremental backup Snapshot based backup Cassandra cung cấp nodetool utility command line interface để quản lý cụm (cluster) Nodetool utility cung cấp lệnh để tạo (snapshot) liệu Lệnh snapshot truyền bảng ghi nhớ vào đĩa tạo snapshot cách tạo liên kết cứng tới SSTables SSTables bất biến Lệnh snapshot nodetool tạo chụp nút Để snapshot nhanh tồn cụm, lệnh nodetool snapshot phải chạy lệnh ssh song song, chẳng hạn pssh Ngoài ra, snapshot nút chụp Có thể snapshot tất khơng gian khóa (keyspace) cụm, số khơng gian khóa chọn định bảng khơng gian khóa Lưu ý cần phải có đủ dung lượng đĩa trống nút để chụp ảnh nhanh tệp liệu Lược đồ không lưu phương pháp Điều phải thực thủ công riêng biệt 5.2.1 Snapshot tất khơng gian khóa Nếu muốn snapshop tất khơng gian khóa node chạy lệnh sau: $ nodetool snapshot Phản hồi sau: Requested creating snapshot(s) for [all keyspaces] with snapshot name [1496225100] Snapshot directory: 1496225100 Địa snapshot /var/lib/data/keyspacename/tablename–UUID/ snapshots/1496225100 5.2.2 Snapshot khơng gian khóa Giả sử ta có khơng gian khóa university Để snapshot khơng gian khóa ta cần có tên snapshot để chạy lệnh sau: $ nodetool snapshot -t 2017.05.31 university Phản hồi sau: Requested creating snapshot(s) for [university] with snapshot name [2015.07.17] Snapshot directory: 2017.05.31 Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 27/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 5.2.3 Snapshot bảng Nếu ta muốn tạo snapshot bảng student khơng gian khóa university chạy lệnh sau: $ nodetool snapshot table student university Phản hồi sau: Requested creating snapshot(s) for [university] with snapshot name [1496228400] Snapshot directory: 1496228400 Sau tạo snapshot, ta chuyển tệp snapshot tới vị trí khác AWS S3, Google Cloud MS Azure Ta phải lưu schema trước Cassandra phục hồi liệu từ snapshot schema bảng tồn Ưu điểm: • Snapshot based backup đơn giản dễ quảng lý • Cassandra nodetool utility cung cấp lệnh nodetool clearsnapshot để xóa bỏ tệp snapshot Nhược điểm: • Với tập liệu lớn khó để lưu liệu hàng ngày cho khơng gian khóa • Giá đắt mà dịch chuyển liệu snapshot lớn tới nơi an toàn AWS S3 5.2.4 Incremental Backup Cassandra cung cấp chức incremental backup Theo mặc định, incremental backup bị tắt Ta bật tính cách thay đổi giá trị “incrementalbackups” thành “true” tệp cassandra.yaml Sau kích hoạt, Cassandra tạo liên kết cứng đến bảng ghi nhớ chuyển sang SSTable đến thư mục lưu thư mục liệu khơng gian khóa Trong Cassandra, Incremental Backup chứa tệp SSTable mới; chúng phụ thuộc vào snapshot cuối tạo Trong trường hợp incremental backup, cần dung lượng đĩa chứa liên kết đến tệp SSTable tạo kể từ snapshot đầy đủ cuối Ưu điểm: • Việc Incremental Backup làm giảm yêu cầu dung lượng ổ đĩa • Giảm chi phí dịch chuyển Nhược điểm: • Cassandra khơng tự động xóa tệp Incremental Backup Nếu ta muốn xóa tệp liên kết cứng phải viết tập lệnh riêng cho việc Khơng có cơng cụ tích hợp để xóa chúng • Tạo nhiều tệp kích thước nhỏ lưu Quản lý phục hồi tệp nhiệm vụ dễ • Khơng thể chọn tập hợp họ cột để incremental snapshot Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 28/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 5.2.5 Thực hành lưu liệu với Cassandra Bước 1: Mở cqlsh Cassandra Ta có cluster university, có bảng student Bảng student truy vấn qua câu lệnh "select * from student" Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 29/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Bước 2: Gõ lệnh "nodetool snapshot university" để lưu khơng gian khóa university Ta nhìn thấy list thực để chọn bảo phù hợp cho việc phục hồi liệu Tổng kết • Trong nội dung báo cáo, nhóm trình bày chức liên quan đến DBMS MySQL Cassandra: – Lựa chọn cấu trúc lưu trữ cho tập tin liệu – Thực hành với mục – Thực hành khôi phục liệu – Thực hành lưu liệu • Thơng qua việc thực báo cáo này, nhóm tìm hiểu học hỏi thêm nhiều kiến thức hệ quản trị sở liệu MySQL Cassandra Đối với MySQL, hệ quản trị sở liệu phổ biến nên việc tìm tài liệu ví dụ tương đối đơn giản so với Cassandra Chính mà nhóm tự đánh giá phần liên quan đến MySQL viết chi tiết so với Cassandra Tuy nhiều thiếu sót nhóm cố gắng để nghiên cứu tìm hiểu lý thuyết thực ví dụ liên quan đến hệ quản trị sở liệu Phân cơng cơng việc • Vương Anh Khoa: Tìm hiểu viết báo cáo cho tính Lựa chọn cấu trúc lưu trữ cho tập tin liệu Thực hành với mục MySQL Tổng hợp format báo cáo • Cao Nguyệt Minh: Tìm hiểu viết báo cáo cho tính Thực hành phục hồi liệu Thực hành lưu liệu Cassandra Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 30/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính • Nguyễn Xn Trực: Tìm hiểu viết báo cáo cho tính Thực hành phục hồi liệu Thực hành lưu liệu MySQL • Nguyễn Phạm Duy An: Tìm hiểu viết báo cáo cho tính Lựa chọn cấu trúc lưu trữ cho tập tin liệu Thực hành với mục Cassandra Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 31/32 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính References [1] So sánh kiểu CHAR VARCHAR MySQL https://www.vertabelo.com/blog/comparing-char-and-varchar-data-types-indifferent-database-engines/ [2] Các kiểu liệu MySQL https://openplanning.net/10321/du-lieu-va-cau-truc-trong-mysql [3] InnoDB storage engine https://dev.mysql.com/doc/internals/en/innodb.html [4] MySQL Indexex manual https://dev.mysql.com/doc/refman/5.7/en/innodb-indexes.html [5] Ví dụ sử dụng index MySQL https://thlinh.com/cach-danh-index-co-ban-trong-mysql/ [6] Khái niệm lập mục Apache Cassandra https://www.geeksforgeeks.org/concept-of-indexing-in-apache-cassandra/ [7] Làm quen với Cassandra: Kiểu liệu CQL sử dụng GoCQL https://code.tutsplus.com/vi/tutorials/getting-started-with-cassandraunderstanding-various-cql-data-types cms-28110 [8] Cassandra - Mơ hình liệu https://www.tutorialspoint.com/cassandra/cassandra_data_model.htm [9] https://8kmiles.com/blog/cassandra-backup-and-restore-methods/ [10] https://www.codehub.com.vn/Sao-luu-va-khoi-phuc-co-so-du-lieu-trong-MySQL [11] Cassandra backup and restore methods https://8kmiles.com/blog/cassandra-backup-and-restore-methods/ Hệ quản trị sở liệu - Niên khóa 2020-2021 Trang 32/32