ĐẠI HỌC ĐÀ NẴNG TRƯỜNG CĐ CÔNG NGHỆ THÔNG TIN BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP CƠ SỞ XÂY DỰNG HỆ THỐNG CƠ SỞ DỮ LIỆU PHÂN TÁN QUẢN LÝ ĐÀO TẠO ÁP DỤNG CHO CÁC TRƯỜNG ĐẠI HỌC – CAO ĐẲNG Mã số: T2013-07-04 Chủ nhiệm đề tài: Nguyễn Thị Ly Sa Đà Nẵng, 12/2013 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG CĐ CÔNG NGHỆ THÔNG TIN BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP CƠ SỞ XÂY DỰNG HỆ THỐNG CƠ SỞ DỮ LIỆU PHÂN TÁN QUẢN LÝ ĐÀO TẠO ÁP DỤNG CHO CÁC TRƯỜNG ĐẠI HỌC – CAO ĐẲNG Mã số: T2013-07-04 Xác nhận của cơ quan chủ trì đề tài Chủ nhiệm đề tài Nguyễn Thị Ly Sa Đà Nẵng, 12/2013 MỤC LỤC MỞ ĐẦU ............................................................................................................... 1 CHƯƠNG 1. LÝ THUYẾT VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN ............................ 3 1.1. Các khái niệm ......................................................................................................... 3 1.2. Các lý do sử dụng cơ sở dữ liệu phân tán .............................................................. 4 1.3. Hạn chế của cơ sở dữ liệu phân tán........................................................................ 4 1.4. Kiến trúc của hệ cơ sở dữ liệu phân tán ................................................................. 5 1.5. Kỹ thuật thiết kế cơ sở dữ liệu phân tán................................................................. 5 1.5.1. Kiến trúc cơ bản của cơ sở dữ liệu phân tán ................................................... 5 1.5.2. Các chiến lược thiết kế cơ sở dữ liệu phân tán................................................ 6 1.5.3. Phân mảnh (Fragmentation) ............................................................................ 6 1.5.4. Nhân bản (Replication) ................................................................................... 7 1.5.5. Hạn chế của phân mảnh và nhân bản .............................................................. 8 CHƯƠNG 2. CƠ SỞ DỮ LIỆU PHÂN TÁN TRONG MS SQL SERVER .......... 9 2.1. Distributed Transaction .......................................................................................... 9 2.2. Replication ........................................................................................................... 11 2.2.1. Khái niệm ...................................................................................................... 11 2.2.2. Các loại Replication trong MS SQL Server .................................................. 12 2.3. Lợi ích của Replication ........................................................................................ 13 2.4. Các vấn đề cơ bản trong Replication ................................................................... 13 2.4.1. Thành phần chính trong Replication ............................................................. 13 2.4.2. Mô hình nhân bản logic ................................................................................. 14 2.4.3. Các mô hình nhân bản vật lý ......................................................................... 15 2.4.4. Kỹ thuật chuyển dữ liệu từ Publisher tới Subcriber ...................................... 17 2.4.5. Các loại Agent ............................................................................................... 18 CHƯƠNG 3. REPLICATION ................................................................................ 19 3.1. Snapshot Replication ............................................................................................ 19 3.1.1. Giới thiệu Snapshot Replication .................................................................... 19 3.1.2. Hoạt động của Snapshot Replication............................................................. 19 3.2. Transactional Replication..................................................................................... 20 3.2.1. Giới thiệu Transactional Replication............................................................. 20 3.2.2. Hoạt động của Transactional Replication ..................................................... 21 3.2.3. Transactional Replication with updatable Subcription ................................. 21 3.3. Merge Replication ................................................................................................ 22 3.3.1. Giới thiệu Merge Replication ........................................................................ 22 3.3.2. Hoạt động của Merge Replication ................................................................. 23 CHƯƠNG 4. XÂY DỰNG MÔ HÌNH PHÂN TÁN.............................................. 24 4.1. Qui trình quản lý đào tạo ...................................................................................... 24 4.2. Mô hình cơ sở dữ liệu phân tán quản lý đào tạo ................................................. 24 4.3. Thiết kế cơ sở dữ liệu phân tán ............................................................................ 25 4.4. Giải pháp đồng bộ cơ sở dữ liệu phân tán ............................................................ 26 4.5. Các vấn đề trong đồng bộ dữ liệu ........................................................................ 26 4.6. An toàn và bảo mật trong Replication ................................................................. 27 4.7. Cài đặt thực nghiệm ............................................................................................. 27 4.8. Kiểm tra kết quả đồng bộ thông qua chương trình ứng dụng .............................. 31 4.9. Đánh giá kết quả thực nghiệm ............................................................................. 36 CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ....................................... 37 5.1. Kết quả đạt được .................................................................................................. 37 5.2. Hạn chế................................................................................................................. 37 5.3. Hướng phát triển .................................................................................................. 37 TÀI LIỆU THAM KHẢO ........................................................................................... 38 DANH MỤC HÌNH VẼ Hình 1. Hệ cơ sở dữ liệu phân tán và hệ cơ sở dữ liệu tập trung ................................. 3 Hình 2. Kiến trúc cơ sở dữ liệu phân tán ...................................................................... 5 Hình 3. Minh họa các phương pháp phân mảnh .......................................................... 6 Hình 4. Quá trình truyền một Distributed Transaction qua các site .......................... 10 Hình 5. Mức độ độc lập và độ trễ của các phương pháp phân tán ............................ 12 Hình 6. Mô hình nhân bản logic ................................................................................. 15 Hình 7. Mô hình nhân bản Publisher/Distributor-Subscriber đơn giản..................... 15 Hình 8. Mô hình nhân bản vật lý Central Publisher-Multiple Subscribers ................ 16 Hình 9. Mô hình central Subscriber/Multiple Publisher ............................................ 16 Hình 10. Mô hình Multiple Publishers-Multiple Subscriber ...................................... 17 Hình 11. Hoạt động của Snapshot Replication ........................................................... 20 Hình 12. Hoạt động của Transactional Replication ................................................... 21 Hình 13. Hoạt động của Merge Replication ............................................................... 23 Hình 14. Một mô hình cơ sở dữ liệu phân tán quản lý đào tạo .................................. 25 Hình 15. Cơ sở dữ liệu được dùng thử nghiệm ........................................................... 28 Hình 16. Cấu hình Replication trong MS SQL Server ................................................ 29 Hình 17. Cơ sở dữ liệu tại các server ......................................................................... 29 Hình 18. Kết quả đồng bộ dữ liệu giữa server Phòng đào tạo và server Khoa ......... 30 Hình 19. Kết quả đồng bộ dữ liệu giữa server Phòng đào tạo và server Sinh viên ... 30 Hình 20. Đăng nhập vào server Phòng đào tạo và server Sinh viên .......................... 31 Hình 21. Thêm mới một dòng dữ liệu tại server Phòng đào tạo................................. 31 Hình 22. Dòng dữ liệu mới được đồng bộ về server Khoa ......................................... 32 Hình 23. Cập nhật dữ liệu liệu tại server Phòng đào tạo ........................................... 32 Hình 24. Cập nhật dữ liệu liệu tại server Khoa ......................................................... 33 Hình 25. Kết quả sau khi đồng độ tại server Phòng đào tạo ...................................... 33 Hình 26. Kết quả sau khi đồng độ tại server Khoa ..................................................... 34 Hình 27. Cập nhật dữ liệu tại server Phòng đào tạo .................................................. 34 Hình 28. Cập nhật dữ liệu tại server Khoa ................................................................. 35 Hình 29. Kết quả sau khi đồng độ tại server Phòng đào tạo ...................................... 35 Hình 30. Kết quả sau khi đồng độ tại server Khoa ..................................................... 36 DANH MỤC BẢNG Bảng 1. So sánh các phương pháp nhân bản ..............................................................7 DANH MỤC TỪ VIẾT TẮT 2PC : Two Phase Commit CĐ : Cao Đẳng DB : DataBase DBMS : Distributed Database Management System DDB : Distributed DataBase DDBS : Distributed Database System-DDBS DTC : Distributed Transaction Coordinator ĐHĐN : Đại học Đà Nẵng IPSEC : IP Security IT : Information Technology LAN : Local Area Network MS : Microsoft PAL Publication Access List SSL : Secure Sockets Layer VPN : Virtual Private Network ĐẠI HỌC ĐÀ NẴNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG CĐ CÔNG NGHỆ THÔNG TIN Độc lập – Tự do – Hạnh phúc THÔNG TIN KẾT QUẢ NGHIÊN CỨU 1. Thông tin chung: - Tên đề tài: XÂY DỰNG HỆ THỐNG CƠ SỞ DỮ LIỆU PHÂN TÁN QUẢN LÝ ĐÀO TẠO ÁP DỤNG CHO CÁC TRƯỜNG ĐẠI HỌC – CAO ĐẲNG - Mã số: T2013-07-04 - Chủ nhiệm: NGUYỄN THỊ LY SA - Thành viên tham gia: - Cơ quan chủ trì: Trường Cao đẳng Công nghệ thông tin – Đại học Đà Nẵng - Thời gian thực hiện: từ ngày 01/01/2013 đến ngày 31/12/2013 2. Mục tiêu: - Tìm hiểu cơ sở dữ liệu phân tán và các các kỹ thuật phân tán dữ liệu trong MS SQL Server, đặc biệt là kỹ thuật Replication . - Xây dựng một mô hình cơ sở dữ liệu phân tán trong quản lý đào tạo. 3. Tính mới và sáng tạo: - Đề tài đã đề xuất một mô hình cơ sở dữ liệu phân tán cho hệ thống quản lý đào tạo và chọn lựa giải pháp đồng bộ cơ sở dữ liệu phân tán trong MS SQL Server - Cài đặt thử nghiệm với cơ sở dữ liệu hiện đang sử dụng của Trường CĐ Công nghệ Thông tin-ĐHĐN 4. Tóm tắt kết quả nghiên cứu: Đề tài đã đề xuất một mô hình cơ sở dữ liệu phân tán cho hệ thống quản lý đào tạo áp dụng cho các trường Đại học Cao đẳng. Cụ thể, hệ thống cơ sở dữ liệu phân tán của Trường CĐ Công nghệ Thông tin-ĐHĐN gồm 3 server: - Server dùng riêng cho Phòng Đào tạo và các bộ phận khác như Phòng Công tác Sinh viên, Phòng Tài vụ để cập nhật lớp học phần, điểm, học phí, xét học vụ… (gọi là server Phòng Đào tạo) - Server dùng riêng cho các Khoa cập nhật thông tin lịch trình giảng dạy của giáo viên, điểm danh, phân công giáo viên hướng dẫn đề tài… (gọi là server Khoa) - Server dành riêng cho sinh viên xem các thông tin cá nhân và thông tin liên quan đến việc học tập qua internet như điểm, thời khóa biểu và đăng ký học phần… (gọi là server Sinh viên ) Ba server này kết nối với nhau thông qua hệ thống mạng LAN, mọi dữ liệu trong hệ thống quản lý đào tạo đều được lưu tại server Phòng Đào tạo, một phần dữ liệu của server này được nhân bản đến 2 server còn lại theo đúng chức năng và nhiệm vụ của từng server. Ba server này đều đặn đồng bộ dữ liệu với nhau để đảm bảo tính chính xác cao nhất của dữ liệu. Đề tài sử dụng kỹ thuật Replication trong MS SQL Server 2008 để cài đặt thử nghiệm. Kết quả đồng bộ có độ chính xác đạt 100% và thời gian đồng bộ ở mức chấp nhận được. 5. Tên sản phẩm: - Hệ thống cơ sở dữ liệu phân tán quản lý đào tạo - Bài báo đăng Kỷ yếu hội thảo nghiên cứu khoa học: Công Nghệ Thông Tin Và Ứng Dụng Công Nghệ Thông Tin Trong Các Lĩnh Vực, Trường Cao đẳng Công nghệ Thông tin, lần thứ 2. - Báo cáo tổng kết kết quả nghiên cứu đề tài. 6. Hiệu quả, phương thức chuyển giao kết quả nghiên cứu và khả năng áp dụng: - Về mặt Giáo dục - Đào tạo: Phục vụ công tác giảng dạy, nghiên cứu và thực hành chuyên đề Cơ sở dữ liệu phân tán cho sinh viên trong khoa Công nghệ Thông tin, chuyên ngành Hệ thống thông tin. - Về sản phẩm ứng dụng : Góp phần nâng cao hiệu quả trong quá trình quản lý đào tạo tại các trường Đại học Cao Đẳng. 7. Hình ảnh, sơ đồ minh họa chính: Hình 1. Một mô hình cơ sở dữ liệu phân tán trong quản lý đào tạo Hình 2. Cấu hình Replication trong MS SQL Server Publisher: server Phòng Đào tạo Subscriber: server Sinhviên Subscriber: server Khoa Publication ứng với server Khoa Publication ứng với server Sinh viên Subscription tại server Sinh viên Subscription tại server Khoa Đà Nẵng, ngày 15 tháng 12 năm 2013 Cơ quan chủ trì Chủ nhiệm đề tài Nguyễn Thị Ly Sa 1 MỞ ĐẦU 1. Tổng quan tình hình nghiên cứu thuộc lĩnh vực của đề tài ở trong và ngoài nước Công nghệ cơ sở dữ liệu đã trải qua một quá trình hình thành và phát triển khá lâu dài. Ban đầu, các hệ cơ sở dữ liệu thường gắn liền với ứng dụng, nghĩa là mỗi ứng dụng định nghĩa và duy trì dữ liệu của riêng chúng. Phát triển hơn, dữ liệu được quản lý một cách tập trung, nhiều ứng dụng khác nhau có thể truy xuất dữ liệu trực tiếp từ cơ sở dữ liệu tập trung đó. Cơ sở dữ liệu tập trung cũng tồn tại nhiều khuyết điểm, có thể kể đến đó là khi trung tâm dữ liệu có sự cố thì toàn hệ thống sẽ ngừng hoạt động, hay tình trạng tắc nghẽn khi có quá nhiều yêu cầu truy xuất vào cơ sở dữ liệu. Cơ sở dữ liệu phân tán ra đời đã phần nào khắc phục được những điểm yếu của cơ sở dữ liệu tập trung. Là kết quả của sự hợp nhất của hai hướng tiếp cận đối với quá trình xử lý dữ liệu: công nghệ cơ sở dữ liệu và công nghệ mạng máy tính. Cơ sở dữ liệu phân tán gồm nhiều cơ sở dữ liệu tích hợp lại với nhau thông qua mạng máy tính để trao đổi dữ liệu. Cơ sở dữ liệu được tổ chức và lưu trữ ở những vị trí khác nhau trong mạng máy tính và chương trình ứng dụng làm việc trên cơ sở truy cập dữ liệu ở những điểm khác nhau đó. Xét trên khía cạnh người dùng, đặc biệt là các công ty xí nghiệp lớn, thì cơ sở dữ liệu phân tán đáp ứng nhu cầu tốt hơn cơ sở dữ liệu tập trung ứng với sự phân bố ngày càng rộng rãi của các tổ chức này. Tuy nhiên, vấn đề lớn nhất của hệ thống cơ sở dữ liệu phân tán nói chung và của đề tài nói riêng chính là sự phức tạp của nó, bên cạnh vấn đề của cơ sở dữ liệu tập trung còn rất nhiều vấn đề phải giải quyết như: thiết kế cơ sở dữ liệu phân tán, xử lý truy vấn đồng thời trong phân tán, đảm bảo tính chính xác, toàn vẹn dữ liệu và an toàn hệ thống… Quản lý một hệ thống cơ sở dữ liệu phân tán là một thách thức ngay cả đối với người có nhiều kiến thức và kinh nghiệm trong lĩnh vực này. Vì vậy, quyết định có sử dụng hệ thống cơ sở dữ liệu phân tán thay cho hệ thống cơ sở dữ liệu tập trung hay không là cả bài toán lớn cần phải giải quyết. 2. Tính cấp thiết của đề tài Hiện nay phần lớn hệ thống quản lý đào tạo của các Trường Đại học Cao đẳng, cụ thể Trường CĐ Công nghệ Thông tin-Đại học Đà Nẵng được xây dựng theo mô hình cơ sở dữ liệu tập trung, cơ sở dữ liệu được lưu ở một máy chủ (server) và mọi hoạt động như đăng ký học phần của sinh viên, nhập điểm của phòng đào tạo hay quản lý 2 lớp học của giáo viên… đều truy cập trực tiếp lên một server gây nên sự quá tải xử lý cho server, giảm hiệu suất hoạt động của toàn bộ hệ thống. Nhằm góp phần nâng cao hiệu quả trong việc quản lý sinh viên của các trường Đại học Cao đẳng, đề tài này tập trung tìm hiểu và xây dựng mô hình cơ sở dữ liệu phân tán phù hợp với các yêu cầu đặt ra của hệ thống quản lý đào tạo. 3. Mục tiêu của đề tài Xây dựng hệ thống cơ sở dữ liệu phân tán quản lý đào tạo áp dụng vào các trường Đại học Cao Đẳng, cụ thể là trường CĐ Công nghệ Thông tin - Đại học Đà Nẵng 4. Đối tượng, phạm vi nghiên cứu 4.1. Đối tượng nghiên cứu: Mô hình cơ sở dữ liệu phân tán và giải pháp đồng bộ cơ sở dữ liệu 4.2. Phạm vi nghiên cứu: Hệ thống quản lý đào tạo trường CĐ Công nghệ Thông tin - ĐHĐN. MS SQL Server 2008 5. Cách tiếp cận, phương pháp nghiên cứu - Từ thực tế quản lý đào tạo của các trường Đại học Cao Đẳng, đề tài đề xuất một mô hình cơ sở dữ liệu phân tán phù hợp với hệ thống quản lý đào tạo. - Tìm hiểu các kỹ thuật phân tán dữ liệu trong MS SQL Server và chọn lựa phương pháp thích hợp với mô hình đã đề xuất - Cài đặt thực nghiệm vào hệ thống quản lý đào tạo của Trường CĐ Công nghệ Thông tin - ĐHĐN. 6. Nội dung nghiên cứu: - Thực trạng hệ thống quản lý đào tạo của các trường Đại học Cao đẳng, cụ thể là Trường CĐ Công nghệ Thông tin- ĐHĐN - Mô hình cơ sở dữ liệu phân tán quản lý đào tạo và giải pháp đồng bộ cơ sở dữ liệu phân tán trong MS SQL Server - Kết quả cài đặt thực nghiệm vào Trường CĐ Công nghệ Thông tin- ĐHĐN. 3 Chương 1. LÝ THUYẾT VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN Chương này sẽ trình bày về các khái niệm trong cơ sở dữ liệu phân tán, lý do sử dụng cơ sở dữ liệu phân tán cũng và các ưu và nhược điểm của nó. 1.1. Các khái niệm [1, 2] Cơ sở dữ liệu phân tán (Distributed DataBase - DDB) là một tập hợp nhiều cơ sở dữ liệu có liên đới logic và được phân bố trên một mạng máy tính. Trong đó liên đới logic là dữ liệu ở các nơi được sử dụng để giải quyết chung một vấn đề, còn phân bố trên một mạng máy tính là toàn bộ dữ liệu không phải lưu trữ ở một nơi mà lưu trữ trên nhiều trạm thuộc mạng máy tính. Hệ quản trị cơ sở dữ liệu phân tán (Distributed Database Management System- DDBMS) được định nghĩa là một hệ thống phần mềm cho phép quản lý các hệ cơ sở dữ liệu phân tán và làm cho sự phân tán trở nên “trong suốt” đối với người sử dụng. Hệ cơ sở dữ liệu phân tán (Distributed Database System-DDBS): Được xây dựng dựa trên hai công nghệ cơ bản là cơ sở dữ liệu và mạng máy tính. Một hệ cơ sở dữ liệu phân tán không phải là tập hợp các tập tin được lưu riêng lẻ tại mỗi nút của một mạng máy tính mà các tập tin này phải có liên đới logic với nhau, có cấu trúc và được truy xuất qua một giao diện chung. Hệ cơ sở dữ liệu phân tán và hệ cơ sở dữ liệu tập trung (a) Hệ cơ sở dữ liệu phân tán (b) Hệ cơ sở dữ liệu tập trung Hình 1. Hệ cơ sở dữ liệu phân tán và hệ cơ sở dữ liệu tập trung Nếu như trong môi trường hệ cơ sở dữ liệu tập trung dữ liệu được tập trung tại một nút mạng và mọi yêu cầu được chuyển tới vị trí đó, thì hệ cơ sở dữ liệu phân tán là môi trường trong đó dữ liệu phân tán trên một số vị trí. Hệ cơ sở dữ liệu phân tán và hệ xử lý phân tán Hệ xử lý phân tán (Distributed Processing) hay còn gọi là hệ tính toán phân tán (Distributed Computing) là hệ thống mà một số các bộ phận xử lý tự vận hành, được liên kết bởi một mạng máy tính và cùng thực hiện các tác vụ mà chúng được phân Trạm 5 Trạm 1 Trạm 2 Trạm 3Trạm 4 Mạng truyền dữ liệu Trạm 5 Trạm 1 Trạm 2 Trạm 3Trạm 4 Mạng truyền dữ liệu 4 công. Như vậy sự khác nhau cơ bản giữa hệ cơ sở dữ liệu phân tán và hệ xử lý phân tán chính là đối tượng phân tán, trong hệ cơ sở dữ liệu phân tán đối tượng phân tán là dữ liệu còn trong hệ xử lý phân tán đối tượng phân tán là thành phần xử lý. 1.2. Các lý do sử dụng cơ sở dữ liệu phân tán [1, 2] - Các tổ chức có cấu trúc phân tán: Trong thực tế có nhiều tổ chức được phân tán khắp nơi, trong khi đó, dữ liệu quản lý ngày càng lớn và phục vụ cho đa người dùng nằm phân tán, vì vậy cơ sở dữ liệu phân tán là con đường thích hợp với cấu trúc tự nhiên của các tổ chức đó. - Cần kết nối các cơ sở dữ liệu có sẵn: Cơ sở dữ liệu phân tán là giải pháp tự nhiên khi có các cơ sở dữ liệu đang tồn tại và sự cần thiết xây dựng một ứng dụng toàn cục. Trong trường hợp này cơ sở dữ liệu phân tán được tạo theo tiến trình từ dưới lên dựa trên nền tảng cơ sở dữ liệu đang tồn tại. Tiến trình này đòi hỏi phải tái cấu trúc các cơ sở dữ liệu cục bộ ở một mức nhất định. - Sự lớn mạnh của tổ chức: Các tổ chức có thể phát triển mở rộng bằng cách thành lập thêm các đơn vị mới, vừa có tính tự trị, vừa có quan hệ với các đơn vị tổ chức khác. - Giảm chi phí truyền thông: Việc tăng ứng dụng cục bộ có thể làm giảm chi phí truyền thông. - Nâng cao hiệu suất: Có cơ chế xử lý song song và phân mảnh dữ liệu theo ứng dụng làm cực đại hóa tính cục bộ của ứng dụng. - Tăng độ tin cậy và tính sẵn sàng: Khi hệ thống cơ sở dữ liệu tập trung bị hỏng, toàn bộ hệ thống trở nên vô dụng với tất cả các người dùng. Còn đối với cơ sở dữ liệu phân tán, nếu có một thành phần nào đó của hệ thống bị hỏng, hệ thống vẫn có thể duy trì hoạt động tại một số vị trí. 1.3. Hạn chế của cơ sở dữ liệu phân tán [1, 2] Bên cạnh các ưu điểm được trình trình bày bên trên, hệ thống cơ sở dữ liệu phân tán cũng có nhiều hạn chế sau: - Tính phức tạp: Các vấn đề của hệ cơ sở dữ liệu phân tán dĩ nhiên là phức tạp hơn rất nhiều với hệ cơ sở dữ liệu tập trung, bên cạnh các vấn đề của hệ tập trung nó còn rất nhiều vấn đề phải giải quyết như: thiết kế cơ sở dữ liệu phân tán, xử lý truy vấn phân tán, điều khiển đồng thời phân tán, … - Chi phí phần cứng: Một khi dữ liệu được sao lưu ở nhiều vị trí khác nhau sẽ dẫn đến việc gia tăng các tài nguyên cần sử dụng để lưu trữ. - Khó khăn trong việc đảm bảo tính toàn vẹn dữ liệu và sự an toàn của hệ thống. 5 1.4. Kiến trúc của hệ cơ sở dữ liệu phân tán [1, 2] - Kiến trúc client/server: Dữ liệu được tập trung và xử lý hầu hết ở server, các client chỉ lưu trữ và xử lý một phần dữ liệu thực sự cần thiết trong phạm vị hoạt động của client đó. - Kiến trúc peer-to-peer: Các vị trí ngang hàng nhau, có thể sử dụng như một hệ thống độc lập, tự quản lý dữ liệu của chính mình và chia sẻ dữ liệu cho các vị trí khác. 1.5. Kỹ thuật thiết kế cơ sở dữ liệu phân tán [1, 2] 1.5.1. Kiến trúc cơ bản của cơ sở dữ liệu phân tán Hình 2. Kiến trúc cơ sở dữ liệu phân tán - Lược đồ tổng thể: Định nghĩa tất cả các dữ liệu sẽ được lưu trữ trong cơ sở dữ liệu phân tán. Trong mô hình dữ liệu quan hệ, lược đồ tổng thể bao gồm tất cả các lược đồ quan hệ. - Lược đồ phân mảnh: Mỗi lược đồ quan hệ trong lược đồ tổng thể có thể chia thành một vài phần không gối lên nhau được gọi là mảnh (Fragments). Có nhiều cách khác nhau để thực hiện việc phân chia này (xem mục 1.5.3). - Lược đồ định vị: Các mảnh từ lược đồ phân mảnh được định vị vật lý trên một hoặc nhiều vị trí. Lược đồ định vị định nghĩa mảnh nào định vị tại các vị trí nào. - Lược đồ ánh xạ địa phương: Tập hợp tất cả các mảnh được lưu trữ tại một vị trí. CSDL1 CSDL2 CSDL3 Lược đồ tổng thể Lược đồ phân mảnh Lược đồ định vị Lược đồ ánh xạ địa phương 1 Lược đồ ánh xạ địa phương 2 Lược đồ ánh xạ địa phương 3 6 1.5.2. Các chiến lược thiết kế cơ sở dữ liệu phân tán - Phương pháp top-down: Phương pháp này thích hợp với cơ sở dữ liệu được thiết kế từ đầu. Bắt đầu từ việc thu thập và phân tích yêu cầu của hệ thống, tiếp theo là thiết kế các lược đồ cần thiết trong cơ sở dữ liệu phân tán: lược đồ tổng thể, lược đồ phân mảnh, lược đồ định vị và lược đồ ánh xạ địa phương. - Phương pháp bottom-up: Trong thực tế, nhiều hệ thống đã có sẵn một số cơ sở dữ liệu tại các địa phương, nhiệm vụ của người thiết kế là tích hợp chúng thành một cơ sở dữ liệu tổng thể. Phương pháp này là quá trình tích hợp lược đồ địa phương thành lược đồ tổng thể. 1.5.3. Phân mảnh (Fragmentation) Thiết kế phân mảnh chính là trả lời câu hỏi “Làm thế nào để cơ sở dữ liệu và các ứng dụng chạy trên cơ sở dữ liệu đó có thể đặt ở nhiều vị trí?”. Phân mảnh là chia một quan hệ thành những mảnh tách biệt, mỗi mảnh được phân bố tại các vị trí khác nhau. Lý do của phân mảnh là có được đơn vị phân tán thích hợp. Thường thì khung nhìn của các ứng dụng chỉ là tập con của quan hệ, nên đơn vị truy xuất không phải là toàn bộ quan hệ mà là tập con của quan hệ. Do đó, xem tập con của quan hệ là đơn vị phân tán là điều thích hợp duy nhất. Các phương pháp phân mảnh: phân mảnh ngang (Horizontal Fragmentation), phân mảnh dọc (Vertical Fragmentation) và phân mảnh hỗn hợp (Mixed Fragmentation). Hình 3. Minh họa các phương pháp phân mảnh 1. Phân mảnh ngang (Horizontal Fragmentation): Phân mảnh ngang chính là việc chia quan hệ theo chiều ngang, kết quả của phân mảnh ngang là các quan hệ con, số bộ trong các quan hệ con này là tách biệt nhau. Phân mảnh ngang thực chất là phép chọn thỏa một điều kiện cho trước. Phân mảnh ngang được chia làm 2 loại: phân mảnh ngang nguyên thủy và phân mảnh ngang dẫn xuất. 7 - Phân mảnh ngang nguyên thủy: Phân mảnh ngang nguyên thuỷ được định nghĩa bằng một phép toán chọn trên các quan hệ gốc. Với quan hệ R, các mảnh ngang của R là các Ri: Ri = σFi(R), 1 ≤ i ≤ n. Trong đó Fi là điều kiện chọn được sử dụng để có được mảnh Ri. - Phân mảnh ngang dẫn xuất: Phân mảnh ngang dẫn xuất là phân rã một quan hệ thành các mảnh dựa vào điều kiện chọn được định nghĩa trên một quan hệ khác có liên quan. 2. Phân mảnh dọc (Vertical Fragmentation): Một phân mảnh dọc cho một quan hệ R sinh ra các mảnh R1, R2,.., Rr, mỗi mảnh chứa một tập con các thuộc tính của R và cả khoá của R . Phân mảnh dọc thực chất là chia quan hệ theo chiều dọc, nghĩa là thiết lập các quan hệ mới từ một số thuộc tính của quan hệ gốc. Thực chất đây là phép chiếu lên tập con các thuộc tính của quan hệ. 3. Phân mảnh hỗn hợp (Mixed Fragmentation): Trong đa số các trường hợp, phân mảnh ngang hoặc phân mảnh dọc đơn giản không đủ đáp ứng các yêu cầu từ ứng dụng. Có một số trường hợp phân mảnh dọc có thể thực hiện sau một số mảnh ngang hoặc ngược lại, chọn lựa này được gọi là phân mảnh hỗn hợp. Các qui tắc phân mảnh đúng đắn: Khi phân mảnh một quan hệ phải tuân thủ các quy tắc sau để đảm bảo cơ sở dữ liệu không bị thay đổi về ngữ nghĩa sau khi phân mảnh: - Tính đầy đủ: Nếu một quan hệ R được phân thành các mảnh R1, R2,…, Rn thì mỗi bộ giá trị có trong R phải có mặt trong một hoặc các đoạn Ri - Tính tái thiết được: Nếu một quan hệ R được phân thành các mảnh R1, R2,…, Rn thì cần phải tồn tại một phép toán ω sao cho có thể tái thiết quan hệ gốc R từ các quan hệ phân rã Ri thông qua phép toán ω: R = ω(Ri). - Tính tách biệt: Nếu một quan hệ R được phân đoạn ngang thành các quan hệ R1, R2, …, Rn và bộ giá trị ti nằm trong đoạn Ri thì nó sẽ không nằm trong một đoạn Rk nào nữa. Tiêu chuẩn này đảm bảo các đoạn tách rời nhau. Nếu quan hệ được phân rã dọc thì khóa chính phải được lặp lại trong mỗi đoạn. 1.5.4. Nhân bản (Replication) Cơ sở dữ liệu sau khi phân mảnh thích hợp cần phải được quyết định cấp phát các mảnh cho các vị trí, các mảnh có thể được nhân bản hoặc có thể không nhân bản. Trong cơ sở dữ liệu không nhân bản (được gọi là cơ sở dữ liệu phân hoạch), mỗi mảnh được cấp phát trên một vị trí và không có bản sao nào trên các vị trí còn lại. 8 Trường hợp nhân bản, hoặc toàn bộ hoặc toàn bộ cơ sở dữ liêu tồn tại ở mỗi vị trí (cơ sở dữ liệu nhân bản hoàn toàn) hoặc các mảnh phân tán đến các vị trí, trong đó một mảnh có thể có nhiều bản sao nằm tại nhiều vị trí (cơ sở dữ liệu nhân bản một phần). Lý do cần nhân bản là nhằm đảm bảo được độ tin cậy và hiệu quả cho yêu cầu truy vấn dữ liệu, cụ thể nếu có nhiều bản sao của một đơn vị dữ liệu đặt tại nhiều vị trí thì người dùng vẫn có cơ hội truy xuất được dữ liệu ngay cả khi vị trí khác xảy ra sự cố. Bảng 1 so sánh ba phương pháp nhân bản ứng với các chức năng khác nhau của hệ cơ sở dữ liệu phân tán. Nhân bản hoàn toàn Nhân bản một phần Phân hoạch Xử lý truy vấn Dễ Khó Khó Quản lý thư mục Dễ hoặc không tồn tại Khó Khó Điều khiển đồng thời Vừa phải Khó Dễ Độ tin cậy Rất cao Cao Thấp Tính thực tế Có thể áp dụng Thực tế Có thể áp dụng Bảng 1. So sánh các phương pháp nhân bản 1.5.5. Hạn chế của phân mảnh và nhân bản - Hạn chế của phân mảnh liên quan đến việc kiểm tra tính toàn vẹn của dữ liệu, chẳng hạn như một số thuộc tính tham gia vào một ràng buộc có thể bị phân rã thành các mảnh khác nhau và cấp phát cho những vị trí khác nhau, lúc đó việc kiểm tra ràng buộc phải truy tìm dữ liệu ở nhiều vị trí. Hay một hạn chế khác của phân mảnh khi một ứng dụng có các khung nhìn được định nghĩa trên nhiều mảnh khác nhau sẽ giảm hiệu suất hoạt động. - Đối với việc nhân bản, việc cập nhật dữ liệu cũng gặp nhiều rắc rối vì hệ thống phải đảm bảo rằng tất cả các bản sao ở các vị trí phải được cập nhật chính xác. Vì vậy, quyết định phân mảnh như thế nào, có nhân bản hay không và việc phân bố các mảnh tới các vị trí sao cho tối ưu là bài toán qui hoạch toán học với độ phức tạp NP-hard nhằm hạ tối đa chi phí lưu trữ, chi phí xử lý và truyền thông. 9 Chương 2. CƠ SỞ DỮ LIỆU PHÂN TÁN TRONG MS SQL SERVER MS SQL Server hỗ trợ hai phương pháp phân tán dữ liệu là Distributed Transaction và Replication. Chương này sẽ trình bày đặc điểm của từng phương pháp, đặc biệt là Replication và sự khác nhau giữa chúng. 2.1. Distributed Transaction [3] Transaction (giao dịch) là một đơn vị xử lý nguyên tố gồm tập hợp các thao tác truy xuất tới những hạng mục dữ liệu. Transaction phải thỏa mãn 4 tiêu chí sau đây: - Tính nguyên tố: Hoặc là tất cả các thao tác trong giao dịch được thực hiện thành công hoặc không thao tác nào thành công cả. - Tính nhất quán: Khi giao dịch kết thúc (thành công hay thất bại), toàn bộ dữ liệu phải ở trong trạng thái nhất quán. - Tính cô lập: Khi có nhiều giao dịch thực thi đồng thời thì kết quả của giao dịch này không ảnh hưởng tới kết quả của giao dịch kia. - Tính bền vững: Khi một giao dịch hoàn thành thì tất cả thay đổi của nó trên dữ liệu vẫn được duy trì bền vững bất chấp sự cố có thể xảy ra. Chẳng hạn, một giao dịch T chuyển số tiền 100$ từ tài khoản A1 sang tài khoản A2 tại một ngân hàng B gồm hai thao tác như sau: O1: Rút 100$ từ tài khoản A1. O2: Nạp 100$ vào tài khoản A2. Giao dịch T được gọi là thành công khi cả hai hành động thành công, nếu một trong hai hành động thất bại thì hành động còn lại phải thất bại và giao dịch lúc đó được xem là thất bại. Distributed Transaction tượng trưng cho một trong hai cách phân tán dữ liệu trong MS SQL Server. Distributed transaction là một giao dịch bao gồm những thao tác truy cập đến những hạng mục dữ liệu trên nhiều site khác nhau. Sự kết hợp các site để cùng thực hiện một giao dịch được điều hành bởi bộ phận quản lý giao dịch. MS DTC (Microsoft Distributed Transaction Coordinator) là một bộ phận quản lý giao dịch, bằng cách áp dụng kỹ thuật Two Phase Commit (2PC), MS DTC đảm bảo sự hoàn thành giao dịch tại tất cả các site vào cùng một thời điểm. Mở rộng ví dụ chuyển tiền bên trên, ngân hàng B có 2 chi nhánh B1 và B2 trong đó tài khoản A1 được quản lý bởi site ở chi nhánh B1 và tài khoản A2 được quản lý bởi site ở chi nhánh B2. Khi đó, giao dịch T là một distributed transaction, việc thực thi của giao dịch T liên quan đến việc thực thi của cả 2 site. 10 Để đưa ra quyết định đúng trong việc commit (chấp nhận) hay rollback (hủy bỏ) của một distributed transaction, những site liên quan cần phải có kết nối với nhau. Cụ thể, khi một ứng dụng khởi tạo một distributed transaction bằng cách gửi yêu cầu Begin Transaction đến một site bất kỳ trong hệ thống. Khi đó site này sẽ đóng vai trò Coordinator, nó giữ một bảng copy của MS DTC log chứa nội dung của distributed transaction và thông tin của các site liên quan đến distributed transaction. Mỗi site mà có chứa những hạng mục dữ liệu được truy cập bởi distributed transaction này sẽ là một Participant. Vào giai đoạn cuối của một distributed transaction, các Participant chịu trách nhiệm phối hợp với Coordinator để đồng thuận trong việc commit hay rollback (xem Hình 4). Hình 4. Quá trình truyền một distributed transaction qua các site Two Phase Commit (2PC) được đề xuất nhằm tạo ra sự đồng thuận trong việc Commit hay Rollback giữa Coordinator và các Participant của một distributed transaction. Để đảm bảo tính nguyên tố của transaction, nếu một site liên quan đến một distributed transaction bị rollback, thì toàn bộ các site liên quan phải bị rollback bất chấp chúng đã rơi vào trạng thái chuẩn bị commit (PreparedCommit). Và chỉ khi tất cả các site liên quan đều ở trạng tháo preparedcommit thì distributed transaction mới được commit. Cụ thể, kỹ thuật 2PC gồm 2 pha: pha biểu quyết (Voting Phase) và pha hoàn tất (Completion Phase): - Tại Voting Phase: Coordinator gửi thông báo “CanCommit?” yêu cầu tất cả các Participant báo cáo trạng thái của nó liên quan đến transaction. Sau khi nhận được thông báo “CanCommit?”, nếu một Participant có thể commit thì nó tạm thời chưa được commit mà chỉ được ở trong trạng thái preparedcommit và gửi thông báo “Yes” về Coordinator. Nếu một Participant đã rollback thì gửi thông báo “No” về Coordinator. Site(S3)Site(S2)Site(S1) 11 - Tại Completion Phase: Dựa vào các thông báo trạng thái của các Participant, Coordinator ra quyết định cuối cùng và gửi quyết định đến tất cả Participant. Cụ thể, nếu tất cả các Participant thông báo “Yes” trong Voting Phase, Coordinator ra quyết định “DoCommit”. Nếu tồn tại một Participant thông báo “No” trong voting phase thì Coordinator ra quyết định “DoRollback”. Sau khi nhận được quyết định cuối cùng từ Coordinator, nếu quyết định là “DoCommit” thì các Participant thực hiện chuyển từ trạng thái preparedcommit sang trạng thái commit. Ngược lại nếu quyết định “DoRollback”, các Participant chuyển từ trạng thái preparedcommit sang trạng thái rollback. Quá trình thực thi 2PC có thể bị ảnh hưởng khi một site bị sự cố hoặc các tin nhắn bị mất. Khi đó, các site khác bị lock trong một khoảng thời gian dài để chờ site gặp sự cố khôi phục hay tin nhắn được gửi lại, điều này dẫn tới các hạng mục dữ liệu liên quan đến distributed transaction không được giải phóng cho các transaction khác truy cập trong một thời gian dài. Đây chính là điểm yếu của kỹ thuật phân tán dữ liệu này. 2.2. Replication [3, 4, 6] 2.2.1. Khái niệm Replication (nhân bản) là “một tập các công nghệ” mà có thể di chuyển dữ liệu và các đối tượng của cơ sở dữ liệu từ vị trí này sang các vị trí khác, điều này cho phép người dùng có thể làm việc với bản copy của cơ sở dữ liệu và bất kỳ thay đổi nào trong cơ sở dữ liệu tại một vị trí cũng sẽ được chuyển tới các vị trí ở xa đang có kết nối qua hệ thống mạng máy tính. Sự nhất quán của cơ sở dữ liệu được duy trì bởi quá trình xử lý đồng bộ. Có 2 phương pháp nhân bản dữ liệu: Eager replication và Lazy Replication. - Eager Replication: Với phương pháp này, tất cả các site được bảo đảm là luôn thấy cùng giá trị dữ liệu tại cùng một thời điểm, điều này có nghĩa khi một ứng dụng cập nhật trên một bản sao của một bảng dữ liệu tại một site thì các bản sao khác của bảng dữ liệu đó tại các site khác cũng được cập nhật trong cùng giao dịch, nếu bất kỳ site nào mất kết nối thì việc cập nhật sẽ bị ngăn chặn. Hơn nữa, tính nguyên tố của giao dịch được đảm bảo bởi kỹ thuật 2PC, mỗi site phải commit đồng thời mọi thay đổi hoặc không site nào commit những thay đổi. Phương pháp nhân bản này rõ ràng không khả thi khi số lượng site quá lớn. - Lazy Replication: Có một sự nhất quán ngầm giữa các site do có một sự trì hoãn trong việc phản ánh các giá trị dữ liệu đến các site tham gia, việc cập nhật dữ liệu vẫn được thực hiện trên site này dù site khác có mất kết nối và việc đồng bộ sẽ được thực hiện khi site đó kết nối trở lại. Ưu điểm của phương pháp nhân bản này là tính độc lập của các site được tăng cao, tuy nhiên cũng có thể có 2 site cùng cập nhật trên 12 cùng một hạng mục dữ liệu tại cùng thời điểm, điều này có thể dẫn tới sự xung đột và đây là vấn đề cần phải giải quyết trong Lazy Replication. Sự khác nhau cơ bản giữa Eager Replication và Lazy Replication là dữ liệu có nhất quán tại cùng một lúc hay không. 2.2.2. Các loại Replication trong MS SQL Server MS SQL Server đã đưa ra nhiều loại nhân bản để đáp ứng các yêu cầu khác nhau của ứng dụng. Mỗi loại cung cấp các khả năng và thuộc tính khác nhau nhằm đạt đến mục tiêu đảm bảo tính độc lập server và sự nhất quán dữ liệu. - Snapshot Replication: Đây là nhân bản đơn giản nhất thuộc loại Lazy Replication, nó sao chép toàn bộ dữ liệu cần nhân bản từ Publisher tới Subscriber. Khi có thay đổi, Snapshot Replication gởi tất cả dữ liệu tới cho Subscriber thay vì chỉ gởi những thay đổi. Loại nhân bản này được đánh giá cao trong các ứng dụng chỉ đọc như tìm kiếm hay các hệ thống yêu cầu dữ liệu mới nhất và dung lượng không lớn. - Transactional Replication: Nhân bản này sử dụng transaction log để giữ những thay đổi trên dữ liệu (insert, update, delete) và lưu những thay đổi này lên cơ sở dữ liệu phân tán (tại Distrubutor), những thay đổi này sẽ được chuyển đến các Subscriber ngay sau khi cập nhật. Các subscription của nhân bản này được gán mặc định là read-only nên nó thuộc loại Lazy Replication, trường hợp cho phép cập nhật trên subscription thì nhân bản này thuộc loại Eager Replication. - Merge Replication: Nhân bản này thuộc loại Lazy Replication nên các site có tính độc lập rất cao, Publisher và Subscriber có thể làm việc độc lập và sẽ kết nối với nhau theo những khoảng thời gian để hội tụ kết quả lại, cả hai Publisher và Subsciber đều có thể cập nhật dữ liệu. Nếu xung đột xảy ra giữa các server thì những xung đột này sẽ được giải quyết một cách tự động, khi đó bộ giải quyết đụng độ sẽ chọn server có độ ưu tiên cao hơn. Hình 5. Mức độ độc lập và độ trễ của các phương pháp phân tán Độ trễ và tính độc lập thấp Độ trễ và tính độc lập cao Transactional Replication Snapshot Replication Merge Replication 13 Việc chọn lựa loại nhân bản nào tùy thuộc vào nhiều yếu tố trong đó 2 yếu tố chính là độ trễ của việc đồng bộ và tính độc lập giữa các site. Hình 5 cho thấy mức độ độc lập và độ trễ giữa các loại nhân bản, trong đó Transactional Replication có độ trễ và tính độc lập thấp nhất, Merge Replication có độ trễ cao nhất và tính độc lập tối đa. Phầ
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG CĐ CÔNG NGHỆ THÔNG TIN
BÁO CÁO TỔNG KẾT
ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP CƠ SỞ
XÂY DỰNG HỆ THỐNG CƠ SỞ DỮ LIỆU PHÂN TÁN QUẢN LÝ ĐÀO TẠO ÁP DỤNG CHO CÁC TRƯỜNG
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG CĐ CÔNG NGHỆ THÔNG TIN
BÁO CÁO TỔNG KẾT
ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP CƠ SỞ
XÂY DỰNG HỆ THỐNG CƠ SỞ DỮ LIỆU PHÂN TÁN QUẢN LÝ ĐÀO TẠO ÁP DỤNG CHO CÁC TRƯỜNG
Trang 3MỤC LỤC
MỞ ĐẦU 1
CHƯƠNG 1 LÝ THUYẾT VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN 3
1.1 Các khái niệm 3
1.2 Các lý do sử dụng cơ sở dữ liệu phân tán 4
1.3 Hạn chế của cơ sở dữ liệu phân tán 4
1.4 Kiến trúc của hệ cơ sở dữ liệu phân tán 5
1.5 Kỹ thuật thiết kế cơ sở dữ liệu phân tán 5
1.5.1 Kiến trúc cơ bản của cơ sở dữ liệu phân tán 5
1.5.2 Các chiến lược thiết kế cơ sở dữ liệu phân tán 6
1.5.3 Phân mảnh (Fragmentation) 6
1.5.4 Nhân bản (Replication) 7
1.5.5 Hạn chế của phân mảnh và nhân bản 8
CHƯƠNG 2 CƠ SỞ DỮ LIỆU PHÂN TÁN TRONG MS SQL SERVER 9
2.1 Distributed Transaction 9
2.2 Replication 11
2.2.1 Khái niệm 11
2.2.2 Các loại Replication trong MS SQL Server 12
2.3 Lợi ích của Replication 13
2.4 Các vấn đề cơ bản trong Replication 13
2.4.1 Thành phần chính trong Replication 13
2.4.2 Mô hình nhân bản logic 14
2.4.3 Các mô hình nhân bản vật lý 15
2.4.4 Kỹ thuật chuyển dữ liệu từ Publisher tới Subcriber 17
2.4.5 Các loại Agent 18
CHƯƠNG 3 REPLICATION 19
3.1 Snapshot Replication 19
3.1.1 Giới thiệu Snapshot Replication 19
3.1.2 Hoạt động của Snapshot Replication 19
3.2 Transactional Replication 20
3.2.1 Giới thiệu Transactional Replication 20
3.2.2 Hoạt động của Transactional Replication 21
Trang 43.3 Merge Replication 22
3.3.1 Giới thiệu Merge Replication 22
3.3.2 Hoạt động của Merge Replication 23
CHƯƠNG 4 XÂY DỰNG MÔ HÌNH PHÂN TÁN 24
4.1 Qui trình quản lý đào tạo 24
4.2 Mô hình cơ sở dữ liệu phân tán quản lý đào tạo 24
4.3 Thiết kế cơ sở dữ liệu phân tán 25
4.4 Giải pháp đồng bộ cơ sở dữ liệu phân tán 26
4.5 Các vấn đề trong đồng bộ dữ liệu 26
4.6 An toàn và bảo mật trong Replication 27
4.7 Cài đặt thực nghiệm 27
4.8 Kiểm tra kết quả đồng bộ thông qua chương trình ứng dụng 31
4.9 Đánh giá kết quả thực nghiệm 36
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 37
5.1 Kết quả đạt được 37
5.2 Hạn chế 37
5.3 Hướng phát triển 37
TÀI LIỆU THAM KHẢO 38
Trang 5DANH MỤC HÌNH VẼ
Hình 1 Hệ cơ sở dữ liệu phân tán và hệ cơ sở dữ liệu tập trung 3
Hình 2 Kiến trúc cơ sở dữ liệu phân tán 5
Hình 3 Minh họa các phương pháp phân mảnh 6
Hình 4 Quá trình truyền một Distributed Transaction qua các site 10
Hình 5 Mức độ độc lập và độ trễ của các phương pháp phân tán 12
Hình 6 Mô hình nhân bản logic 15
Hình 7 Mô hình nhân bản Publisher/Distributor-Subscriber đơn giản 15
Hình 8 Mô hình nhân bản vật lý Central Publisher-Multiple Subscribers 16
Hình 9 Mô hình central Subscriber/Multiple Publisher 16
Hình 10 Mô hình Multiple Publishers-Multiple Subscriber 17
Hình 11 Hoạt động của Snapshot Replication 20
Hình 12 Hoạt động của Transactional Replication 21
Hình 13 Hoạt động của Merge Replication 23
Hình 14 Một mô hình cơ sở dữ liệu phân tán quản lý đào tạo 25
Hình 15 Cơ sở dữ liệu được dùng thử nghiệm 28
Hình 16 Cấu hình Replication trong MS SQL Server 29
Hình 17 Cơ sở dữ liệu tại các server 29
Hình 18 Kết quả đồng bộ dữ liệu giữa server Phòng đào tạo và server Khoa 30
Hình 19 Kết quả đồng bộ dữ liệu giữa server Phòng đào tạo và server Sinh viên 30
Hình 20 Đăng nhập vào server Phòng đào tạo và server Sinh viên 31
Hình 21 Thêm mới một dòng dữ liệu tại server Phòng đào tạo 31
Hình 22 Dòng dữ liệu mới được đồng bộ về server Khoa 32
Hình 23 Cập nhật dữ liệu liệu tại server Phòng đào tạo 32
Hình 24 Cập nhật dữ liệu liệu tại server Khoa 33
Hình 25 Kết quả sau khi đồng độ tại server Phòng đào tạo 33
Hình 26 Kết quả sau khi đồng độ tại server Khoa 34
Hình 27 Cập nhật dữ liệu tại server Phòng đào tạo 34
Hình 28 Cập nhật dữ liệu tại server Khoa 35
Hình 29 Kết quả sau khi đồng độ tại server Phòng đào tạo 35
Hình 30 Kết quả sau khi đồng độ tại server Khoa 36
Trang 6DANH MỤC BẢNG
Bảng 1 So sánh các phương pháp nhân bản 7
Trang 7DTC : Distributed Transaction Coordinator
Trang 8ĐẠI HỌC ĐÀ NẴNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG CĐ CÔNG NGHỆ THÔNG TIN Độc lập – Tự do – Hạnh phúc
THÔNG TIN KẾT QUẢ NGHIÊN CỨU
1 Thông tin chung:
- Tên đề tài: XÂY DỰNG HỆ THỐNG CƠ SỞ DỮ LIỆU PHÂN TÁN QUẢN
LÝ ĐÀO TẠO ÁP DỤNG CHO CÁC TRƯỜNG ĐẠI HỌC – CAO ĐẲNG
- Mã số: T2013-07-04
- Chủ nhiệm: NGUYỄN THỊ LY SA
- Thành viên tham gia:
- Cơ quan chủ trì: Trường Cao đẳng Công nghệ thông tin – Đại học Đà Nẵng
- Thời gian thực hiện: từ ngày 01/01/2013 đến ngày 31/12/2013
4 Tóm tắt kết quả nghiên cứu:
Đề tài đã đề xuất một mô hình cơ sở dữ liệu phân tán cho hệ thống quản lý đào tạo
áp dụng cho các trường Đại học Cao đẳng Cụ thể, hệ thống cơ sở dữ liệu phân tán của Trường CĐ Công nghệ Thông tin-ĐHĐN gồm 3 server:
- Server dùng riêng cho Phòng Đào tạo và các bộ phận khác như Phòng Công tác Sinh viên, Phòng Tài vụ để cập nhật lớp học phần, điểm, học phí, xét học vụ… (gọi là server Phòng Đào tạo)
Trang 9- Server dùng riêng cho các Khoa cập nhật thông tin lịch trình giảng dạy của giáo viên, điểm danh, phân công giáo viên hướng dẫn đề tài… (gọi là server Khoa)
- Server dành riêng cho sinh viên xem các thông tin cá nhân và thông tin liên quan đến việc học tập qua internet như điểm, thời khóa biểu và đăng ký học phần… (gọi là server Sinh viên )
Ba server này kết nối với nhau thông qua hệ thống mạng LAN, mọi dữ liệu trong
hệ thống quản lý đào tạo đều được lưu tại server Phòng Đào tạo, một phần dữ liệu của server này được nhân bản đến 2 server còn lại theo đúng chức năng và nhiệm vụ của từng server Ba server này đều đặn đồng bộ dữ liệu với nhau để đảm bảo tính chính xác cao nhất của dữ liệu
Đề tài sử dụng kỹ thuật Replication trong MS SQL Server 2008 để cài đặt thử nghiệm Kết quả đồng bộ có độ chính xác đạt 100% và thời gian đồng bộ ở mức chấp nhận được
5 Tên sản phẩm:
- Hệ thống cơ sở dữ liệu phân tán quản lý đào tạo
- Bài báo đăng Kỷ yếu hội thảo nghiên cứu khoa học: Công Nghệ Thông Tin Và Ứng Dụng Công Nghệ Thông Tin Trong Các Lĩnh Vực, Trường Cao đẳng Công nghệ Thông tin, lần thứ 2
- Báo cáo tổng kết kết quả nghiên cứu đề tài
6 Hiệu quả, phương thức chuyển giao kết quả nghiên cứu và khả năng áp dụng:
- Về mặt Giáo dục - Đào tạo: Phục vụ công tác giảng dạy, nghiên cứu và thực hành chuyên đề Cơ sở dữ liệu phân tán cho sinh viên trong khoa Công nghệ Thông tin, chuyên ngành Hệ thống thông tin
- Về sản phẩm ứng dụng : Góp phần nâng cao hiệu quả trong quá trình quản lý đào tạo tại các trường Đại học Cao Đẳng
7 Hình ảnh, sơ đồ minh họa chính:
Trang 10Hình 1 Một mô hình cơ sở dữ liệu phân tán trong quản lý đào tạo
Hình 2 Cấu hình Replication trong MS SQL Server
Publisher: server Phòng Đào tạo
Subscriber: server Sinhviên
Subscriber: server Khoa
Publication ứng với server Khoa
Publication ứng với server Sinh viên
Subscription tại server Sinh viên
Subscription tại server Khoa
Trang 11Đà Nẵng, ngày 15 tháng 12 năm 2013
Cơ quan chủ trì Chủ nhiệm đề tài
Nguyễn Thị Ly Sa
Trang 12lý một cách tập trung, nhiều ứng dụng khác nhau có thể truy xuất dữ liệu trực tiếp từ
cơ sở dữ liệu tập trung đó
Cơ sở dữ liệu tập trung cũng tồn tại nhiều khuyết điểm, có thể kể đến đó là khi trung tâm dữ liệu có sự cố thì toàn hệ thống sẽ ngừng hoạt động, hay tình trạng tắc nghẽn khi có quá nhiều yêu cầu truy xuất vào cơ sở dữ liệu Cơ sở dữ liệu phân tán ra đời đã phần nào khắc phục được những điểm yếu của cơ sở dữ liệu tập trung Là kết quả của sự hợp nhất của hai hướng tiếp cận đối với quá trình xử lý dữ liệu: công nghệ
cơ sở dữ liệu và công nghệ mạng máy tính
Cơ sở dữ liệu phân tán gồm nhiều cơ sở dữ liệu tích hợp lại với nhau thông qua mạng máy tính để trao đổi dữ liệu Cơ sở dữ liệu được tổ chức và lưu trữ ở những vị trí khác nhau trong mạng máy tính và chương trình ứng dụng làm việc trên cơ sở truy cập dữ liệu ở những điểm khác nhau đó Xét trên khía cạnh người dùng, đặc biệt là các công ty xí nghiệp lớn, thì cơ sở dữ liệu phân tán đáp ứng nhu cầu tốt hơn cơ sở
dữ liệu tập trung ứng với sự phân bố ngày càng rộng rãi của các tổ chức này
Tuy nhiên, vấn đề lớn nhất của hệ thống cơ sở dữ liệu phân tán nói chung và của
đề tài nói riêng chính là sự phức tạp của nó, bên cạnh vấn đề của cơ sở dữ liệu tập trung còn rất nhiều vấn đề phải giải quyết như: thiết kế cơ sở dữ liệu phân tán, xử lý truy vấn đồng thời trong phân tán, đảm bảo tính chính xác, toàn vẹn dữ liệu và an toàn hệ thống… Quản lý một hệ thống cơ sở dữ liệu phân tán là một thách thức ngay
cả đối với người có nhiều kiến thức và kinh nghiệm trong lĩnh vực này Vì vậy, quyết định có sử dụng hệ thống cơ sở dữ liệu phân tán thay cho hệ thống cơ sở dữ liệu tập trung hay không là cả bài toán lớn cần phải giải quyết
2 Tính cấp thiết của đề tài
Hiện nay phần lớn hệ thống quản lý đào tạo của các Trường Đại học Cao đẳng, cụ thể Trường CĐ Công nghệ Thông tin-Đại học Đà Nẵng được xây dựng theo mô hình
cơ sở dữ liệu tập trung, cơ sở dữ liệu được lưu ở một máy chủ (server) và mọi hoạt động như đăng ký học phần của sinh viên, nhập điểm của phòng đào tạo hay quản lý
Trang 13lớp học của giáo viên… đều truy cập trực tiếp lên một server gây nên sự quá tải xử lý cho server, giảm hiệu suất hoạt động của toàn bộ hệ thống
Nhằm góp phần nâng cao hiệu quả trong việc quản lý sinh viên của các trường Đại học Cao đẳng, đề tài này tập trung tìm hiểu và xây dựng mô hình cơ sở dữ liệu phân tán phù hợp với các yêu cầu đặt ra của hệ thống quản lý đào tạo
3 Mục tiêu của đề tài
Xây dựng hệ thống cơ sở dữ liệu phân tán quản lý đào tạo áp dụng vào các trường Đại học Cao Đẳng, cụ thể là trường CĐ Công nghệ Thông tin - Đại học Đà Nẵng
4 Đối tượng, phạm vi nghiên cứu
4.1 Đối tượng nghiên cứu:
Mô hình cơ sở dữ liệu phân tán và giải pháp đồng bộ cơ sở dữ liệu
4.2 Phạm vi nghiên cứu:
Hệ thống quản lý đào tạo trường CĐ Công nghệ Thông tin - ĐHĐN
MS SQL Server 2008
5 Cách tiếp cận, phương pháp nghiên cứu
- Từ thực tế quản lý đào tạo của các trường Đại học Cao Đẳng, đề tài đề xuất một mô hình cơ sở dữ liệu phân tán phù hợp với hệ thống quản lý đào tạo
- Tìm hiểu các kỹ thuật phân tán dữ liệu trong MS SQL Server và chọn lựa phương pháp thích hợp với mô hình đã đề xuất
- Cài đặt thực nghiệm vào hệ thống quản lý đào tạo của Trường CĐ Công nghệ Thông tin - ĐHĐN
6 Nội dung nghiên cứu:
- Thực trạng hệ thống quản lý đào tạo của các trường Đại học Cao đẳng, cụ thể
là Trường CĐ Công nghệ Thông tin- ĐHĐN
- Mô hình cơ sở dữ liệu phân tán quản lý đào tạo và giải pháp đồng bộ cơ sở dữ liệu phân tán trong MS SQL Server
- Kết quả cài đặt thực nghiệm vào Trường CĐ Công nghệ Thông tin- ĐHĐN
Trang 14Chương 1 LÝ THUYẾT VỀ CƠ SỞ DỮ LIỆU PHÂN TÁN
Chương này sẽ trình bày về các khái niệm trong cơ sở dữ liệu phân tán, lý do sử dụng cơ sở dữ liệu phân tán cũng và các ưu và nhược điểm của nó
1.1 Các khái niệm [1, 2]
Cơ sở dữ liệu phân tán (Distributed DataBase - DDB) là một tập hợp nhiều cơ sở
dữ liệu có liên đới logic và được phân bố trên một mạng máy tính Trong đó liên đới logic là dữ liệu ở các nơi được sử dụng để giải quyết chung một vấn đề, còn phân bố trên một mạng máy tính là toàn bộ dữ liệu không phải lưu trữ ở một nơi mà lưu trữ trên nhiều trạm thuộc mạng máy tính
Hệ quản trị cơ sở dữ liệu phân tán (Distributed Database Management System-
DDBMS) được định nghĩa là một hệ thống phần mềm cho phép quản lý các hệ cơ sở
dữ liệu phân tán và làm cho sự phân tán trở nên “trong suốt” đối với người sử dụng
Hệ cơ sở dữ liệu phân tán (Distributed Database System-DDBS): Được xây dựng
dựa trên hai công nghệ cơ bản là cơ sở dữ liệu và mạng máy tính Một hệ cơ sở dữ liệu phân tán không phải là tập hợp các tập tin được lưu riêng lẻ tại mỗi nút của một mạng máy tính mà các tập tin này phải có liên đới logic với nhau, có cấu trúc và được truy xuất qua một giao diện chung
Hệ cơ sở dữ liệu phân tán và hệ cơ sở dữ liệu tập trung
(a) Hệ cơ sở dữ liệu phân tán (b) Hệ cơ sở dữ liệu tập trung
Hình 1 Hệ cơ sở dữ liệu phân tán và hệ cơ sở dữ liệu tập trung
Nếu như trong môi trường hệ cơ sở dữ liệu tập trung dữ liệu được tập trung tại một nút mạng và mọi yêu cầu được chuyển tới vị trí đó, thì hệ cơ sở dữ liệu phân tán là môi trường trong đó dữ liệu phân tán trên một số vị trí
Hệ cơ sở dữ liệu phân tán và hệ xử lý phân tán
Hệ xử lý phân tán (Distributed Processing) hay còn gọi là hệ tính toán phân tán (Distributed Computing) là hệ thống mà một số các bộ phận xử lý tự vận hành, được liên kết bởi một mạng máy tính và cùng thực hiện các tác vụ mà chúng được phân
Trạm 5
Trạm 1
Trạm 2
Trạm 3 Trạm 4
Mạng truyền dữ liệu
Trang 15công Như vậy sự khác nhau cơ bản giữa hệ cơ sở dữ liệu phân tán và hệ xử lý phân tán chính là đối tượng phân tán, trong hệ cơ sở dữ liệu phân tán đối tượng phân tán là
dữ liệu còn trong hệ xử lý phân tán đối tượng phân tán là thành phần xử lý
1.2 Các lý do sử dụng cơ sở dữ liệu phân tán [1, 2]
- Các tổ chức có cấu trúc phân tán: Trong thực tế có nhiều tổ chức được phân
tán khắp nơi, trong khi đó, dữ liệu quản lý ngày càng lớn và phục vụ cho đa người dùng nằm phân tán, vì vậy cơ sở dữ liệu phân tán là con đường thích hợp với cấu trúc
tự nhiên của các tổ chức đó
- Cần kết nối các cơ sở dữ liệu có sẵn: Cơ sở dữ liệu phân tán là giải pháp tự
nhiên khi có các cơ sở dữ liệu đang tồn tại và sự cần thiết xây dựng một ứng dụng toàn cục Trong trường hợp này cơ sở dữ liệu phân tán được tạo theo tiến trình từ dưới lên dựa trên nền tảng cơ sở dữ liệu đang tồn tại Tiến trình này đòi hỏi phải tái cấu trúc các cơ sở dữ liệu cục bộ ở một mức nhất định
- Tăng độ tin cậy và tính sẵn sàng: Khi hệ thống cơ sở dữ liệu tập trung bị hỏng,
toàn bộ hệ thống trở nên vô dụng với tất cả các người dùng Còn đối với cơ sở dữ liệu phân tán, nếu có một thành phần nào đó của hệ thống bị hỏng, hệ thống vẫn có thể duy trì hoạt động tại một số vị trí
1.3 Hạn chế của cơ sở dữ liệu phân tán [1, 2]
Bên cạnh các ưu điểm được trình trình bày bên trên, hệ thống cơ sở dữ liệu phân tán cũng có nhiều hạn chế sau:
- Tính phức tạp: Các vấn đề của hệ cơ sở dữ liệu phân tán dĩ nhiên là phức tạp
hơn rất nhiều với hệ cơ sở dữ liệu tập trung, bên cạnh các vấn đề của hệ tập trung nó còn rất nhiều vấn đề phải giải quyết như: thiết kế cơ sở dữ liệu phân tán, xử lý truy vấn phân tán, điều khiển đồng thời phân tán, …
- Chi phí phần cứng: Một khi dữ liệu được sao lưu ở nhiều vị trí khác nhau sẽ
dẫn đến việc gia tăng các tài nguyên cần sử dụng để lưu trữ
- Khó khăn trong việc đảm bảo tính toàn vẹn dữ liệu và sự an toàn của hệ thống
Trang 161.4 Kiến trúc của hệ cơ sở dữ liệu phân tán [1, 2]
- Kiến trúc client/server: Dữ liệu được tập trung và xử lý hầu hết ở server, các
client chỉ lưu trữ và xử lý một phần dữ liệu thực sự cần thiết trong phạm vị hoạt động của client đó
- Kiến trúc peer-to-peer: Các vị trí ngang hàng nhau, có thể sử dụng như một hệ
thống độc lập, tự quản lý dữ liệu của chính mình và chia sẻ dữ liệu cho các vị trí khác
1.5 Kỹ thuật thiết kế cơ sở dữ liệu phân tán [1, 2]
1.5.1 Kiến trúc cơ bản của cơ sở dữ liệu phân tán
Hình 2 Kiến trúc cơ sở dữ liệu phân tán
- Lược đồ tổng thể: Định nghĩa tất cả các dữ liệu sẽ được lưu trữ trong cơ sở
dữ liệu phân tán Trong mô hình dữ liệu quan hệ, lược đồ tổng thể bao gồm tất cả các lược đồ quan hệ
- Lược đồ phân mảnh: Mỗi lược đồ quan hệ trong lược đồ tổng thể có thể chia
thành một vài phần không gối lên nhau được gọi là mảnh (Fragments) Có nhiều cách khác nhau để thực hiện việc phân chia này (xem mục 1.5.3)
- Lược đồ định vị: Các mảnh từ lược đồ phân mảnh được định vị vật lý trên một
hoặc nhiều vị trí Lược đồ định vị định nghĩa mảnh nào định vị tại các vị trí nào
- Lược đồ ánh xạ địa phương: Tập hợp tất cả các mảnh được lưu trữ tại một vị
trí
Lược đồ tổng thể
Lược đồ phân mảnh
Lược đồ định vị
Lược đồ ánh xạ
địa phương 1
Lược đồ ánh xạ địa phương 2
Lược đồ ánh xạ địa phương 3
Trang 171.5.2 Các chiến lược thiết kế cơ sở dữ liệu phân tán
- Phương pháp top-down: Phương pháp này thích hợp với cơ sở dữ liệu được
thiết kế từ đầu Bắt đầu từ việc thu thập và phân tích yêu cầu của hệ thống, tiếp theo
là thiết kế các lược đồ cần thiết trong cơ sở dữ liệu phân tán: lược đồ tổng thể, lược
đồ phân mảnh, lược đồ định vị và lược đồ ánh xạ địa phương
- Phương pháp bottom-up: Trong thực tế, nhiều hệ thống đã có sẵn một số cơ sở
dữ liệu tại các địa phương, nhiệm vụ của người thiết kế là tích hợp chúng thành một
cơ sở dữ liệu tổng thể Phương pháp này là quá trình tích hợp lược đồ địa phương thành lược đồ tổng thể
Các phương pháp phân mảnh: phân mảnh ngang (Horizontal Fragmentation), phân mảnh dọc (Vertical Fragmentation) và phân mảnh hỗn hợp (Mixed Fragmentation)
Hình 3 Minh họa các phương pháp phân mảnh
1 Phân mảnh ngang (Horizontal Fragmentation):
Phân mảnh ngang chính là việc chia quan hệ theo chiều ngang, kết quả của phân mảnh ngang là các quan hệ con, số bộ trong các quan hệ con này là tách biệt nhau Phân mảnh ngang thực chất là phép chọn thỏa một điều kiện cho trước Phân mảnh ngang được chia làm 2 loại: phân mảnh ngang nguyên thủy và phân mảnh ngang dẫn
xuất
Trang 18- Phân mảnh ngang nguyên thủy: Phân mảnh ngang nguyên thuỷ được định
nghĩa bằng một phép toán chọn trên các quan hệ gốc Với quan hệ R, các mảnh ngang của R là các Ri: Ri = σFi(R), 1 ≤ i ≤ n Trong đó Fi là điều kiện chọn được sử dụng để có được mảnh Ri
- Phân mảnh ngang dẫn xuất: Phân mảnh ngang dẫn xuất là phân rã một quan hệ
thành các mảnh dựa vào điều kiện chọn được định nghĩa trên một quan hệ khác có liên quan
2 Phân mảnh dọc (Vertical Fragmentation):
Một phân mảnh dọc cho một quan hệ R sinh ra các mảnh R1, R2, , Rr, mỗi mảnh chứa một tập con các thuộc tính của R và cả khoá của R Phân mảnh dọc thực chất là chia quan hệ theo chiều dọc, nghĩa là thiết lập các quan hệ mới từ một số thuộc tính
của quan hệ gốc Thực chất đây là phép chiếu lên tập con các thuộc tính của quan hệ
3 Phân mảnh hỗn hợp (Mixed Fragmentation):
Trong đa số các trường hợp, phân mảnh ngang hoặc phân mảnh dọc đơn giản không đủ đáp ứng các yêu cầu từ ứng dụng Có một số trường hợp phân mảnh dọc có thể thực hiện sau một số mảnh ngang hoặc ngược lại, chọn lựa này được gọi là phân
- Tính tái thiết được: Nếu một quan hệ R được phân thành các mảnh R1, R2,…,
Rn thì cần phải tồn tại một phép toán ω sao cho có thể tái thiết quan hệ gốc R từ các quan hệ phân rã Ri thông qua phép toán ω: R = ω(Ri)
- Tính tách biệt: Nếu một quan hệ R được phân đoạn ngang thành các quan hệ
R1, R2, …, Rn và bộ giá trị ti nằm trong đoạn Ri thì nó sẽ không nằm trong một đoạn
Rk nào nữa Tiêu chuẩn này đảm bảo các đoạn tách rời nhau Nếu quan hệ được phân
rã dọc thì khóa chính phải được lặp lại trong mỗi đoạn
1.5.4 Nhân bản (Replication)
Cơ sở dữ liệu sau khi phân mảnh thích hợp cần phải được quyết định cấp phát các mảnh cho các vị trí, các mảnh có thể được nhân bản hoặc có thể không nhân bản Trong cơ sở dữ liệu không nhân bản (được gọi là cơ sở dữ liệu phân hoạch), mỗi mảnh được cấp phát trên một vị trí và không có bản sao nào trên các vị trí còn lại
Trang 19Trường hợp nhân bản, hoặc toàn bộ hoặc toàn bộ cơ sở dữ liêu tồn tại ở mỗi vị trí (cơ
sở dữ liệu nhân bản hoàn toàn) hoặc các mảnh phân tán đến các vị trí, trong đó một mảnh có thể có nhiều bản sao nằm tại nhiều vị trí (cơ sở dữ liệu nhân bản một phần)
Lý do cần nhân bản là nhằm đảm bảo được độ tin cậy và hiệu quả cho yêu cầu truy vấn dữ liệu, cụ thể nếu có nhiều bản sao của một đơn vị dữ liệu đặt tại nhiều vị trí thì người dùng vẫn có cơ hội truy xuất được dữ liệu ngay cả khi vị trí khác xảy ra sự cố Bảng 1 so sánh ba phương pháp nhân bản ứng với các chức năng khác nhau của hệ
cơ sở dữ liệu phân tán
Nhân bản hoàn toàn Nhân bản một phần Phân hoạch
Bảng 1 So sánh các phương pháp nhân bản
1.5.5 Hạn chế của phân mảnh và nhân bản
- Hạn chế của phân mảnh liên quan đến việc kiểm tra tính toàn vẹn của dữ liệu, chẳng hạn như một số thuộc tính tham gia vào một ràng buộc có thể bị phân rã thành các mảnh khác nhau và cấp phát cho những vị trí khác nhau, lúc đó việc kiểm tra ràng buộc phải truy tìm dữ liệu ở nhiều vị trí Hay một hạn chế khác của phân mảnh khi một ứng dụng có các khung nhìn được định nghĩa trên nhiều mảnh khác nhau sẽ giảm hiệu suất hoạt động
- Đối với việc nhân bản, việc cập nhật dữ liệu cũng gặp nhiều rắc rối vì hệ thống phải đảm bảo rằng tất cả các bản sao ở các vị trí phải được cập nhật chính xác
Vì vậy, quyết định phân mảnh như thế nào, có nhân bản hay không và việc phân
bố các mảnh tới các vị trí sao cho tối ưu là bài toán qui hoạch toán học với độ phức tạp NP-hard nhằm hạ tối đa chi phí lưu trữ, chi phí xử lý và truyền thông
Trang 20Chương 2 CƠ SỞ DỮ LIỆU PHÂN TÁN TRONG MS SQL SERVER
MS SQL Server hỗ trợ hai phương pháp phân tán dữ liệu là Distributed Transaction và Replication Chương này sẽ trình bày đặc điểm của từng phương pháp, đặc biệt là Replication và sự khác nhau giữa chúng
2.1 Distributed Transaction [3]
Transaction (giao dịch) là một đơn vị xử lý nguyên tố gồm tập hợp các thao tác truy xuất tới những hạng mục dữ liệu Transaction phải thỏa mãn 4 tiêu chí sau đây:
- Tính nguyên tố: Hoặc là tất cả các thao tác trong giao dịch được thực hiện thành
công hoặc không thao tác nào thành công cả
- Tính nhất quán: Khi giao dịch kết thúc (thành công hay thất bại), toàn bộ dữ
liệu phải ở trong trạng thái nhất quán
- Tính cô lập: Khi có nhiều giao dịch thực thi đồng thời thì kết quả của giao dịch
này không ảnh hưởng tới kết quả của giao dịch kia
- Tính bền vững: Khi một giao dịch hoàn thành thì tất cả thay đổi của nó trên dữ
liệu vẫn được duy trì bền vững bất chấp sự cố có thể xảy ra
Chẳng hạn, một giao dịch T chuyển số tiền 100$ từ tài khoản A1 sang tài khoản A2 tại một ngân hàng B gồm hai thao tác như sau:
O1: Rút 100$ từ tài khoản A1
O2: Nạp 100$ vào tài khoản A2
Giao dịch T được gọi là thành công khi cả hai hành động thành công, nếu một trong hai hành động thất bại thì hành động còn lại phải thất bại và giao dịch lúc đó được xem là thất bại
Distributed Transaction tượng trưng cho một trong hai cách phân tán dữ liệu trong
MS SQL Server Distributed transaction là một giao dịch bao gồm những thao tác truy cập đến những hạng mục dữ liệu trên nhiều site khác nhau Sự kết hợp các site
để cùng thực hiện một giao dịch được điều hành bởi bộ phận quản lý giao dịch MS DTC (Microsoft Distributed Transaction Coordinator) là một bộ phận quản lý giao dịch, bằng cách áp dụng kỹ thuật Two Phase Commit (2PC), MS DTC đảm bảo sự hoàn thành giao dịch tại tất cả các site vào cùng một thời điểm
Mở rộng ví dụ chuyển tiền bên trên, ngân hàng B có 2 chi nhánh B1 và B2 trong
đó tài khoản A1 được quản lý bởi site ở chi nhánh B1 và tài khoản A2 được quản lý bởi site ở chi nhánh B2 Khi đó, giao dịch T là một distributed transaction, việc thực thi của giao dịch T liên quan đến việc thực thi của cả 2 site
Trang 21Để đưa ra quyết định đúng trong việc commit (chấp nhận) hay rollback (hủy bỏ) của một distributed transaction, những site liên quan cần phải có kết nối với nhau Cụ thể, khi một ứng dụng khởi tạo một distributed transaction bằng cách gửi yêu cầu Begin Transaction đến một site bất kỳ trong hệ thống Khi đó site này sẽ đóng vai trò Coordinator, nó giữ một bảng copy của MS DTC log chứa nội dung của distributed transaction và thông tin của các site liên quan đến distributed transaction Mỗi site
mà có chứa những hạng mục dữ liệu được truy cập bởi distributed transaction này sẽ
là một Participant Vào giai đoạn cuối của một distributed transaction, các Participant chịu trách nhiệm phối hợp với Coordinator để đồng thuận trong việc commit hay rollback (xem Hình 4)
Hình 4 Quá trình truyền một distributed transaction qua các site
Two Phase Commit (2PC) được đề xuất nhằm tạo ra sự đồng thuận trong việc Commit hay Rollback giữa Coordinator và các Participant của một distributed transaction Để đảm bảo tính nguyên tố của transaction, nếu một site liên quan đến một distributed transaction bị rollback, thì toàn bộ các site liên quan phải bị rollback bất chấp chúng đã rơi vào trạng thái chuẩn bị commit (PreparedCommit) Và chỉ khi tất cả các site liên quan đều ở trạng tháo preparedcommit thì distributed transaction mới được commit Cụ thể, kỹ thuật 2PC gồm 2 pha: pha biểu quyết (Voting Phase)
và pha hoàn tất (Completion Phase):
- Tại Voting Phase: Coordinator gửi thông báo “CanCommit?” yêu cầu tất cả các
Participant báo cáo trạng thái của nó liên quan đến transaction Sau khi nhận được thông báo “CanCommit?”, nếu một Participant có thể commit thì nó tạm thời chưa được commit mà chỉ được ở trong trạng thái preparedcommit và gửi thông báo “Yes”
về Coordinator Nếu một Participant đã rollback thì gửi thông báo “No” về Coordinator
Site(S 3 ) Site(S 2 )
Site(S 1 )
Trang 22- Tại Completion Phase: Dựa vào các thông báo trạng thái của các Participant,
Coordinator ra quyết định cuối cùng và gửi quyết định đến tất cả Participant Cụ thể, nếu tất cả các Participant thông báo “Yes” trong Voting Phase, Coordinator ra quyết định “DoCommit” Nếu tồn tại một Participant thông báo “No” trong voting phase thì Coordinator ra quyết định “DoRollback” Sau khi nhận được quyết định cuối cùng từ Coordinator, nếu quyết định là “DoCommit” thì các Participant thực hiện chuyển từ trạng thái preparedcommit sang trạng thái commit Ngược lại nếu quyết định
“DoRollback”, các Participant chuyển từ trạng thái preparedcommit sang trạng thái rollback
Quá trình thực thi 2PC có thể bị ảnh hưởng khi một site bị sự cố hoặc các tin nhắn
bị mất Khi đó, các site khác bị lock trong một khoảng thời gian dài để chờ site gặp
sự cố khôi phục hay tin nhắn được gửi lại, điều này dẫn tới các hạng mục dữ liệu liên quan đến distributed transaction không được giải phóng cho các transaction khác truy cập trong một thời gian dài Đây chính là điểm yếu của kỹ thuật phân tán dữ liệu này
2.2 Replication [3, 4, 6]
2.2.1 Khái niệm
Replication (nhân bản) là “một tập các công nghệ” mà có thể di chuyển dữ liệu và các đối tượng của cơ sở dữ liệu từ vị trí này sang các vị trí khác, điều này cho phép người dùng có thể làm việc với bản copy của cơ sở dữ liệu và bất kỳ thay đổi nào trong cơ sở dữ liệu tại một vị trí cũng sẽ được chuyển tới các vị trí ở xa đang có kết nối qua hệ thống mạng máy tính Sự nhất quán của cơ sở dữ liệu được duy trì bởi quá trình xử lý đồng bộ
Có 2 phương pháp nhân bản dữ liệu: Eager replication và Lazy Replication
- Eager Replication: Với phương pháp này, tất cả các site được bảo đảm là luôn
thấy cùng giá trị dữ liệu tại cùng một thời điểm, điều này có nghĩa khi một ứng dụng cập nhật trên một bản sao của một bảng dữ liệu tại một site thì các bản sao khác của bảng dữ liệu đó tại các site khác cũng được cập nhật trong cùng giao dịch, nếu bất kỳ site nào mất kết nối thì việc cập nhật sẽ bị ngăn chặn Hơn nữa, tính nguyên tố của giao dịch được đảm bảo bởi kỹ thuật 2PC, mỗi site phải commit đồng thời mọi thay đổi hoặc không site nào commit những thay đổi Phương pháp nhân bản này rõ ràng không khả thi khi số lượng site quá lớn
- Lazy Replication: Có một sự nhất quán ngầm giữa các site do có một sự trì hoãn
trong việc phản ánh các giá trị dữ liệu đến các site tham gia, việc cập nhật dữ liệu vẫn được thực hiện trên site này dù site khác có mất kết nối và việc đồng bộ sẽ được thực hiện khi site đó kết nối trở lại Ưu điểm của phương pháp nhân bản này là tính độc lập của các site được tăng cao, tuy nhiên cũng có thể có 2 site cùng cập nhật trên
Trang 23cùng một hạng mục dữ liệu tại cùng thời điểm, điều này có thể dẫn tới sự xung đột và đây là vấn đề cần phải giải quyết trong Lazy Replication Sự khác nhau cơ bản giữa Eager Replication và Lazy Replication là dữ liệu có nhất quán tại cùng một lúc hay không
2.2.2 Các loại Replication trong MS SQL Server
MS SQL Server đã đưa ra nhiều loại nhân bản để đáp ứng các yêu cầu khác nhau của ứng dụng Mỗi loại cung cấp các khả năng và thuộc tính khác nhau nhằm đạt đến mục tiêu đảm bảo tính độc lập server và sự nhất quán dữ liệu
- Snapshot Replication: Đây là nhân bản đơn giản nhất thuộc loại Lazy
Replication, nó sao chép toàn bộ dữ liệu cần nhân bản từ Publisher tới Subscriber Khi có thay đổi, Snapshot Replication gởi tất cả dữ liệu tới cho Subscriber thay vì chỉ gởi những thay đổi Loại nhân bản này được đánh giá cao trong các ứng dụng chỉ đọc như tìm kiếm hay các hệ thống yêu cầu dữ liệu mới nhất và dung lượng không lớn
- Transactional Replication: Nhân bản này sử dụng transaction log để giữ những
thay đổi trên dữ liệu (insert, update, delete) và lưu những thay đổi này lên cơ sở dữ liệu phân tán (tại Distrubutor), những thay đổi này sẽ được chuyển đến các Subscriber ngay sau khi cập nhật Các subscription của nhân bản này được gán mặc
định là read-only nên nó thuộc loại Lazy Replication, trường hợp cho phép cập nhật trên subscription thì nhân bản này thuộc loại Eager Replication
- Merge Replication: Nhân bản này thuộc loại Lazy Replication nên các site có
tính độc lập rất cao, Publisher và Subscriber có thể làm việc độc lập và sẽ kết nối với nhau theo những khoảng thời gian để hội tụ kết quả lại, cả hai Publisher và Subsciber đều có thể cập nhật dữ liệu Nếu xung đột xảy ra giữa các server thì những xung đột này sẽ được giải quyết một cách tự động, khi đó bộ giải quyết đụng độ sẽ chọn server
có độ ưu tiên cao hơn
Hình 5 Mức độ độc lập và độ trễ của các phương pháp phân tán
Độ trễ và tính độc lập thấp
Độ trễ và tính độc lập cao
Transactional Replication
Snapshot Replication Merge Replication
Trang 24Việc chọn lựa loại nhân bản nào tùy thuộc vào nhiều yếu tố trong đó 2 yếu tố chính là độ trễ của việc đồng bộ và tính độc lập giữa các site Hình 5 cho thấy mức
độ độc lập và độ trễ giữa các loại nhân bản, trong đó Transactional Replication có độ trễ và tính độc lập thấp nhất, Merge Replication có độ trễ cao nhất và tính độc lập tối
đa
Phần này chỉ giới thiệu sơ về các loại Replication, cách thức hoạt động của từng loại và ưu nhược của chúng sẽ được trình bày cụ thể trong chương 3
2.3 Lợi ích của Replication [3, 4, 6]
Nhân bản có thể tạo thêm những căng thẳng cho tài nguyên lưu trữ, và việc quản
lý replication là nhiệm vụ đầy thách thức ngay cả đối với những nhà quản trị cơ sở dữ liệu dày dạn kinh nghiệm Tuy nhiên khả năng mở rộng, khả năng chịu lỗi, tính độc lập của các vị trí, và khả năng tương thích trên các nền tảng khác nhau như thiết bị cầm tay là một số lợi ích của việc sử dụng nhân rộng trong một môi trường kinh doanh
Sau đây là một số tình huống thực tế mà replication có thể được sử dụng:
- Snapshot có thể dùng để lưu trữ dữ liệu phục vụ mục đích data warehouse trong tương lai
- Transactional replication có thể được sử dụng để truyền dữ liệu thời gian thực tạo điều kiện thuận lợi cho việc phát sinh các báo cáo thời gian thực
- Merge replication có thể được sử dụng cho mục đích khắc phục thảm họa, có nghĩa nó có thể hỗ trợ các hệ thống IT có một chế độ standby cho cơ sở dữ liệu
2.4 Các vấn đề cơ bản trong Replication [3, 4, 6]
2.4.1 Thành phần chính trong Replication
- Publisher: Là server tạo dữ liệu và đảm bảo dữ liệu được nhân bản tới server
khác Nó xác định dữ liệu nào nhân bản, dữ liệu nào thay đổi và lưu thông tin về các nhân bản tại server đó
- Subscriber: Là server nhận nhân bản và các hành động cập nhật dữ liệu từ
Publisher Việc cập nhật dữ liệu trên Subscriber cũng có thể được gởi ngược lại Publisher Một Subscriber có thể là một Publisher của các Subscriber khác
- Distributor: Là server liên kết các bộ phận liên quan trong nhân bản, giúp
chúng có thể tương tác với nhau Distributor là nơi chứa distribution database, chịu trách nhiệm trong việc truyền tải dữ liệu giữa Publisher và Subscriber Distribution database là cơ sở dữ liệu hệ thống, được tạo khi người dùng cấu hình Distributor
Trang 25Distribution database lưu thông tin không chỉ về replication mà còn về metadata, transaction và job history
Nếu Distributor sử dụng cùng chung một server với Publisher thì nó được gọi là Local Distributor, ngược lại nếu khác server với Publisher thì gọi là Remote Distributor Với mô hình nhân bản với qui mô lớn, tốt hơn nên sử dụng Remote Distributor, điều này không chỉ cải thiện hiệu quả thực thi mà còn giảm thiểu những ảnh hưởng của quá trình nhân bản lên Publisher
- Publication: Là tên gọi tắt của Publication database, chứa một tập các mẩu dữ
liệu (Article) đặt tại Publisher, publication này chỉ cho Publisher những dữ liệu mà
nó cần chuyển tới Subscriber Nói cách khác, publication chính là data source trong replication
Một cơ sở dữ liệu cần nhân bản có thể chứa nhiều publication, một publication là một đơn vị có thể chứa một hoặc nhiều article được chuyển tới các Subscriber
- Article: Một article là một nhóm các dữ liệu được nhân bản, có thể bao gồm
một bảng hay chỉ một vài hàng hay vài cột, cũng có thể bao gồm một stored procedure, view, index view hay user-defined function
- Subscription: Là tên gọi tắt của Subscription database Các Subscriber phải định nghĩa subscription cho riêng chúng để nhận publication từ Publisher
Subscription sắp xếp các article khác nhau vào các bảng dữ liệu tương ứng trong Subscriber và xác định khi nào Subscriber nên nhận publication từ Publisher
- Agent: Là đối tượng thực hiện các nhiệm vụ theo dõi các thay đổi của dữ liệu
cũng như thực hiện một số công việc cần thiết trong quá trình phân phối dữ liệu giữa các server
2.4.2 Mô hình nhân bản logic
Mô hình nhân bản Publisher-Subscriber được lấy ý tưởng từ ngành công nghiệp xuất bản (Hình 6) Tưởng tượng Publication như một cuốn tạp chí mà nhà sản xuất (Publisher) muốn xuất bản, nó là tập hợp các bài báo (Article) Khi cuốn tạp chí được xuất bản, cần có một nhà phân phối (Distributor) để phân phối chúng tới tay người tiêu dùng (Subscriber) thông qua các đại lý (Agent) Đây là dạng chuẩn của toàn bộ chu kỳ Publisher/Subscriber Tuy nhiên cũng có thể có những thay đổi trong quá trình cài đặt, chẳng hạn như nhà xuất bản (Publisher) cũng có thể là nhà phân phối (Distributor) hay nhà phân phối cũng có thể là Subscriber
Trang 26Hình 6 Mô hình nhân bản logic
2.4.3 Các mô hình nhân bản vật lý
Sau đây là 4 thể hiện vật lý từ mô hình nhân bản logic:
Mô hình Publisher/Distributor-Subscriber đơn giản
Trong mô hình nhân bản này, Publisher và Distributor cùng sử dụng chung một server, Subscriber là một server khác Đây là mô hình đơn giản nhất trong tất cả các
mô hình, dữ liệu được nhân bản từ Publisher đến Subscriber (Hình 7)
Hình 7 Mô hình nhân bản Publisher/Distributor-Subscriber đơn giản
Mô hình Central Publisher-Multiple Subscribers
Mô hình này thực sự là sự mở rộng của mô hình nhân bản đơn giản Trong mô hình này, dữ liệu từ một Publisher được chuyển tới nhiều Subscriber Publisher là server trung tâm phân tán dữ liệu, Distributor có thể cư trú trên cùng server với Publisher (Hình 8a) cũng có thể là trên một server khác (Hình 8b)
Mô hình này thường được dùng khi dữ liệu tại Subscriber chỉ cho phép đọc Distributor xử lý những thay đổi dữ liệu tại Publisher và chuyển chúng tới các Subscriber liên quan Distributor được đặt tại server khác với Publisher sẽ giảm tải
Publisher
Distributor
Subscriber
Publication database được chuyển tới Distributor
Distributor chuyển tới Subscriber thông qua Agent
Subscriber Publisher/Distributor
Trang 27được công việc trên một server và do đó cải tiến được hiệu quả thực thi của quá trình nhân bản
(a) Publisher và Distributor trên cùng server (b) Publisher và Distributor trên 2 server
Hình 8 Mô hình nhân bản vật lý Central Publisher-Multiple Subscribers
Mô hình Central Subscriber/Multiple Publisher
Mô hình Central Subscriber/Multiple Publisher thường được dùng khi dữ liệu tại nhiều vị trí cần được hợp nhất tại một vị trí trung tâm trong khi cung cấp quyền truy cập tới các vị trí cục bộ trên dữ liệu cục bộ Data warehouse là một ví dụ điển hình cho mô hình này (Hình 9)
Hình 9 Mô hình Central Subscriber/Multiple Publisher
Subscriber
Subscriber Publisher/Distributor
Subscriber
Subscriber
Subscriber Distributor
Subscriber Publisher
Publisher/Distributor
Publisher/Distributor Subscriber
Trang 28 Mô hình Multiple Publishers-Multiple Subscriber
Hình 10 Mô hình Multiple Publishers-Multiple Subscriber
Mô hình này cho phép Publisher cũng có thể là một Subscriber, có nghĩa là Publisher có thể nhận dữ liệu được truyền tới từ Subscriber và Subscriber cũng được phép chuyển những thay đổi tới Publisher Khi sử dụng mô hình này cần xem xét sự nhất quán của dữ liệu và những xung đột có thể xảy ra khi cập nhật (Hình 10)
2.4.4 Kỹ thuật chuyển dữ liệu từ Publisher tới Subscriber
Có 2 kỹ thuật để chuyển những thay đổi dữ liệu trên publication tới subscription
trong MS SQL Server: push subscription và pull subscription
- Push Subscription: Với kỹ thuật này, subscription được tạo tại Publisher
Publisher giữ quyền kiểm soát subscription và chuyển những thay đổi tới Subscriber ngay khi những thay đổi này xảy ra ở Publisher mà không đợi Subscriber gởi yêu cầu
Push Subscription giúp việc quản lý các Subscriber đơn giản và tập trung hơn, đồng thời giúp bảo mật tốt hơn vì quá trình đồng bộ được quản lý tại Publisher Tuy nhiên, Distributor có thể phải đảm nhận nhiều quá trình phân bố đến các Subscriber cùng một lúc, điều này dễ dẫn đến hiện tượng thắt cổ chai (bottleneck) Để tránh hiện tượng này, những thay đổi có thể được đẩy đến Subscriber theo một lịch định kì Mô hình này không thích hợp khi số lượng các Subscriber trở nên quá lớn
- Pull Subscription: Với kỹ thuật này, Subscriber tạo ra subscription và nắm
quyền kiểm soát chúng Subscriber yêu cầu gởi những thay đổi trong publication từ Publisher, và dữ liệu được đồng bộ hoặc theo yêu cầu hoặc tại thời điểm định sẵn Ngược với push subscription, pull subscription bảo mật thấp nhưng cho phép số lượng Subscriber cao hơn
Publisher1/Subscriber1
Publisher2/Subscriber2
Trang 292.4.5 Các loại Agent
Có 5 loại agent khác nhau:
- Snapshot Agent: Tên của file thực thi snapshot agent là snapshot.exe, mỗi
publication có một snapshot agent riêng chạy trên Distributor và liên kết với Publisher, được dùng trong tất cả các loại nhân bản, đặc biệt trong giai đoạn đầu của quá trình đồng bộ Nó tạo một bảng copy của lược đồ và dữ liệu được Publisher công
bố, lưu chúng vào snapshot file và ghi lại các thông tin về việc đồng bộ trong distribution database
- Log Reader Agent: Tên của file thực thi log reader agent là logread.exe, agent
này được dùng trong loại nhân bản transactional replication, mỗi publication có một
log reader agent riêng chạy trên Distributor và liên kết với Publisher Nhiệm vụ của
nó là giám sát các transaction log của tất cả các cơ sở dữ liệu trong quá trình nhân bản
Log reader agent sao chép những thay đổi dữ liệu trong transaction log của publication và gởi chúng tới Distributor và lưu vào distribution database Các transaction này được giữ ở đây cho đến khi chúng sẵn sàng được chuyển tới Subscriber
- Distribution Agent: Tên của file thực thi distribution agent là distrib.exe, nó
được dùng trong loại nhân bản snapshot replication và transactional replication Agent này chịu trách nhiệm trong việc di chuyển những snapshot và transaction đã
được lưu tại distribution database đến Subscriber Distribution agent được đặt tại Distributor nếu người dùng chọn kỹ thuật chuyển dữ liệu là push subscription, ngược lại nếu kỹ thuật chuyển dữ liệu là pull subscription thì nó được đặt tại Subscriber
- Merge Agent: Tên của file thực thi merge agent là replmerge.exe, được dùng
trong loại nhân bản merge replication Mỗi merge publication có một merge agent, liên kết được với cả hai Publisher và Subscriber Merger agent thực hiện những công việc đẩy snapshot được khởi tạo đến Subscriber, kết hợp những thay đổi dữ liệu xảy
ra tại Publisher rồi gởi đến Subscriber sau khi đã giải quyết tranh chấp
Giống với distribution agent, merge agent chạy trên Distributor nếu người dùng chọn kỹ thuật chuyển dữ liệu là push subscription, ngược lại nếu kỹ thuật chuyển dữ liệu là pull subscription thì nó chạy trên Subscriber
- Queue Reader Agent: Tên của file thực thi Queue Reader Agent là qrdrsvc.exe,
được dùng để giúp thực hiện những tác vụ xảy ra đồng thời Agent này chạy trên Distributor và chuyển những thay đổi được thực hiện tại Subscriber tới Publisher
Trang 30Chương 3 REPLICATION
Chương 2 đã giới thiệu hai phương pháp phân tán dữ liệu Distributed Transaction
và Replication, đặc biệt trình bày khá kỹ về phương pháp Replication: mô hình nhân bản logic, mô hình nhân bản vật lý, các thành phần chính trong nhân bản,… Chương này sẽ trình bày cách thức hoạt động cũng như các tình huống nên sử dụng của các loại replication khác nhau trong MS SQL Server: Snapshot Replication, Transactional Replication và Merge Replication
3.1 Snapshot Replication [3, 4, 6]
3.1.1 Giới thiệu Snapshot Replication
Snapshot là một bức ảnh được chụp tức thời, và đó cũng chính là công việc được thực hiện trong Snapshot Replication Snapshot agent sao chép hình ảnh chính xác của cơ sở dữ liệu cần nhân bản (tức là tất cả các các đối tượng và dữ liệu ) tại một thời điểm nào đó từ Publisher rồi chuyển Distributor, distributor agent sẽ xử lý chúng
và chuyển tới các Subcriber tương ứng
Loại nhân bản này cho phép độ trễ và mức độ độc lập ở các vị trí khác cao Tuy nhiên tất cả dữ liệu được gởi đến cho Subscriber thay vì chỉ gửi những thay đổi nên khi khối lượng dữ liệu nhân bản lớn phải cần đến hệ thống mạng đủ mạnh để truyền
dữ liệu Do vậy khi sử dụng nhân bản này cần phải tính đến tỉ lệ giữa kích cỡ của toàn bộ dữ liệu và những thay đổi của nó
Snapshot Replication được đánh giá cao trong tình huống có các yếu tố sau:
- Dữ liệu tại Subscriber chỉ cho phép đọc (read-only)
- Dữ liệu không thay đổi thường xuyên tại Publisher
- Chấp nhận bản sao dữ liệu tại Subscriber đã lỗi lời so với dữ liệu tại Publisher trong mỗi chu kỳ thời gian (có nghĩa là chấp nhận độ trễ của dữ liệu)
- Subscriber yêu cầu tính độc lập cao
- Khối lượng dữ liệu nhân bản nhỏ
3.1.2 Hoạt động của Snapshot Replication
Quá trình xử lý đồng bộ trong Snapshot Replication (Hình 11):
1 Publication chứa các article được lưu tại Publisher
2 Snapshot agent sao chép các article từ publication rồi lưu chúng vào snapshot folder, thư mục này có thể được đặt tại server Distributor hoặc cũng có thể
Trang 31đặt tại một nơi khác, thậm chí là trên đĩa CD Trước khi sao chép, snapshot agent thiết lập share-lock lên tất cả article trong publication để ngăn không cho các bất kỳ theo tác cập nhật lên các article đó
3 Snapshot agent cũng hoàn tất việc vào log history file (log history file ghi lại quá trình làm việc của các agent đặt tại distribution) và gỡ bỏ các share-lock khỏi các article
4 Distribution agent chuyển các article từ distribution đến subscription
Hình 11 Hoạt động của Snapshot Replication
3.2 Transactional Replication [3, 4, 6]
3.2.1 Giới thiệu Transactional Replication
Trước khi bắt đầu với Transactional Replication, ta cần phải sao chép toàn bộ dữ liệu từ publication trên Publisher đến subscription trên Subscriber Công việc này được gọi là đồng bộ hóa khởi tạo (initial synchronization), được thực hiện bởi snapshot agent và distributor agent, quá trình đồng bộ hóa khởi tạo này hoạt động khá giống với Snapshot Replication Tuy nhiên trong Transactional Replication, snapshot agent không thiết lập bất kỳ share-lock nào trong suốt quá trình phát sinh snapshot
Khi thủ tục đồng bộ hóa thực hiện, bất kỳ sự thay đổi nào xảy ra ở Publisher cũng được chuyển đến Subscriber tại cùng thời điểm, do đó độ trễ trong loại nhân bản này đạt mức tối thiểu
Transactional Replication thường được dùng trong tình huống có các yếu tố sau:
- Cần chuyển những thay đổi gia tăng từ Publisher đến Subscriber
- Độ trễ của việc đồng bộ là tối thiểu
- Hệ thống mạng kết nối giữa Publisher và Subscriber là đáng tin cậy
- Publisher có một khối lượng lớn các dữ liệu cần sửa đổi
Publication Database
Snapshot Folder
Distribution Database Subscription
Trang 323.2.2 Hoạt động của Transactional Replication
Hình 12 Hoạt động của Transactional Replication
Quá trình xử lý đồng bộ trong Transactional Replication (Hình 12):
1 Các transaction được ghi trong transaction log của cơ sở dữ liệu của mỗi publication
2 Nếu nhận thấy bất kỳ thay đổi dữ liệu nào trong log file, tác nhân log reader agent đọc tất cả những transaction được commit từ publication mà được đánh dấu nhân bản
3 Log reader agent chuyển những transaction đã sao chép được tới cơ sở dữ liệu distribution Có sự tương ứng 1-1 giữa transaction trên publication và transaction được nhân bản trong distribution Một transaction có thể bao gồm nhiều lệnh, nên sau khi toàn bộ các lệnh trong transaction được ghi vào distribution hòa toàn thành công, nó mới được commit
4 Distribution agent đọc những transaction được nhân bản lưu tại distribution
và chuyển chúng tới Subscriber tương ứng (5.)
3.2.3 Transactional Replication with updatable Subcription
Mặc dù tất cả các subscription trong Transactional Replication được gán mặc là read-only Tuy nhiên MS SQL Server cung cấp thêm một loại nhân bản mới cho phép Subscriber cập nhật dữ liệu nhân bản
Có 2 cách để cập nhật dữ liệu trong Transactional Replication: cập nhật ngay lập tức (immediate updating) và cập nhật theo hàng đợi (queued updating) Trường hợp cập nhật hàng đợi, cần phải thiết lập một kết nối giữa Publisher và Subscriber Những cập nhật thực hiện trên subscription ngay lập tức được chuyển trực tiếp tới publication bằng kỹ thuật 2PC, hoàn toàn không đi qua Distributor mà sử dụng MS DTC (xem khái niệm về MS DTC trong mục 2.1)
Publication Database
Distribution Database
Subscription Database
Trang 33Trường hợp cập nhật theo hàng đợi, những thay đổi tại subscription được chuyển publication theo từng thời kỳ, khi hệ thống mạng ở trạng thái sẵn sàng Những thay đổi này sẽ được đặt trong hàng đợi, và vì có những transaction đang chờ đợi để được đồng bộ nên có thể có những xung đột xảy ra Những xung đột này có thể giải quyết bằng cách cho phép Publisher hoặc Subscriber sử dụng các chính sách dành quyền chiến thắng của riêng nó
3.3 Merge Replication [3, 4, 6]
3.3.1 Giới thiệu Merge Replication
Giống như Transactional Replication, Merge Replication cũng cần phải thực hiện giai đoạn đồng bộ hóa khởi tạo (initial synchronization) để sao chép toàn bộ dữ liệu
từ publication tới subscription Sau đó, những thay đổi của dữ liệu có thể được thực hiện tại Publisher hoặc Subscriber hoặc cả hai, những thay đổi này sẽ được sẽ được hợp nhất lại với nhau thành một kết quả thống nhất Merge agent sẽ thực hiện công việc hợp nhất này, nó được thực hiện theo yêu cầu hoặc tại một thời điểm định sẵn Merge Replication và Transactional Replication with updatable subscription cùng cho phép cập nhật dữ liệu tại Subscriber và truyền thay đổi về Publisher, tuy nhiên sự khác nhau cơ bản giữa 2 loại nhân bản này là Merge Replication chỉ quan tâm đến sự thay đổi dữ liệu không cần theo dõi trạng thái trung gian của dữ liệu trong khi Transactional Replication thì ngược lại Chẳng hạn một dòng dữ liệu được thay đổi
100 lần tại Publisher và 100 lần thay đổi này chưa được đồng bộ về Subscriber Khi quá trình đồng bộ xảy ra, nếu dùng Merge Replication thì chỉ lần thay đổi cuối cùng
sẽ được chuyển đến Subscriber, nếu dùng Transactional Replication thì 100 lần thay đổi này đều được chuyển đến Subscriber
Ngoài ra, Merge Replication còn có thể giới hạn quyền cập nhật của Subscriber lên một số article được đồng bộ tới subscription
Merge Replication thường được dùng trong tình huống có các yếu tố sau:
- Nhiều server cùng cập nhật dữ liệu tại những thời điểm khác nhau và truyền những thay đổi này đến các Publisher và các Subscriber khác
- Subscriber yêu cầu tính độc lập cao
- Mỗi Subscriber chỉ được phép cập nhật trên một số article trong subscription
- Ứng dụng chỉ quan tâm đến sự thay đổi dữ liệu, không cần theo dõi trạng thái trung gian của dữ liệu