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

Bài tập lớn 1 thiết kế cơ sở dữ liệu phân tán

78 8 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

Nội dung

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA HỆ THỐNG THÔNG TIN □ □ Báo cáo thực hành: BÀI TẬP LỚN THIẾT KẾ CƠ SỞ DỮ LIỆU PHÂN TÁN Môn học: CƠ SỞ DỮ LIỆU PHÂN TÁN Giảng viên giảng dạy: Nguyễn Minh Nhựt Lớp: IS211.N11.HTCL Sinh viên thực hiện: Nguyễn Thị Mỹ Trân - 20520322 Tôn Nữ Tú Quyên - 20520296 Thái Tăng Đức - 20521203 Trần Anh Huy - 20520551 Tp.HCM, tháng 12 năm 2022 Cơ sở liệu phân tán Báo cáo tập lớn MỤC LỤC MỤC LỤC 1 THIẾT KẾ CSDL PHÂN TÁN 1.1 Thiết kế mô tả csdl phân tán 1.2 Kiến trúc phân mảnh 1.2.1 Mô tả phân mảnh 1.2.2 Minh họa chi nhánh 1.3 Xây dựng csdl phân tán 1.3.1 Dll 1.3.2 Dml 11 1.4 Kiến trúc phân quyền 34 1.4.1 Mô tả kiến trúc phân quyền 34 1.4.2 Minh họa 35 1.5 Thực 10 câu truy vấn 40 VIẾT HÀM, THỦ TỤC VÀ RÀNG BUỘC TOÀN VẸN 52 2.1 Function 52 2.1 Procedure 54 2.3 Ràng buộc toàn vẹn 55 DEMO CÁC MỨC CÔ LẬP (ISOLATION LEVEL) TRONG MÔI TRƯỜNG PHÂN TÁN 58 3.1 Trường hợp lost update 58 3.1.1 Mơ tả tình 58 3.1.2 Minh họa 58 3.1.3 Giải pháp 59 Trang | Báo cáo tập lớn Cơ sở liệu phân tán 3.2 Trường hợp dirty read 59 3.3 Trường hợp unrepeatable read 60 3.4 Trường hợp phantom read 61 3.5 Trường hợp deadlock 63 THỰC HIỆN TỐI ƯU HĨA TRUY VẤN TRÊN MƠI TRƯỜNG PHÂN TÁN 65 4.1 Câu truy vấn đơn giản chưa tối ưu 65 4.2 EXPLAIN QUERY câu truy vấn đơn giản 66 4.3 Tối ưu hóa câu truy vấn cục bộ, phân tán 67 4.4 Viết lại câu query môi trường phân tán 70 CƠ CHẾ NHÂN BẢN TRONG MICROSOFT SQL SERVER 72 5.1 Tìm hiểu chế nhân bản, cách thức hoạt động 72 5.2 Demo chế nhân nhiều cụm máy 76 E PHÂN CÔNG CÔNG VIỆC 76 TÀI LIỆU THAM KHẢO 77 Trang | Báo cáo tập lớn Cơ sở liệu phân tán THIẾT KẾ CSDL PHÂN TÁN 1.1 Thiết kế mô tả csdl phân tán CSDL Quản lý chi nhánh Mini Mart Mini Mart có chi nhánh Thành Phố Hồ Chí Minh Trụ sở Mini Mart nằm chi nhánh ‘Lê Văn Việt, Quận 9’ Lược đồ sở liệu chi nhánh Mini Mart sau: BRANCH (BRANCH_ID, BRANCH_NAME, ADDRESS) Tân từ: Mỗi chi nhánh có mã chi nhánh (BRANCH_ID) dùng để phân biệt chi nhánh với ngồi cịn lưu tên chi nhánh (BRANCH_NAME) địa chi nhánh (ADDRESS) Trường tên chi nhánh EMPLOYEE (EMP_ID, FIRST_NAME, LAST_NAME, GENDER, BIRTHDAY, PHONE, ADDRESS, START_DATE, SALARY, ROLE, BRANCH_ID) Tân từ: Mỗi nhân viên có mã nhân viên (EMPLOYEE_ID) nhất, tên nhân viên (FIRST_NAME, LAST_NAME ), giới tính (GENDER), ngày sinh (BIRTHDAY), điện thoại (PHONE), địa (ADDRESS), chức vụ nhân viên (JOB), ngày vào làm (START_DATE), gmức lương nhân viên (SALARY), mã chi nhánh mà nhân viên làm việc (BRANCH_ID) CUSTOMER (CUS_ID, FIRST_NAME, LAST_NAME, GENDER, ADDRESS, PHONE, BIRTHDAY, REG_DATE, SPENT_MONEY, POINT) Tân từ: Mỗi khách hàng có mã khách hàng (CUSTOMER_ID) nhất, họ tên khách hàng (FIRST_NAME, LAST_NAME), giới tính (GENDER), ngày sinh Trang | Báo cáo tập lớn Cơ sở liệu phân tán (BIRTHDAY), địa khách hàng (ADDRESS), điện thoại (), ngày đăng ký (PHONE), tổng tiền chi mua (SPENT_MONEY), điểm tích lũy đơn hàng (POINT) PRODUCT (PRO_ID, PRODUCT_NAME, COUNTRY, ORIGINAL_PRICE, SALE_PRICE, MFG, EXP, PRODUCT_TYPE, VAT, REMAINING_QUANTITY) Tân từ: sản phẩm có mã sản phẩm (PRO_ID) suy nhất, tên sản phẩm (PRODUCT_NAME), nước sản xauast (COUNTRY), giá gốc (ORIGINAL_PRICE), giá bán (SALE_PRICE), ngày sản xuất (MFG), ngày hết hạn (EXP), loại sản phẩm ( PRODUCT_TYPE), vat (VAT) WAREHOUSE_MANAGEMENT (BRANCH_ID, PRO_ID, IMPORTED_DATE, IMPORTED_QUANTITY) Tân từ: Kho quản lý sản phảm có mã chi nhánh (BRANCH_ID), mã sản phẩm (PRO_ID), ngày nhập (IMPORTED_DATE), số lượng nhập (IMPORTED_QUANTITY) WAREHOUSE_SALES (BRANCH_ID, PRO_ID, STATUS) Tân từ: quản lý tình trạng bán hàng: mã chi nhánh (BRANCH_ID), mã sản phẩm (PRO_ID), tình trạng (STATUS) BILL (BILL_ID, EMP_ID, CUS_ID, BILL_DATE, TOTAL_MONEY) Tân từ: hóa đơn bán hàng có mã hóa đơn (BILL_ID), mã nhân viên toán (EMP_ID), mã khách hàng (CUS_ID), ngày hóa đơn (BILL_ID), tổng tiền hóa đơn (TOTAL_MONEY) BILL_DETAILS (BILL_ID, PRO_ID, AMOUNT) Tân từ: chi tiết hóa đơn có mã hóa đơn (BILL_ID), mã sản phẩm (PRO_ID), số lượng sản phẩm (AMOUNT) Trang | Cơ sở liệu phân tán Báo cáo tập lớn 1.2 Kiến trúc phân mảnh 1.2.1 Mơ tả phân mảnh • Quan hệ BRANCH phân mảnh ngang • Quan hệ EMPLOYEE, BILL, BILL_DETAILS phân mảnh ngang dẫn xuất • Quan hệ WAREHOUSE phân mảnh hỗn hợp thành WAREHOUSE_MANAGEMENT WAREHOUSE_SALES Trong đó: o Quan hệ WAREHOUSE_MANAGEMENT chứa thông tin dùng để quản lý thông tin nhập sản phẩm; o Quan hệ WAREHOUSE_SALES quản lý thông tin trạng thái bán hàng sản phẩm • Quan hệ CUSTOMER, PRODUCT nhân tất chi nhánh 1.2.2 Minh họa chi nhánh * Quan hệ BRANCH phân mảnh ngang CN1.BRANCH = 𝛿(𝐵𝑅𝐴𝑁𝐶𝐻_𝑁𝐴𝑀𝐸 CN2.BRANCH = 𝛿 =′𝑀𝑖𝑛𝑖 𝑚𝑎𝑟𝑡 𝑄𝑢𝑎𝑛 9′) (𝐵𝑅𝐴𝑁𝐶𝐻_𝑁𝐴𝑀𝐸 = ′𝑀𝑖𝑛𝑖 𝑚𝑎𝑟𝑡 𝑐ℎ𝑖 𝑛ℎ𝑎𝑛ℎ 𝑄𝑢𝑎𝑛 1′) BRANCH BRANCH * Quan hệ EMPLOYEE, BILL, BILL_DETAILS phân mảnh ngang dẫn xuất CN1.EMPLOYEE = EMPLOYEE ⋉𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷 CN1.BRANCH CN2.EMPLOYEE = EMPLOYEE ⋉𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷 CN2.BRANCH CN1.BILL_ID = BILL_ID ⋉𝐸𝑀𝑃_𝐼𝐷 CN1 EMPLOYEE CN2.BILL_ID = BILL_ID ⋉𝐸𝑀𝑃_𝐼𝐷 CN2 EMPLOYEE CN1.BILL_DETAILS = BILL_DETAILS ⋉𝐵𝐼𝐿𝐿_𝐼𝐷 CN1 BILL_ID CN2 TRANSACTION = BILL_DETAILS ⋉𝐵𝐼𝐿𝐿_𝐼𝐷 CN2 BILL_ID *Quan hệ WAREHOUSE phân mảnh hỗn hợp thành WAREHOUSE_MANAGEMENT WAREHOUSE_SALES Trong đó: Trang | Cơ sở liệu phân tán Báo cáo tập lớn CN1 WAREHOUSE_MANAGEMENT = 𝜋(𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷,𝑃𝑅𝑂_𝐼𝐷,𝐼𝑀𝑃𝑂𝑅𝑇𝐸𝐷_𝐷𝐴𝑇𝐸,𝐼𝑀𝑃𝑂𝑅𝑇𝐸𝐷_𝑄𝑈𝐴𝑁𝑇𝐼𝑇𝑌) (WAREHOUSE ⋉𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷 CN1.BRANCH) CN1 WAREHOUSE_SALES = 𝜋(𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷,𝑃𝑅𝑂_𝐼𝐷,𝑆𝑇𝐴𝑇𝑈𝑆) (WAREHOUSE⋉𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷 CN1.BRANCH) CN2 WAREHOUSE_MANAGEMENT = 𝜋(𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷,𝑃𝑅𝑂_𝐼𝐷,𝐼𝑀𝑃𝑂𝑅𝑇𝐸𝐷_𝐷𝐴𝑇𝐸,𝐼𝑀𝑃𝑂𝑅𝑇𝐸𝐷_𝑄𝑈𝐴𝑁𝑇𝐼𝑇𝑌) (WAREHOUSE ⋉𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷 CN1.BRANCH) CN2 WAREHOUSE_SALES = 𝜋(𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷,𝑃𝑅𝑂_𝐼𝐷,𝑆𝑇𝐴𝑇𝑈𝑆) (WAREHOUSE⋉𝐵𝑅𝐴𝑁𝐶𝐻_𝐼𝐷 CN1.BRANCH) *Quan hệ CUSTOMER, PRODUCT nhân tất chi nhánh 1.3 Xây dựng csdl phân tán 1.3.1 Dll CN1 CN2 CREATE TABLE CN1.BRANCH( CREATE TABLE CN2.BRANCH( BRANCH_ID VARCHAR2(5) BRANCH_ID VARCHAR2(5) CONSTRAINT BRANCH_PK CONSTRAINT BRANCH_PK PRIMARY KEY, PRIMARY KEY, BRANCH_NAME VARCHAR2(200), BRANCH_NAME VARCHAR2(200), ADDRESS VARCHAR2(200) ADDRESS VARCHAR2(200) ); ); CREATE TABLE CREATE TABLE CN1.EMPLOYEE( CN2.EMPLOYEE( EMP_ID NUMBER EMP_ID NUMBER CONSTRAINT EMPLOYEE_PK CONSTRAINT EMPLOYEE_PK PRIMARY KEY, PRIMARY KEY, FIRST_NAME VARCHAR2(200), FIRST_NAME VARCHAR2(200), Trang | Cơ sở liệu phân tán Báo cáo tập lớn LAST_NAME VARCHAR2(200), LAST_NAME VARCHAR2(200), GENDER VARCHAR(10), GENDER VARCHAR(10), BIRTHDAY DATE, BIRTHDAY DATE, PHONE VARCHAR2(200), PHONE VARCHAR2(200), ADDRESS VARCHAR2(200), ADDRESS VARCHAR2(200), START_DATE DATE, START_DATE DATE, SALARY NUMBER, SALARY NUMBER, ROLE VARCHAR2(200), ROLE VARCHAR2(200), BRANCH_ID VARCHAR2(5), BRANCH_ID VARCHAR2(5), CONSTRAINT CONSTRAINT FK_EMP_BRANCH FOREIGN FK_EMP_BRANCH FOREIGN KEY(BRANCH_ID) REFERENCES KEY(BRANCH_ID) REFERENCES BRANCH(BRANCH_ID) BRANCH(BRANCH_ID) ); ); CREATE TABLE CN1.CUSTOMER CREATE TABLE CN2.CUSTOMER ( ( CUS_ID NUMBER CUS_ID NUMBER CONSTRAINT PK_STUDENT CONSTRAINT PK_STUDENT PRIMARY KEY, PRIMARY KEY, FIRST_NAME VARCHAR(20), FIRST_NAME LAST_NAME VARCHAR(20), VARCHAR(20), GENDER VARCHAR(10), LAST_NAME ADDRESS VARCHAR(200), VARCHAR(20), PHONE VARCHAR(20), GENDER VARCHAR(10), BIRTHDAY DATE, ADDRESS REG_DATE DATE, VARCHAR(200), SPENT_MONEY NUMBER, PHONE VARCHAR(20), BIRTHDAY DATE, POINT INT ); REG_DATE DATE, Trang | Cơ sở liệu phân tán Báo cáo tập lớn SPENT_MONEY NUMBER, POINT INT ); CREATE TABLE CN1.PRODUCT CREATE TABLE CN2.PRODUCT ( ( PRO_ID NUMBER PRO_ID NUMBER CONSTRAINT PK_PRO PRIMARY CONSTRAINT PK_PRO PRIMARY KEY, KEY, PRODUCT_NAME PRODUCT_NAME VARCHAR(200), VARCHAR(200), COUNTRY VARCHAR(50), COUNTRY VARCHAR(50), ORIGINAL_PRICE NUMBER, ORIGINAL_PRICE NUMBER, SALE_PRICE NUMBER, SALE_PRICE NUMBER, MFG DATE, MFG DATE, EXP DATE, EXP DATE, PRODUCT_TYPE PRODUCT_TYPE VARCHAR(200), VARCHAR(200), VAT NUMBER, VAT NUMBER, REMAINING_QUANTITY REMAINING_QUANTITY NUMBER NUMBER ); ); CREATE TABLE CREATE TABLE CN1.WAREHOUSE_MANAGEME CN2.WAREHOUSE_MANAGEME NT NT ( ( BRANCH_ID VARCHAR2(5), BRANCH_ID VARCHAR2(5), PRO_ID NUMBER, PRO_ID NUMBER, IMPORTED_DATE DATE, IMPORTED_DATE DATE, Trang | Cơ sở liệu phân tán Báo cáo tập lớn IMPORTED_QUANTITY IMPORTED_QUANTITY NUMBER, NUMBER, CONSTRAINT PK_WM CONSTRAINT PK_WM PRIMARY KEY(BRANCH_ID, PRIMARY KEY(BRANCH_ID, PRO_ID), PRO_ID), CONSTRAINT CONSTRAINT FK_WM_BRANCH FOREIGN KEY FK_WM_BRANCH FOREIGN KEY (BRANCH_ID) REFERENCES (BRANCH_ID) REFERENCES BRANCH(BRANCH_ID), CONSTRAINT FOREIGN BRANCH(BRANCH_ID), FK_WM_PRO KEY CONSTRAINT FK_WM_PRO (PRO_ID) FOREIGN KEY (PRO_ID) REFERENCES PRODUCT(PRO_ID) REFERENCES PRODUCT(PRO_ID) ); ); CREATE TABLE CREATE TABLE CN1.WAREHOUSE_SALES CN2.WAREHOUSE_SALES ( ( BRANCH_ID VARCHAR2(5), BRANCH_ID VARCHAR2(5), PRO_ID NUMBER, PRO_ID NUMBER, STATUS VARCHAR2(200), STATUS VARCHAR2(200), CONSTRAINT WS_PK CONSTRAINT WS_PK PRIMARY KEY(BRANCH_ID, PRIMARY KEY(BRANCH_ID, PRO_ID), PRO_ID), CONSTRAINT CONSTRAINT FK_WS_BRANCH FOREIGN KEY FK_WS_BRANCH FOREIGN KEY (BRANCH_ID) REFERENCES (BRANCH_ID) REFERENCES BRANCH(BRANCH_ID), BRANCH(BRANCH_ID), CONSTRAINT FK_WS_PRO FOREIGN KEY (PRO_ID) CONSTRAINT FK_WS_PRO FOREIGN KEY (PRO_ID) REFERENCES PRODUCT(PRO_ID) REFERENCES PRODUCT(PRO_ID) ); ); Trang | Cơ sở liệu phân tán Báo cáo tập lớn complet e t3 BEGIN Error report CN2.PRODUCT_I - NFO ORA- (400009); 20008: Ma END; san pham / khong lop le ORA06512: at "C##USSE R1.PROD UCT_INF O", line 40 ORA06512: at line 3.4.3 Giải pháp Thay đổi mức cô lập mặc định (Default isolation level – Read committed) thành Serializable thực câu lệnh SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; 3.5 Trường hợp deadlock 3.5.1 Mô tả tình Tại t0, nhân viên A cập nhật trạng thái đơn hàng C Tại t1, nhân viên B cập nhật trạng thái đơn hàng D Tại t2, nhân viên A cập nhật trạng thái đơn hàng D Tại t3, nhân viên B cập nhật trạng thái đơn hàng C Và bế tắc xảy Trang | 63 Cơ sở liệu phân tán Báo cáo tập lớn Nguyên nhân: Transaction T1 giữ khóa đơn vị liệu A, chờ khóa đơn vị liệu B Transaction T2 giữ khóa đơn vị liệu B chờ khóa đơn vị liệu B từ nhân viên A Hai giao dịch chờ khóa vơ hạn gây trạng thái deadlock 3.5.2 Minh hoạ Time t0 Transaction T1 Transaction T2 T1(Employeee A) Output T1(Employee B) Output UPDATE row CN2.WAREHOUSE_SA updated LES SET STATUS = 'Hết hàng' WHERE PRO_ID = 400001; t1 UPDATE row CN2.WAREHOUSE_ updated SALES@cn2_link SET STATUS = 'Hết hàng' WHERE PRO_ID = 400002; t2 UPDATE CN2.WAREHOUSE_SA LES SET STATUS = 'Cho nhap hang' WHERE PRO_ID = 400002; t3 UPDATE Trang | 64 Cơ sở liệu phân tán Báo cáo tập lớn CN2.WAREHOUSE_ SALES@cn2_link SET STATUS = 'Cho nhap hang' WHERE PRO_ID = 400001; t4 ERRO R at line 3: ORA00060: deadloc k detecte d while waiting for resourc e 3.5.3 Giải pháp Hệ quản trị sở liệu Oracle tự động ROLLBACK giao dịch khơng thành cơng Trong tình này, Transaction T1 hệ quản trị sở liệu Oracle ROLLBACK THỰC HIỆN TỐI ƯU HÓA TRUY VẤN TRÊN MÔI TRƯỜNG PHÂN TÁN 4.1 Câu truy vấn đơn giản chưa tối ưu Cho biết thông tin sản phẩm(PRO_ID, PRODUCT_NAME, STATUS) chi nhánh ‘Mini mart chi nhanh Quan 9’ có ngày bán 3/2022 có số lượng bán lớn Trang | 65 Báo cáo tập lớn Cơ sở liệu phân tán SELECT DISTINCT P.PRO_ID, PRODUCT_NAME, STATUS FROM PRODUCT P, WAREHOUSE_SALES WS, BILL B, BILL_DETAILS BDT, BRANCH BR WHERE BR.BRANCH_ID = WS.BRANCH_ID AND WS.PRO_ID = P.PRO_ID AND P.PRO_ID = BDT.PRO_ID AND BDT.BILL_ID = B.BILL_ID AND BR.BRANCH_NAME = 'Mini mart Quan 9' AND EXTRACT(YEAR FROM BILL_DATE) = 2022 AND EXTRACT(MONTH FROM BILL_DATE) = AND AMOUNT > 2; 4.2 EXPLAIN QUERY câu truy vấn đơn giản SELECT /*+ GATHER_PLAN_STATISTICS */ DISTINCT P.PRO_ID, PRODUCT_NAME, STATUS FROM PRODUCT P, WAREHOUSE_SALES WS, BILL B, BILL_DETAILS BDT, BRANCH BR WHERE BR.BRANCH_ID = WS.BRANCH_ID AND WS.PRO_ID = P.PRO_ID AND P.PRO_ID = BDT.PRO_ID AND BDT.BILL_ID = B.BILL_ID AND BR.BRANCH_NAME = 'Mini mart Quan 9' AND EXTRACT(YEAR FROM BILL_DATE) = 2022 AND EXTRACT(MONTH FROM BILL_DATE) = AND AMOUNT > 2; Trang | 66 Cơ sở liệu phân tán Báo cáo tập lớn SELECT * FROM TABLE(DBMS_XPLAN.display_cursor(format=>'ALLSTATS LAST')); Kết 4.3 Tối ưu hóa câu truy vấn cục bộ, phân tán Hình Đồ thị truy vấn Trang | 67 Báo cáo tập lớn Cơ sở liệu phân tán Hình Cây truy vấn tối ưu môi trường tập trung Trang | 68 Báo cáo tập lớn Cơ sở liệu phân tán Hình Cây truy vấn tối ưu môi trường phân tán Trang | 69 Báo cáo tập lớn Cơ sở liệu phân tán 4.4 Viết lại câu query môi trường phân tán SELECT DISTINCT PRO_ID, PRODUCT_NAME, STATUS FROM ((SELECT BRANCH_ID, E.PRO_ID, PRODUCT_NAME, STATUS FROM ((SELECT C.PRO_ID, PRODUCT_NAME FROM ((SELECT PRO_ID FROM ((SELECT BILL_ID FROM CN1.BILL WHERE EXTRACT(YEAR FROM BILL_DATE) = 2022 AND EXTRACT(MONTH FROM BILL_DATE) = 3) A INNER JOIN (SELECT BILL_ID, PRO_ID FROM CN1.BILL_DETAILS WHERE AMOUNT > 2) B ON A.BILL_ID = B.BILL_ID)) C INNER JOIN (SELECT PRO_ID, PRODUCT_NAME FROM PRODUCT) D ON C.PRO_ID = D.PRO_ID)) E INNER JOIN (SELECT BRANCH_ID, PRO_ID, STATUS FROM CN1.WAREHOUSE_SALES) F ON E.PRO_ID = F.PRO_ID)) G INNER JOIN (SELECT BRANCH_ID FROM CN1.BRANCH WHERE BRANCH_NAME = 'Mini mart Quan 9') H ON G.BRANCH_ID = H.BRANCH_ID); Trang | 70 Báo cáo tập lớn Cơ sở liệu phân tán EXPLAIN query môi trường phân tán SELECT /*+ GATHER_PLAN_STATISTICS */ DISTINCT PRO_ID, PRODUCT_NAME, STATUS FROM ((SELECT BRANCH_ID, E.PRO_ID, PRODUCT_NAME, STATUS FROM ((SELECT C.PRO_ID, PRODUCT_NAME FROM ((SELECT PRO_ID FROM ((SELECT BILL_ID FROM CN1.BILL WHERE EXTRACT(YEAR FROM BILL_DATE) = 2022 AND EXTRACT(MONTH FROM BILL_DATE) = 3) A INNER JOIN (SELECT BILL_ID, PRO_ID FROM CN1.BILL_DETAILS WHERE AMOUNT > 2) B ON A.BILL_ID = B.BILL_ID)) C INNER JOIN (SELECT PRO_ID, PRODUCT_NAME FROM PRODUCT) D ON C.PRO_ID = D.PRO_ID)) E INNER JOIN (SELECT BRANCH_ID, PRO_ID, STATUS FROM CN1.WAREHOUSE_SALES) F ON E.PRO_ID = F.PRO_ID)) G INNER JOIN (SELECT BRANCH_ID FROM CN1.BRANCH WHERE BRANCH_NAME = 'Mini mart Quan 9') H ON G.BRANCH_ID = H.BRANCH_ID); SELECT * FROM TABLE(DBMS_XPLAN.display_cursor(format=>'ALLSTATS LAST')); Kết Trang | 71 Báo cáo tập lớn Cơ sở liệu phân tán Nhận xét câu truy vấn tập trung chưa tối ưu tối ưu: Thời gian thực câu truy vấn tối ưu nhanh thời gian thực câu truy vấn chưa tối ưu CƠ CHẾ NHÂN BẢN TRONG MICROSOFT SQL SERVER 5.1 Tìm hiểu chế nhân bản, cách thức hoạt động 5.1.1.Tổng quan nhân bản: Nhân kĩ thuật quan trọng hữu hiệu việc phân bố sở liệu (CSDL) thực thi Stored procedure Nhân kĩ thuật quan trọng hữu hiệu việc phân bố sở liệu (CSDL) thực thi Stored procedure Kĩ thuật nhân SQL Server cho phép bạn tạo liệu giống hệt nhau, di chuyển đến vùng khác đồng hoá liệu cách tự động để tất có giá trị liệu Nhân thực thi CSDL server hay server khác kết nối mạng LANs,WANs hay Internet SQL Server đưa nhiều chế nhân để đáp ứng yêu cầu khác ứng dụng Mỗi loại cung cấp khả thuộc tính khác nhằm đạt đến mục tiêu tính độc lập “Site”và quán giao dịch Mục tiêu nhân SQL Server đưa nhiều chế nhân để đáp ứng yêu cầu khác ứng dụng Mỗi loại cung cấp khả thuộc tính khác nhằm đạt đến mục tiêu tính độc lập “Site” quán liệu Nhất quán liệu (Data consistency) Có cách để đạt tính qn liệu: - Nhất quán giao dịch(Transactional Consistency) - Hội tụ liệu (Data Convergence) Nhất quán giao dịch - Bảo đảm tất liệu giống site thời điểm Trang | 72 Báo cáo tập lớn Cơ sở liệu phân tán - Tất giao dịch thực site Có loại : Nhất quán (Immediate Transactional Consistency hay Tight Consistency): Ở kiểu này, tất site bảo đảm thấy giá trị liệu thời điểm Cách để đạt quán giao dịch (transactional consistency) môi trường cập nhật phân tán (distributed update environment) sử dụng 2-phase commit protocol tất site tham gia (participating site) Mỗi site phải commit đồng thời thay đổi không site commit thay đổi Giải pháp rõ ràng không khả thi số lượng site lớn Nhất quán ngầm (Latent Transactional Consistency hay Loose Consistency) : Có quán ngầm site tham gia có trì hỗn việc phản ánh giá trị liệu đến site tham gia vào lúc site khơng bảo đảm có giá trị liệu Việc sửa đổi giá trị liệu bị trì hỗn đủ lâu để tất site cập nhật, sau tất site có giá trị liệu Ngồi giá trị liệu phải giống với giá trị đạt thực công việc site.Sự khác nhất quán giao dịch quán giao dịch ngầm liệu có quán lúc hay không Hội tụ liệu Với hội tụ liệu, tất site quy giá trị liệu không thiết giá trị liệu bị gây tác vụ làm site User tự thao tác site theo cách khác Khi nút (node) đồng bộ, tất site hội tụ giá trị Nếu đụng độ gây sửa đổi liệu site khác sửa đổi giải cách tự động (chọn site có độ ưu tiên cao hay site đưa sửa đổi đến trước ) Độc lập site (site autonomy) Trang | 73 Báo cáo tập lớn Cơ sở liệu phân tán Độc lập site xét đến ảnh hưởng thao tác site đến site khác Thường độc lập site tăng tính qn liệu giảm Nhân kết hợp (Merge replication) có mức độc lập site cao nhất, tạo hội tụ lại khơng đảm bảo tính qn liệu 2PC (two phase commit) có tính qn liệu cao lại khơng có tính độc lập site Những giải pháp khác thường hai tính Kiến trúc nhân bản: Các thành phần nhân bản: - Publisher: Là server tạo liệu để nhân đến server khác Nó xác định liệu nhân bản, liệu thay đổi trì thơng tin cơng bố site - Subscriber: Là server lưu giữ nhân nhận tác vụ cập nhật SQL Server 2000 cho phép Subsriber cập nhật liệu q trình cập nhập Subscriber khơng giống Publisher Một Subscriber Publisher Subscriber khác - Distributor: Là server mà chứa CSDL phân tán (distribution database) lưu trữ metadata, history data transaction SQL Server sử dụng CSDL phân tán để lưu chuyển (store_and_forward) liệu nhân từ Publisher đến Subscriber Có loại Distributor : Local Distributor remote Distributor - Publication: Đơn giản tập hợp mẩu liệu (article) Một mẩu nhóm liệu nhân Một mẩu bao gồm table vài hàng (horizontal fragment) hay cột (vertical fragment) Một Publication thường gồm nhiều mẩu Chiều di chuyển liệu Có kiểu di chuyển liệu: Push subscription -Publisher đẩy (push) thay đổi đến Subscriber mà khơng quan tâm Subscriber có cập nhật hay không Trang | 74 Báo cáo tập lớn Cơ sở liệu phân tán -Push subscription sử dụng ứng dụng mà yêu cầu gửi thay đổi đến Subscriber thay đổi xảy Publisher -Push Subscription giúp việc quản lý Subcsriber đơn giản tập trung hơn, đồng thời giúp bảo mật tốt qúa trình khởi động (initialization process) quản lý chỗ Nhưng thế, Distributor phải đảm nhận nhiều trình phân bố subscription đến Subscriber lúc Điều dễ dẫn đến tượng thắt cổ chai (bottleneck) -Mơ hình khơng thích hợp số lượng Subscriber trở nên lớn -Push subscription gây phí xử lý cao Publisher Để tránh tượng này, thay đổi đẩy đến Subscriber theo lịch định kì Pull subscription - Subsciber kéo (pull) thay đổi Publisher theo khoảng thời gian định kì - Tốt cho user độc lập thay đổi chúng cho phép user xác định thay đổi liệu đồng - Ngược với push subscription ,pull subscription bảo mật thấp cho phép số lượng Subsriber cao - Một publication sử dụng hai push pull subscription Tác nhân (Agent) Việc thiết kế nhân tạo hay nhiều agent Snapshot agent: - Chuẩn bị lược đồ, data file, stored procedure - Lưu snapshot lên Distributor ghi lại thông tin trạng thái đồng vào CSDL phân bố (distribution database) - Mỗi publication có snapshot agent riêng chạy Distributor liên kết với Publisher Log Reader agent: - Di chuyển transaction cần nhân từ transaction log Publisher đến CSDL phân bố Trang | 75 Cơ sở liệu phân tán Báo cáo tập lớn - Mỗi publication dùng nhân transaction có log reader agent, chạy Distributor liên kết (connect) đến Publisher Distribution Agent: - Di chuyển transaction tác vụ chép giữ CSDL phân bố đến Subscriber - TH: Nhân transaction hay snapshot mà đồng ( immediate synchronization): push subscription tạo, publication có distribution agent riêng, chạy Distributor liên kết với Subscriber - TH: Nhân transaction snapshot không đồng : Publisher Subscriber dùng chung distribution agent , chạy Distributor liên kết với Subscriber - TH: pull subscription đến snapshot publication hay transactional publication: có distribution agent, chạy Subscriber - Nhân kết hợp (merge replication) khơng có distribution agent Merge agent: Di chuyển điều hòa thay đổi liệu xảy sau snapshot khởi động (initial snapshot) tạo Mỗi merge publication có merge agent, liên kết cập nhật với hai Publisher Subscriber 5.2 Demo chế nhân nhiều cụm máy Xem demo video phần cuối E PHÂN CÔNG CƠNG VIỆC Cơng việc Trân u cầu u cầu Quyên Huy X X Yêu cầu X Yêu cầu Yêu cầu Đức X X X Trang | 76 Cơ sở liệu phân tán Báo cáo tập lớn Làm file báo X X X X cáo Edit video X TÀI LIỆU THAM KHẢO [1] Khoa Hệ thống Thông tin - Trường Đại học Công nghệ Thơng tin (ĐHQG TPHCM), “Đề thi cuối kì I năm học 2017 - 2018 môn Cơ sở liệu phân tán.” Dec 19, 2017 [2] Thông tin - Trường Đại học Công nghệ Thông tin (ĐHQG - TPHCM), Oct 30, 2021 [Online] Available: https://courses.uit.edu.vn/pluginfile.php/313931/mod_resource/content/1/10_Kie mTra3.pdf Trang | 77

Ngày đăng: 03/01/2024, 13:49

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w