1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI TẬP LỚN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MySQL cassandra

42 56 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 42
Dung lượng 5,27 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA TPHCM BÀI TẬP LỚN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU MySQL & Cassandra GVHD: Võ Thị Ngọc Châu Nhóm: Họ tên MSSV Trần Chương Trình 1713669 Mai Văn Duyên 1811756 Phạm Minh Khoa 1711791 Nguyễn Văn Quý 1813760 Mục Lục I Lựa chọn cấu trúc lưu trữ cho tập tin dữ liệu MySQL 1.1 Inno DB 1.2 Các dữ liệu MySQL Cassandra 2.1 Cấu trúc chung của Cassandra II Thực hành với mục 14 MySQL 14 1.1 Lý thuyết dạng mục 14 1.2 Cấu trúc mục 14 1.3 Ví dụ minh họa 18 Cassandra 19 2.1 Lý thuyết dạng mục 19 2.2 Cấu trúc mục 22 2.3 Kd – tree: 23 2.4 Ví dụ minh họa 24 Tổng kết 25 III Tính phục hồi dữ liệu 26 Lý thuyết 26 1.1 MySql 26 1.2 Cassandra 27 Ứng dụng vào thực hành 27 2.1 Restore data mysql sử dụng xampp ubuntu 27 2.2 Restore database cassandra 30 IV Tính lưu dữ liệu 35 SQL 35 1.1 Tóm tắt lý thuyết 35 1.2 Thực hành 35 Cassandra 38 2.1 Cơ sở lí thuyết 38 2.2 Thực hành 40 V Tổng kết 41 VI Phân chia công việc 41 I Lựa chọn cấu trúc lưu trữ cho tập tin dữ liệu MySQL MySQL hệ thống quản trị sở liệu mã nguồn mở (gọi tắt RDBMS) hoạt động theo mơ hình client-server ới RDBMS viết tắt Relational Database Management System MySQL tích hợp apache, PHP MySQL quản lý liệu thông qua sở liệu Mỗi sở liệu có nhiều bảng (table) quan hệ chứa nhiều ghi (record), mà record gồm nhiều trường liệu (field) MySQL có cách truy xuất mã lệnh tương tự với ngôn ngữ SQL Trong mơ hình ERD bảng tương ứng với thực (entity) và liệu là thuộc tính thực thể Theo mặc định, record sẽ xếp vật lý đĩa (disk) dựa PRIMARY KEY INDEX Dạng lưu trữ hàng, cột, bảng MySQL hay hệ quản trị sở liệu khác là cách lưu trữ luận lý nhằm giúp người dùng dễ dàng hiểu và sử dụng sở liệu Tuy vậy, muốn hiểu việc MySQL lưu trữ liệu ổ cứng nào t cần hiểu đến khái niệm Storage Engine Storage Engine là cách MySQL lưu trữ liệu đĩa cứng MySQL lưu database là thư mục nằm thư mục data Khi table tạo ra., MySQL sẽ lưu định nghĩa bảng file đuôi frm và tên trùng với tên bảng tạo Ta sẽ tiến hành tìm hiểu Storage Engine sử dụng phổ biến với MySQL: InnoDB 1.1 Inno DB Một ghi vật lý cảu MySQLsử dụng Storage Engine InnoDB sẽ gồm có phần : Field Start Offsets, Extra Bytes, Field Contents Name Size (bytes) Field Start Offsets (F*1) or (F*2) (F: số field record) Extra Bytes Field Contents Tùy vào giá trị field Các ghi sẽ lưu trữ vật lí vào đơn vị, gọi là “page” hoặc “block” Một page có độ dài cố dịnh là 16KB Một page gồm có phần tử xếp theo thứ tự sau: Fill Header, Page Header, Infimum + Supermum Records, User Records, Free Space, Page Directory, Fill Trailer Có thể thấy phần page là record chứa liệu và khoảng rỗng free space dùng để chèn record vào Trong nội dung bài báo cáo này, nhóm sẽ trình abỳ chi tiết cấu trúc lưu trữ vật lí cảu ghi (record) a) Field Start Offsets - Về bản, phần này gồm thông tin địa chỉ bắt đầu trường liệu - Giả sử có record có field: Field 1, Field 2, Field có độ dài là 1, 2, Các giá trị offset trường sẽ là: 1, 3, Các giá trị này lưu theo chiều ngược lại và dạng nhị phân: 06, 03, 01 b) Extra bytes: - Là header gồm có bytes (fixed-size, 48 bits) Name Size (bits) Description Info_bits: () () Deleted_flag 1 if record deleted Min_rec_flag 1 if record predefined N_owned Number of record Heap_no 13 Order record in heap of index’s page N_fields 10 Number of field in record byte_off_flag 1 if length oif Filed Start Offsets = byte Next 16 bits 16 Pointer to next record in page Giả sử cho pointer đến điểm khởi đầu, InnoDB tìm hiểu bắt đầu cảu record bằng cách: + Cho biến X = n_fields + Nếu 1byte_offs_flag == X = X*2 + Cho X = X+6 + Điểm bắt đầu record địa chỉ pointer value – X c) Field Contents - Đây là phần chứa liệu thật field Các trường lưu trữ theo đúng thứ tự định nghĩa - Cho ví dụ sau: CREATE TABLE T (FIELD1 VARCHAR(3), FIELD2 VARCHAR(3), FIELD3 VẢCHAR(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 sẽ sau: 19 17 15 13 0C 06 Field Start Offsets /* First Row */ 00 00 78 0D 02 BF Extra Bytes 00 00 00 00 04 21 System Column #1 00 00 00 00 09 2A System Column #2 80 00 00 00 2D 00 84 System Column #3 50 50 Field1 ’PP’ 50 50 Field2 ’PP’ 50 50 Field3 ’PP’ 16 15 14 13 0C 06 Field Start Offsets /* Second Row */ 00 00 80 0D 02 E1 Extra Bytes 00 00 00 00 04 22 System Column #1 00 00 00 00 09 2B 80 System Column #2 00 00 00 2D 00 84 System Column #3 51 Field1 ’Q’ 51 Field2 ’Q’ 51 Field3 ’Q’ 94 94 14 13 0C 06 Field Start Offsets /* Third Row */ 00 00 88 0D 00 74 Extra Bytes 00 00 00 00 04 23 System Column #1 00 00 00 00 09 2C System Column #2 80 00 00 00 2D 00 84 System Column #3 52 ield1 ’R’ 1.2 Các dữ liệu MySQL a) Các kiểu số nguyên Các kiểu số nguyên tiêu chuẩn SQL INTEGER (or INT) và 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 sẽ 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ố ngun có dấu, khơng dấu) Type TINYINT Length(byte) Min val(Signed) -128 Max val(Signed) 127 SMALLINT MEDIUMINT INT BIGINT -32768 -838608 -2147483648 9223372036854775808 32767 8388607 2147483647 9223372036854775807 b) Kiểu dấu chấm động (Floating-Point Types) Kiểu liệu FLOAT DOUBLE mô tả gần đúng 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 là độ 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) và độ dài phần thập phân - D) Điều không bắt buộc mặc định 16,4, 16 là độ dài phần ngun cịn là độ 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 c) 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 và 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 là độ xác (precision) 5, phần thập phân (scale), nghĩa là lưu trữ giá trị có chữ số có số thập phân Vì vậy giá trị lưu trữ sẽ -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 là 10 Độ dài tối đa số cho DECIMAL 65 d) Kiểu dữ 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ữ chỉ thơng tin ngày tháng Ví dụ: 202003-20 • TIMESTAMP: Lưu trữ hai thơng tin ngày tháng thời gian Giá trị sẽ chuyển đổi từ múi giờ sang UTC lưu trữ, sẽ chuyển trở lại múi giờ 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 giờ sang UTC lưu trữ, chuyển ngược trở lại từ UTC sang múi giờ lúc lấy Cịn kiểu liệu DATETIME khơng có thay đởi e) Kiểu dữ liệu CHAR VARCHAR Các field chia làm loại: fixed-length variable-length (độ dài cố định và độ dài biến đổi) Chẳng hạn MySQL, field với type INT sẽ 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 sẽ lưu liệu dạng CHAR bằng cách right-padding khoảng trắng để bù cho đủ độ dài định nghĩa Tuy vậy truy xuất liệu khoảng trắng sẽ bị bỏ Còn field với type VARCHAR sẽ có độ dài thay đổi (Tuy vậy độ dài tối đa định nghĩa trước, dao động khoảng 0-255) VARCHAR sẽ có byte prefix để lưu trữ độ dài giá trị 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 f) Kiểu dữ 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, và LONGBLOB Nhưng chỉ 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 TINYBLOB BLOB MEDIUMBLOB LONGBLOB Length 255 bytes 64 kb 16 Mb Gb Cassandra 2.1 Cấu trúc chung của 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: o Yếu tố nhân rộng (Replication factor): số lượng máy cluster sẽ nhậnđược liệu o 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) Mơ hình liệu Cassandra tn 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ị” là 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 Column - 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 và nhanh chóng Hình 6: Hình ảnh minh họa cấu trúc siêu cột 2.1 Các kiểu dữ liệu Cassandra _ Thực backup database e_commerce vào file sql _ Sau xóa toàn data có table product và check lại _ Restore database e_commerce từ file backup _ Kiểm tra lại database sau backup: 2.2 Restore database cassandra Restore bằng sstableloader Sử dụng snapshot _ Ban đầu ta có keyspace : tutorialspoint, table : emp với liệu tạo sẵn _ Insert thêm column và review table: _ Tạo snapshot cho table emp , check directory tạo cho snapshot _ Copy snapshot vừa tạo vào directory /home/ubuntu/tutorialspoint/emp/ _ Xóa data table emp và check lại xóa data _ Stop cassandra daemon , sau start lại và check table emp khơng cịn tồn _ Restore bằng sstableloader sử dụng snapshot tạo: _ Check lại table emp giống với lúc tạo snapshot Restore incremental backup thực hiện tương tự So sánh quá trình thực hiện: Khi tạo snapshot table cassandra, sau xóa số row table bằng lệnh delete cqlsh tiến hành restore lại table này bằng snapshot tạo khơng restore row bị xóa Trong mysql restore lại row xóa bằng lệnh delete IV Tính lưu dữ liệu SQL 1.1 Tóm tắt lý thuyết Sử dụng câu lệnh mysqldump, câu lệnh sẽ chuyển toàn liệu database file Cú pháp câu lệnh sau: mysqldump -u [username] -p [database] > [filename].sql Trong đó: - username: là tên người dùng - database: là sở liệu cần lưu - filename: là file lưu liệu lưu, là đường dẫn tuyệt đối đến Sau thực thi dịng lên, cmd sẽ u cần nhập password, là password username Ví dụ: mysqldump -u root -p example >"C:\Users\trinhtran\Desktop\Backup\example_backup.sql" 1.2 Thực hành Sao lưu lệnh Chúng ta có database têm assignmentdbm thực lưu: Bước 1: Mở CMD thư mục “bin” MySQL Bước 2: Gõ lệnh lưu và nhập password mysqldump -u root -p assignmentdbm > "C:\Users\trinhtran\Desktop\Backup\assignment_backup.sql" Ta sẽ có kết sau: Sao lưu file batch: Giúp chúng ta lưu liệu mà không cần gõ gõ lại dòng lệnh Để là điều đó, ta làm theo bước sau đây: Bước 1: Tạo file batch có nộp dung sau: Bước 2: Lưu lại, sau chạy file batch CMD sẽ lênh yêu cầu nhập password: Sau nhập password, liệu sẽ lưu file backup: Cassandra 2.1 Cơ sở lí thuyết Cassandra hệ sở 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 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: - Dữ liệu bị hỏng - Cần để khôi phực cluster cũ hoạt động tốt - Lỗi ổ đĩa - Bất cẩn xóa liệu - Sập hệ thống Cassandra cung cấp loại lưu: - Snapshot base backup Incrematal 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 và tạo snapshot bằng 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 tất không gian khóa: Câu lệnh: $ nodetool snapshot Snapshot khơng gian khóa $ nodetool snapshot -t [keyspace] Keyspace: tên khơng gian khóa Snapshot bảng: $ nodetool snapshot table [table] [keyspace] Table: tên bảng Keyspace: tên khơng gian khóa * Ưu điểm nhược điểm: Ưu điểm: - Đơn giản, dễ quản lí Nhược điểm: - Với tập liệu lớn khó lưu thường xuyên cho keyspace - Giá đắt dich chuyển liệu Incremental Backup Cassandra cung cấp chức incremental backup Theo mặc định, incremental backup bị tắt Ta bật tính này bằng cách thay đởi giá trị “incrementalbackups” thành “true” tệp cassandra.yaml Sau kích hoạt, Cassandra sẽ 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ỉ chứa tệp SSTable mới; chúng phụ thuộc vào snapshot cuối tạo Ưu điểm: - Giảm chi phí dịch chuyển - Giảm nhu cầu dung lượng ổ đĩa Nhược điểm: - Cassandra không tự động xóa tệp Incremental Backup - Không thể chọn tập hợp họ cột để incremental snapshot 2.2 Thực hành Bước 1: Kiểm tra liệu Mở sqlsh Cassandra Bước 2: Truy vấn bảng assignment keyspace dbm Bước 3: Gõ lệnh “nodetool snapshot dbm” để lưu keyspace dbm Bước 4: Kiểm tra danh sách snapshot bằng câu lệnh “nodetool listsnapshots”: V Tổng kết  Trong nội dung bài 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 chỉ mục - Thực hành khôi phục liệu - Thực hành lưu liệu  Thông qua tập lớn này, nhóm học hỏi nhiều kiến thức MySQL Cassandra.Tuy cịn nhiều thiếu sót nhóm cố gắng để tìm hiểu trình bày với giảng viên công việc nghiên cứu hệ quản trị sở liệu VI Phân chia cơng việc  Trần Chương Trình: Tìm hiểu viết báo cáo thực hành lưu liệu  Mai Văn Duyên: Tìm hiểu viết báo cáo lựa chọn cấu trúc lưu trữ cho tập tin liệu  Phạm Minh Khoa: Tìm hiểu viết báo cáo thực hành với chỉ mục  Nguyễn Văn Quý Tìm hiểu viết báo cáo thực hành khôi phục liệu References MySQL :: MySQL 8.0 Reference Manual :: 15.6.2.1 Clustered and Secondary Indexes https://dev.mysql.com/doc/refman/5.7/en/innodb-index-types.html MySQL :: MySQL 8.0 Reference Manual :: 15.1 Introduction to InnoDB https://dev.mysql.com/doc/refman/8.0/en/innodb-introduction.html MySQL :: MySQL 8.0 Reference Manual :: 8.3 Optimization and Indexes https://dev.mysql.com/doc/refman/8.0/en/optimization-indexes.html MySQL :: MySQL 8.0 Reference Manual :: 8.3.9 Comparison of B-Tree and Hash Indexes https://dev.mysql.com/doc/refman/8.0/en/index-btree-hash.html#btree-index-characteristics MySQL :: MySQL 8.0 Reference Manual :: 8.3.1 How MySQL Uses Indexes https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html Steven Bradley - The Types of Indexes You Can Add To MySQL Tables https://vanseodesign.com/web-design/the-types-of-indexes-you-can-add-to-mysql-tables/ dinhhoanglong91 - MySQL Indexing https://viblo.asia/p/mysql-indexing-PDOkqWxAGjx Krzysztof Ksiazek - An overview of MySQL Database Indexing https://severalnines.com/database-blog/overview-mysql-database-indexing Patrick McFadin - Apache Cassandra indexing without having to say I’m sorry https://sdtimes.com/data/apache-cassandra-indexing-without-having-to-say-im-sorry/ Cassandra Secondary Index Preview #1 http://rustyrazorblade.com/post/2016/2016-02-08-cassandra-secondary-index-preview/ Zhao Yang - CEP-7: Storage Attached Index https://cwiki.apache.org/confluence/display/CASSANDRA/CEP7%3A+Storage+Attached+Index DataStax - Better Cassandra Indexes for a Better Data Model: Introducing Storage-Attached Indexing https://datastax.medium.com/better-cassandra-indexes-for-a-better-data-model-introducingstorage-attached-indexing-2c44322f2220 What is secondary index in Cassandra? https://www.quora.com/What-is-secondary-index-in-Cassandra Jeff Carpenter & Eben Hewitt – Cassandra The Definitive Guide 2nd Edition https://drive.google.com/file/d/1VS3F_Dj2YljGIImK_MXLSgggLiBCJq0h/edit Difference between partition key, composite key and clustering key in Cassandra? https://stackoverflow.com/questions/24949676/difference-between-partition-key-compositekey-and-clustering-key-in-cassandra ... MySQL 1.1 Inno DB 1.2 Các dữ liệu MySQL Cassandra 2.1 Cấu trúc chung của Cassandra II Thực hành với mục 14 MySQL. .. bytes 64 kb 16 Mb Gb Cassandra 2.1 Cấu trúc chung của 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... phục liệu References MySQL :: MySQL 8.0 Reference Manual :: 15.6.2.1 Clustered and Secondary Indexes https://dev .mysql. com/doc/refman/5.7/en/innodb-index-types.html MySQL :: MySQL 8.0 Reference

Ngày đăng: 03/10/2021, 22:11

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w