2.3.1 Cỏc định danh trong OMA-SYNCML
a/. Ánh xạ định danh dữ liệu
Đồng bộ dữ liệu OMA-SyncML khụng ràng buộc hai kho dữ liệu đồng bộ phải cựng lƣợc đồ (schema). Đặc biệt đồng bộ dữ liệu OMA-SyncML cho phộp tất cả cỏc định danh dữ liệu và định dạng dữ liệu khỏc nhau trong cỏc tập dữ liệu. Tuy nhiờn, khi đú để sử dụng đồng bộ dữ liệu OMA-SyncML, ứng dụng đồng bộ cần cung cấp một ỏnh xạ giữa cỏc định danh dữ liệu của mỏy chủ, và trờn mỏy khỏch.
Vớ dụ, một tài liệu trờn mỏy chủ đồng bộ cú thể đƣợc gỏn với một định danh toàn cục duy nhất 16 byte (GUID). Bản tƣơng ứng của tài liệu này trờn thiết bị cầm tay cú thể đƣợc gỏn bởi một định danh cục bộ duy nhất, nhỏ hơn (LUID). Do vậy, khi ĐBDL trờn thiết bị cầm tay với dữ liệu trờn mỏy chủ, ứng dụng đồng bộ sẽ phải ỏnh xạ cỏc định danh nhỏ hơn tới cỏc định danh lớn hơn ...
Đồng bộ dữ liệu OMA cú hỗ trợ cỏc kỹ thuật để phục vụ mục đớch ỏnh xạ.
b/. Địa chỉ đớch và nguồn
Cỏc loại phần tử đớch và nguồn sử dụng trong OMA DS để xỏc định cỏc địa chỉ định tuyến nguồn và đớch tƣơng ứng. Nú chứa chuỗi định danh tờn nguồn (URI - Uniform Resource Identifier) hoặc tờn định danh nguồn (URN - Uniform Resource Name). Một URI thƣờng bắt đầu với định danh “http” hoặc “EMEI”.
í nghĩa của URI trong cỏc phần tử nguồn và đớch trong thụng điệp SyncML là xỏc định ngữ cảnh của nú [6]. Vớ dụ trong phần “đầu” của thụng điệp SyncML, thụng tin về phần tử đớch và nguồn xỏc định phần tử khởi tạo thụng điệp SyncML và phần tử đớch là một mỏy chủ mạng trong vựng ”syncml.org”.
<Target> <LocURI>http://www.syncml.org/sync-Server</LocURI> </Target> <Source> <LocURI>IMEI:098712345</LocURI> </Source>
c/. Cỏc tỏc vụ trong đồng bộ dữ liệu OMA-SyncML * Sửa dữ liệu
Đõy là tỏc vụ chung nhất trong OMA-SyncML, sử dụng để sửa một phần tử dữ liệu trong kho dữ liệu. Những sửa đổi khỏc nhau cú ngữ nghĩa khỏc nhau. Cú những sửa đổi chỉ thay đổi trong cỏc trƣờng của phần tử dữ liệu, và cũng cú những sửa đổi chỉ thay đổi cỏc thuộc tớnh mụ tả của một phần tử dữ liệu.
* Thờm dữ liệu
OMA-SyncML cho phộp mỏy khỏch và mỏy chủ sử dụng cỏc định danh khỏc nhau. Vớ dụ, cỏc phần tử dữ liệu mới đƣợc thờm vào kho dữ liệu mỏy chủ. Mỏy chủ chỉ thụng bỏo cho mỏy khỏch rằng tập cỏc phần tử dữ liệu đó đƣợc thờm và gửi chỳng tới mỏy khỏch. Nhƣ là một phần của quỏ trỡnh đồng bộ, mỏy khỏch thờm những phần tử này vào kho dữ liệu cục bộ, và cũng sinh ra định danh cục bộ cho cỏc phần tử dữ liệu đú. Mỏy khỏch giao tiếp với mỏy chủ, sử dụng cõu lệnh ỏnh xạ (Map).
* Xúa dữ liệu
Việc xúa dữ liệu xảy ra khi ngƣời dựng dự định xúa dữ liệu khỏi kho lƣu trữ. Loại này gọi là xúa cứng (hard delete). Trong quỏ trỡnh đồng bộ, thiết bị nhận đƣợc cõu lệnh xúa sẽ thực hiện xúa dữ liệu khỏi kho chứa.
Xúa mềm (soft delete) đƣợc thực hiện khi bộ nhớ trờn cỏc thiết bị cầm tay quỏ tải, khụng cũn chỗ trống cần phải giải phúng bộ nhớ. Khi đú, thiết bị sẽ hủy bỏ việc nhận dữ liệu từ mỏy chủ, chỉ giữ lại những phần tử dữ liệu nhất quỏn. Mỏy chủ khi nhận đƣợc cõu lệnh xúa mềm sẽ khụng gửi phần tử dữ liệu này tới mỏy khỏch thờm nữa.
Xúa sao lƣu (archive delete): kiểu xúa mà khi mỏy khỏch xúa dữ liệu, nú muốn mỏy chủ thực hiện lƣu trữ bản sao của dữ liệu bị xúa.
* Làm mới dữ liệu
Mỏy khỏch cú thể lấy dữ liệu mới nhất từ mỏy chủ.
* Tỡm kiếm dữ liệu
2.3.2 Cỏc phần tử giao thức đặc tả
a/. Cỏc phần tử chứa thụng điệp
Cỏc phần tử chứa thụng điệp (Message Container Elements) phục vụ cho việc đúng gúi cỏc thụng điệp trao đổi. Cú 3 phần tử đƣợc sử dụng để phõn tỏch phần đầu thụng điệp, dữ liệu thụng điệp hoặc dữ liệu đồng bộ [6].
* SyncML:
Bộ chứa thụng điệp SyncML là phần tử gốc của định nghĩa đặc tả DTD SyncML. Nú gồm hai phần tử SyncHdr và SyncBody.
* SyncHdr:
Chứa thụng tin về thụng điệp, tƣơng tự nhƣ địa chỉ trờn phong bỡ thƣ. SyncHdr chứa thụng tin nhƣ: nơi thụng điệp định chuyển tới (target), thụng điệp chuyển từ nơi nào (source), phiờn bản của giao thức đặc tả, và giao thức đồng bộ đang sử dụng. Thờm vào đú, SyncHdr chứa thụng tin mụ tả (meta) về khả năng của thiết bị, cũng nhƣ kớch thƣớc lớn nhất của thụng điệp cho phộp.
* SyncBody:
Đõy là thõn của thụng điệp SyncML. SyncBody chứa một tập cỏc cõu lệnh và cỏc phần tử quản lý giao thức.
b/. Cỏc phần tử quản lý giao thức
Trạng thỏi: đƣợc sử dụng để biểu diễn kết quả của cõu lệnh. Mỗi cõu lệnh cú một trạng thỏi, và chỳng phải cú trỡnh tự giống nhƣ cỏc cõu lệnh trong SyncML yờu cầu.
c/. Cỏc phần tử mụ tả dữ liệu
Data: là dữ liệu SyncML
Item: chứa dữ liệu
Meta: đƣợc sử dụng để xỏc định thụng tin mụ tả về phần tử cha.
d/. Cỏc phần tử cõu lệnh:
Cỏc cõu lờnh đƣợc sử dụng để tạo ra cỏc tỏc vụ trờn phần nhận thụng điệp SyncML. Phần tử chứa cõu lệnh phần lớn đều chứa dữ liệu, hoặc là chứa hạn chế cõu lệnh, hoặc truyền dữ liệu (payload). Dữ liệu đụi khi là sự liờn lạc, hoặc sự kiện, hoặc thụng tin email. Cỏc phần tử cõu lệnh cú thể đƣợc chia thành 3 nhúm cục bộ:
Cỏc phần tử cõu lệnh dữ liệu
Thờm (add): Thờm một hoặc nhiều dữ liệu vào kho dữ liệu
Sao chộp (copy): tạo một bản sao chộp của dữ liệu đó cú
Xúa (delete): loại bỏ phần tử khỏi kho dữ liệu
Get: lấy một phần tử, thụng tin thiết bị
Ánh xạ (map): đƣợc sử dụng bởi mỏy khỏch để thụng bỏo cho mỏy chủ về một kho dữ liệu, mà đó cú phần tử mới đƣợc tạo bởi cõu lệnh thờm.
Put: sẽ gửi một phần tử, thụng tin thiết bị
Thay thế (replace): sử dụng để cập nhật phần tử đó cú với thụng tin mới.
Cỏc phần tử cõu lệnh kho dữ liệu
Cảnh bỏo (alert)
Kết quả (results)
Tỡm kiếm (search): tỡm kiếm trong mỗi kho dữ liệu
Đồng bộ (Sync): là cõu lệnh đƣợc sử dụng để đồng bộ 2 kho dữ liệu
Cỏc phần tử cõu lệnh tiến trỡnh xử lý
Nguyờn tử (atomic): cỏc yờu cầu mà tất cả cỏc cõu lệnh con đƣợc thực hiện.
Liờn tục (sequence): yờu cầu cỏc cõu lệnh đƣợc thực hiện theo trỡnh tự xuất hiện.
e/. Cỏc phần tử chung
Cỏc phần tử chung xuất hiện nhƣ là cỏc phần tử con trong hầu hết cỏc cõu lệnh và cỏc phần tử SyncHdr nờn chỳng cũng đƣợc đặt tờn. Cỏc phần tử này sử dụng để cung cấp cỏc chức năng chung và trợ giỳp làm giảm số lƣợng cỏc luật phõn tớch cỳ phỏp cỏ biệt. [6]
Chal (short for Challenge): đƣợc sử dụng cho mục đớch xỏc thực.
Cmd: Chứa tờn ASCII của cõu lệnh
CmdID: chứa định danh của cõu lệnh trong thụng điệp SyncML
CmdRef: là định danh của cõu lệnh đang đƣợc tham chiếu trong trạng thỏi.
Cred: chứa tập cỏc ủy nhiệm (credentials) theo định dạng xỏc định. SyncML chỉ yờu cầu hỗ trợ định dạng cơ bản hoặc MD5
Final: là cờ chỉ định kết thỳc một gúi dữ liệu
Lang: cho phộp yờu cầu ngụn ngữ cho quỏ trỡnh truyền tải (payload)
LocName: chứa tờn hiển thị đọc đƣợc đối với địa chỉ
LocURI: chứa địa chỉ xỏc định
MoreData: thụng bỏo cho ngƣời nhận biết dữ liệu vẫn chƣa đƣợc gửi hết.
MsgID: định danh của thụng điệp hiện tại
MsgRef: định danh của thụng điệp đang đƣợc tham chiếu
NoResp: cờ xỏc định khụng cú phản hồi cho cõu lệnh trƣớc đú
NoResults: cờ chỉ định kết quả từ cõu lệnh Get, Search phải đƣợc lƣu trữ trong vựng đệm phục vụ cho cõu lệnh sau.
NumberOfChanges: chỉ đƣợc sử dụng trong cõu lệnh Sync, thụng bỏo cho ngƣời nhận biết cú bao nhiờu phần tử đƣợc gửi từ một nguồn xỏc định.
RespURI: là URI sử dụng để phản hồi cho thụng điệp hiện tại
SessionID: định danh của phiờn làm việc hiện tại
Source: chỉ định nguồn định tuyến hoặc thụng tin ỏnh xạ.
Target: chỉ định đớch ỏnh xạ hoặc định tuyến
VerDTD: chỉ định phiờn bản của giao thức đặc tả SyncML
2.4 CÁC Mễ HèNH ĐỒNG BỘ DỮ LIỆU OMA-SYNCML 2.4.1 Đồng bộ hai chiều (Two-way sync) 2.4.1 Đồng bộ hai chiều (Two-way sync)
Đồng bộ 2 chiều là kiểu đồng bộ trong đú, mỏy khỏch và mỏy chủ trao đổi về cỏc thụng tin dữ liệu đó thay đổi trờn cỏc thiết bị này [16]. Mỏy khỏch luụn gửi những thay đổi đầu tiờn tới mỏy chủ. Tựy theo thụng tin đồng bộ, mỏy chủ xử lý yờu cầu đồng bộ và dữ liệu từ mỏy khỏch và so sỏnh, hợp nhất với dữ liệu trờn mỏy chủ. Sau đú, mỏy chủ sẽ gửi những thay đổi trở lại cho mỏy khỏch. Mỏy khỏch cú thể cập nhật dữ liệu từ mỏy chủ vào cơ sở dữ liệu của nú.
OMA DS Client OMA DS Server
Client and server kh?i t?o đ?ng b? 2 chi?u. User
Client chu?n b? d? li?u c?n thi?t đ? g? i t?i server. Pkg #3: Gúi d? li?u đ?ng b? t? client t?i server
Server x? lý phõn tớch gúi d? li?u. Pkg #4: Gúi thụng bỏo tr?ng thỏi và đ?ng b?
K?t qu? đ?ng b?
Client c?p nh?t d? li?u thay đ?i vào cơ s? d? li?u c?a nú Pkg #5: Gúi tr?ng thỏi c?p nh?t d? li?u t?i server Pkg #6: Cụng nh?n ỏnh x? t?i
Hỡnh 2. 7 Biểu đồ tuần tự trong đồng bộ 2 chiều
a/. Thay đổi từ mỏy khỏch tới mỏy chủ
Kớch hoạt đồng bộ, mỏy khỏch cần thụng bỏo mỏy chủ về tất cả những thay đổi dữ liệu xảy ra kể từ lần đồng bộ trƣớc đú. Tất cả những thay đổi từ phớa mỏy khỏch sau khi đó gửi gúi tin này tới mỏy chủ đều phải đƣợc bỏo cỏo lại tới mỏy chủ trong phiờn đồng bộ sau. Nú khụng cho phộp đặt những thay đổi này trong một gúi tiếp theo gửi tới mỏy chủ. [16]
b/. Thay đổi mỏy chủ tới mỏy khỏch
Gúi đồng bộ (gúi pkg#4 trong hỡnh 2-7) gửi cho mỏy khỏch cú mục đớch:
Thụng bỏo cho mỏy khỏch biết kết quả phõn tớch đồng bộ (sync)
Thụng bỏo tất cả những thay đổi dữ liệu trờn mỏy chủ kể từ lần gửi những thay đổi gần đõy nhất.
Bất cứ thay đổi nào mà đƣợc thực hiện sau khi gửi gúi này phải đƣợc bỏo cỏo lại mỏy khỏch trong phiờn đồng bộ tiếp theo. [16]
c/. Trạng thỏi cập nhật dữ liệu từ mỏy khỏch
Gúi trạng thỏi cập nhật dữ liệu từ mỏy khỏch tới mỏy chủ, sử dụng để truyền thụng tin về kết quả cập nhật dữ liệu phớa mỏy khỏch. Ngoài ra, nú đƣợc sử dụng để biểu diễn định danh cục bộ duy nhất (LUID) của cỏc phần tử dữ liệu mới đó đƣợc thờm phớa mỏy khỏch. Tỏc vụ ỏnh xạ định danh cục bộ duy nhất và định danh tạm thời toàn cục duy nhất (GUID) đƣợc gửi tới mỏy chủ. [16]
2.4.2 Đồng bộ chậm (slow sync)
Cỏch thức để khụi phục lại từ những sự cố xảy ra trong quỏ trỡnh đồng bộ là sử dụng kiểu đồng bộ chậm (slow sync). Tuy nhiờn, vỡ những yờu cầu phải truyền khối lƣợng dữ liệu rất lớn nờn phƣơng phỏp này nờn đƣợc sử dụng ớt nhất cú thể. * Đồng bộ chậm: là chuẩn đồng bộ 2 chiều mà tất cả cỏc phần tử trong một hoặc
nhiều cơ sở dữ liệu được so sỏnh với nhau trờn cơ sở trường với trường. [6]
Trong thực tế, đồng bộ chậm cú nghĩa rằng mỏy khỏch gửi tất cả dữ liệu trong cơ sở dữ liệu của nú tới mỏy chủ, và mỏy chủ phõn tớch dữ liệu của mỏy khỏch, cộng với dữ liệu trờn mỏy chủ đồng bộ. Sau phõn tớch, mỏy chủ gửi lại tất cả những thay đổi cần thiết cho mỏy khỏch.
Ánh xạ định danh và đồng bộ chậm đều cú cỏc phần tử chung bởi vỡ đồng bộ chậm luụn đƣợc sử dụng khi đồng bộ lần đầu tiờn đƣợc thực hiện giữa một mỏy khỏch và một mỏy chủ. Hỡnh 2-8 đƣa ra vớ dụ cỏc tỏc vụ đồng bộ chậm kết nối tới ỏnh xạ định danh trong mụi trƣờng nhiều thiết bị. Trong vớ dụ, mỏy khỏch A (Client A) đầu tiờn đồng bộ với mỏy chủ A (Server A). Sau đú, cỏc mỏy chủ (A và B) thực hiện đồng bộ với nhau.
Do vậy, nội dung đƣợc đồng bộ từ mỏy khỏch A tới mỏy chủ A, và đồng bộ tiếp với mỏy chủ B. Nếu giả sử mỏy khỏch A và mỏy chủ B khụng đƣợc đồng bộ trƣớc đú với nhau, đồng bộ chậm đƣợc khởi tạo khi chỳng đồng bộ với nhau. Khi đồng bộ chậm bắt đầu giữa mỏy khỏch A và mỏy chủ B, tất cả cỏc phần tử dữ liệu từ mỏy khỏch A đƣợc gửi đi. Mỏy chủ B cú thể nhận biết rằng chỳng đó cú hay chƣa, và nếu cú, nú chỉ cần cập nhật ỏnh xạ cho những phần tử dữ liệu này.
Nhƣ vậy đồng bộ chậm cú thể kết luận lại là:
Tỏc vụ đồng bộ chậm là một cụng cụ mạnh để khụi phục từ những hỏng húc, nhƣng chỉ đƣợc sử dụng khi thực sự cần thiết.
Tỏc vụ ỏnh xạ định danh rất hữu ớch khi kết nối với cỏc phõn tử dữ liệu đó đƣợc đồng bộ trƣớc đú.
Khi sử dụng tỏc vụ đồng bộ chậm, hoặc thờm cỏc phần tử mới, hoặc kiểm tra phần tử đó cú cần dựa trờn nội dung phần tử.
2.4.3 Đồng bộ một chiều từ phớa mỏy khỏch (One-way sync)
Đồng bộ một chiều chỉ từ phớa mỏy khỏch là một kiểu đồng bộ trong đú, mỏy khỏch gửi toàn bộ những thay đổi tới mỏy chủ nhƣng mỏy chủ khụng gửi những thay đổi ngƣợc lại. Do vậy, sau khi thực hiện đồng bộ, mỏy chủ cú tất cả những dữ liệu đó thay đổi từ mỏy khỏch nhƣng mỏy khỏch thỡ khụng cú điều tƣơng tự từ mỏy chủ. Hỡnh 2-9 bờn dƣới biểu diễn biểu đồ tuần tự trao đổi cỏc gúi cho trƣờng hợp này. [16]
Hỡnh 2. 9 Biểu đồ tuần tự đồng bộ 1 chiều từ phớa mỏy khỏch
User OMA DS Client OMA DS Server
Client và Server xử lý khởi tạo đồng bộ 1 chiều từ client
Client device prepares the data needed to be sent to the server.
Thiết bị client chuẩn bị dữ liệu cần thiết để gửi tới server. Server xử lý phõn tớch đồng bộ
2.4.4 Đồng bộ một chiều từ phớa mỏy chủ (One-way sync)
Kiểu đồng bộ này là mỏy khỏch lấy tất cả những sửa đổi từ mỏy chủ nhƣng mỏy khỏch khụng gửi những sửa đổi của nú tới mỏy chủ [16]. Do vậy, sau kiểu đồng bộ này, mỏy khỏch cú tất cả những dữ liệu đó thay đổi từ mỏy chủ nhƣng mỏy chủ khụng cú đƣợc những thay đổi trờn mỏy khỏch.
Hỡnh 2. 10 Biểu đồ tuần tự đồng bộ 1 chiều từ phớa mỏy chủ
2.4.5 Đồng bộ làm mới từ phớa mỏy khỏch (Refresh sync from client)
Là kiểu đồng bộ mà mỏy khỏch gửi tất cả dữ liệu từ cơ sở dữ liệu của nú tới mỏy chủ. Mỏy chủ tham gia đồng bộ sẽ thay thế toàn bộ dữ liệu trong cơ sở dữ liệu của mỏy chủ bằng dữ liệu đƣợc gửi từ mỏy khỏch [16]. Điều này cú nghĩa rằng toàn bộ dữ liệu của mỏy khỏch sẽ ghi đố lờn dữ liệu lƣu trữ trong cơ sở dữ liệu của mỏy chủ. Đõy là một trƣờng hợp đặc biệt của đồng bộ một chiều.
User OMA DS Client OMA DS Server
Client và Server xử lý khởi tạo đồng bộ 1 chiều từ server
Server xử lý phõn tớch đồng bộ
Thiết bị client cập nhật dữ liệu vào cơ sở dữ liệu của nú
Pkg #6: Ánh xạ ack tới client
Kết quả đồng bộ
Pkg #3: Gúi cảnh bỏo đồng bộ từ client
Pkg #4: Gúi đồng bộ
2.4.6 Đồng bộ làm mới từ phớa mỏy chủ (Refresh sync from server)