You are on page 1of 14

 

====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 ứ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.

Giáo viên hướng dẫn: LÊ NGỌC BẢO


Sinh viên thực hiện: MSSV
TP Hồ Chí Minh, ngày 30 tháng 10 năm 2021
MỤC LỤC
Phần I: Câu hỏi cá nhân............................................................................................................................3
Phần II: Đồ án Nhóm................................................................................................................................4
1.Cơ sở dữ liệu...........................................................................................................................................5
2.Thư viện Dotmim....................................................................................................................................5
3.Sản phẩm.................................................................................................................................................7
3.1 Công cụ sử dụng................................................................................................................................7
3.2 Giới thiệu sản phẩm...........................................................................................................................7
3.3 Demo Sản phẩm..............................................................................................................................10
Phần I: Câu hỏi cá nhân
Câ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.

Trả 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:
Nguyễn Phạm Nhật Minh-N17DCCN095

1.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
MaSV int
TenSV Nvarchar(40)
NhapHoc date
HocPhi float
TinhTrang bit

Table_2
Tên cột Kiểu dữ liệu
MaGV int
TenGV nvarchar(40)
NgaySinh date
LuongGV float
TinhTrang bit

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:


-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);
-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
+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


-Tab Demo1

-Tab Demo2

-Tab Demo 3 sẽ tương tự Tab Demo2


3.3 Demo Sản phẩm
-Trước tiên ta sẽ xóa hết dữ liệu trên Demo1, Demo2, Demo3
-Thực hiện đẩy dữ liệu từ Demo -> Demo1

-Dữ liệu đã được đẩy xuống Demo1


-Thực hiện đẩy dữ liệu từ Demo1 -> Demo2,Demo3
-Dữ liệu đã được đẩy đến Demo2, Demo3

You might also like