====o0o==== BÁO CÁO CÁ NHÂN MÔN HỌC CÁC HỆ THỐNG PHÂN TÁN ĐỀ TÀI 14 Tạo 3 bản sao cho 1 CSDL SQL (Có 2 table, mỗi table gồm 5 trường dữ liệu với các kiểu dữ liệu khác nhau ) trên cùng 1 Instance Viết.
Trang 1BÁO CÁO CÁ NHÂN MÔN HỌC: CÁC HỆ THỐNG PHÂN TÁN
ĐỀ TÀI 14: Tạo 3 bản sao cho 1 CSDL SQL (Có 2 table, mỗi table gồm 5 trường dữ liệu với các kiểu dữ liệu khác nhau ) trên cùng 1 Instance Viết ứng dụng lan truyền cập nhật từ CSDL đến
Bản sao 1, bản sao 1 đến bản sao 2 và bản sao 3.
TP Hồ Chí Minh, ngày 30 tháng 10 năm 2021
Trang 2MỤC LỤC
Phần I: Câu hỏi cá nhân
Trang 3Câu 7: Một chương trình server viết trên một ngôn ngữ(ví dụ C++) cung cấp ứng dụng cho một đối tượng BLOB mà đối tượng đó có ý định kết nối với những clients viết bởi một ngôn ngữ khác(ví dụ như Java) Máy client và server có thể khác phần cứng nhưng đều cùng kết nối đến một mạng internet Miêu tả các vấn đề mỗi khía cạnh của 5 khía cạnh không đồng nhất cần phải giải quyết để cho một đối tượng client
có thể dẫn xuất một phương thức trên server
Trả lời:
Vì những máy tính được kết nối tới cùng một mạng internet, chúng ta có thể giả định rằng các giao thức Internet xử lý những khác biệt trong mạng lưới
Nhưng những máy tính có thể có phần cứng khác nhau – Do đó chúng ta phải xử lý với những sự khác biệt của cách trình bày mục dữ liệu(data items) trong quá trình yêu cầu và hồi đáp tin nhắn từ các máy client đến các đối tượng Một tiêu chuẩn chung sẽ cần được định nghĩa cho mỗi loại mục dữ liệu cần được truyền đi giữa đối tượng và client của nó
Những máy tính để thể chạy trên hệ điều hành khác nhau, vì thế chúng ta cần phải giải quyết sự khác biệt giữa các hệ điều hành trong việc gửi nhận tin nhắn hay thể hiện lời gọi hàm Do đó tại cấp độ Java/C++ một hệ điều hành chung sẽ được dùng để dịch ra
hệ điều hành riêng biệt hệ thống đó đang dùng
Chúng ta có 2 ngôn ngữ khác nhau là C++ và Java, chúng sử dụng cách trình bày khác nhau cho những cấu trúc dữ liệu như chuỗi, hàm, bản ghi Một tiêu chuẩn chung
sẽ được dùng để định nghĩa cho mỗi loại cách trúc dữ liệu cần được truyền đi giữa đối tượng và những client của nó Và một cách để biên dịch cấu trúc dữ liệu đó giữa những ngôn ngữ khác nhau
Chúng ta có thể có 2 người thực hiện khác nhau ví dụ như một cho C++ và một cho Java Họ sẽ cần phải thống nhất một tiêu chuẩn chung được đề cập ở trên và ghi chép lại chúng
Câu 116 Giải thích những điều kiện liên kết chương trình phải được đáp ứng nếu một server được tải động lên một không gian địa chỉ kernel, và bằng cách nào để phân biệt những trường hợp thực thi một server dưới cấp độ người dùng
Trang 4Trả lời:
Một phần của không gian địa chỉ kernel phải được cấp phát cho phần code và dữ liệu mới Những kí hiệu trong code và dữ liệu mới phải được phân giải thành những
mục(item) trong không gian địa chỉ kernel Ví dụ, nó sẽ sử dụng hàm xử lý tin nhắn của kernel
Ngược lại, nếu server được thực thi bằng một tiến trình riêng biệt thì nó sẽ chạy một địa chỉ tiêu chuẩn trên không gian địa chỉ của nó và tách biệt với những liên kết tới những thư viện được chia sẻ, hình ảnh liên kết của nó sẽ là độc lập
Cấu 225 Giải thích bằng cách nào mà giao thức xác nhận hai pha cho những giao tác lồng nhau đảm bảo rằng nếu giao tác cấp cao thực thi, tất cả thành phần con đúng
được xác nhận hoặc hủy bỏ
Trả lời:
-Giao thức xác nhận 2 pha đảm bảo rằng giao tác phải được xác nhận hết hoặc sẽ hủy
bỏ toàn bộ
-Mỗi khi một giao tác lồng nhau được thực thi, nó báo về trạng thái của nó và trạng thái của thành phần con về cha Vì thế nếu một giao tác đến trạng thái xác nhận, nó có một danh sách đúng cho những thành phần con đã xác nhận Do đó mỗi khi giao tác cấp cao bắt đầu giao thức xác nhận hai pha, nó liệt kê những thành phần con đã xác nhận là đúng
Nó kiểm tra những thành phần con và đảm bảo rằng chúng vẫn có thể xác nhận hoặc phải hủy bỏ Ở đó có thể tồn tài những node chạy những thành phần con không thành công không được bao gồm trong giao thức xác nhận 2 pha Ta sẽ biết được kết quả của chúng bằng cách chạy truy vấn giao tác cấp cao
Phần II: Đồ án Nhóm
NHÓM 14
Tên thành viên:
Vũ Tuấn Anh-N18DCCN010
Mai Thiên An-N18DCCN001
Nguyễn Phạm Nhật Minh-N17DCCN095
Trang 51.Cơ sở dữ liệu
-CSDL gốc sẽ lấy tên là Demo và bản sao sẽ là Demo1,Demo2,Demo3
Table_1
Tên cột Kiểu dữ liệu
Table_2
Tên cột Kiểu dữ liệu
2.Thư viện Dotmim
-Dotmim.Sync(DMS) là một trong những thư viện thuận tiện nhất để thực hiện đồng bộ
dữ liệu giữa cái CSDL trên cùng 1 server trên nhiều nền tảng quản trị sql khác nhau như
MySQL, SQL Server, SQLite và MariaDB Trong bài này chúng ta sẽ sử dụng SQL
server của Microsoft
-Cấu trúc của DMS gồm 3 thành phần chính:
Trang 6-Providers: một provider có trách nhiệm giao tiếp với CSDL local Mỗi provider có thể
hoạt động ở cả 2 bên: Server và Client
-Orchestrators: Để có thể chuyển đổi giữa các nền tảng quản trị CSDL Provider là luôn
cần thiết để tạo ra 1 Orchestrator
-SyncAgent: SyncAgent sẽ chịu trách nhiệm chuyển đổi dữ liệu giữa 2 Orchestrator
Remote và Local Công việc của SyncAgent bao gồm:
+Tạo ra một local Orchestrator với một client provider nhập trước
+ Tạo ra một remote Orchestrator với một server provider nhập trước
+Đồng bộ dữ liệu giữa client và server bằng các giao thức có trong Orchestrator
Ví dụ:
var serverProvider = new MySqlSyncProvider(serverConnectionString);
var clientProvider = new SqliteSyncProvider(clientConnectionString);
var tables = new string[] {"<TableName1> ", "<TableName2>" };
var agent = new SyncAgent(clientProvider, serverProvider, tables);
var result = await agent.SynchronizeAsync();
Console.WriteLine(result);
Trang 7-Trong code ví dụ trên không tồn tại Orchestrator vì thư viện Dotmim đã tạo sẵn cho người dùng để giúp cho mọi thứ đơn giản hóa hơn
3.Sản phẩm
3.1 Công cụ sử dụng
-Ngôn ngữ: C#
-IDE: Visual Studio
-Nutget Packages cài đặt:
+Dotmim.Sync.SqlServer
+Dotmim.Sync.SqlServer.ChangeTracking
+Dotmim.Sync.Sqlite
3.2 Giới thiệu sản phẩm
-Main Form
+Nút làm mới sẽ cập nhập dữ liệu từ SQL Server
+Nút Synchronize tại tab Demo sẽ đẩy dữ liệu từ Demo -> Demo1
+Nút Synchronize tại tab Demo1 sẽ đẩy dữ liệu từ Demo1 -> Demo2, Demo3
Trang 8+Các nút Table 1,2 sẽ tạo Sub Form giúp chỉnh sửa dữ liệu
SubForm để chỉnh sửa dữ liệu khi nhấn các nút Table1,Table2
Trang 9-Tab Demo1
-Tab Demo2
-Tab Demo 3 sẽ tương tự Tab Demo2
Trang 103.3 Demo Sản phẩm
-Trước tiên ta sẽ xóa hết dữ liệu trên Demo1, Demo2, Demo3
Trang 11-Thực hiện đẩy dữ liệu từ Demo -> Demo1
-Dữ liệu đã được đẩy xuống Demo1
Trang 12-Thực hiện đẩy dữ liệu từ Demo1 -> Demo2,Demo3
Trang 13-Dữ liệu đã được đẩy đến Demo2, Demo3