程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> MobiLink開發資源集之數據分區第二部分

MobiLink開發資源集之數據分區第二部分

編輯:SyBase綜合文章

步驟清單:

 

在上一部分中,我們看見在download_cursor表事件中有兩個參數,其中我們使用了ml_username這個參數。那麼, last_download這個參數是怎麼使用的呢?我們注意到,last_download這個參數是TIMESTAMP類型的。它指明了上一次下載的時間。我們可以通過比較時間戳,來達到每次僅同步下載自上次下載以來更改過的數據。在下載階段緊前面的最後一次成功的同步過程中,從統一數據庫中獲取的時間值即為 last_download 時間戳。如果當前用戶從未成功地進行過同步,則該值將被設置為 1900-01-01。下圖展示了MobiLink服務器與客戶端在首次交互前後last_modifIEd的變化情況:

 

在真正實施比較之前,我們需要在統一數據庫一側做一些改動,也就是在一些表上增加一個時間戳的字段。比如,我們在錄像中對統一數據庫實施了以下語句:

 

ALTER TABLE emp ADD last_modifIEd 
TIMESTAMP NOT NULL DEFAULT TIMESTAMP

 

Oracle的映射數據類型為date

IBM DB2的映射數據類型為timestamp

MS SQL Server的映射數據類型為datetime

Sybase ASE的映射數據類型為datetime

 

時間戳方法是可以進行高效的同步的最實用的通用技術。此項技術涉及跟蹤每個用戶上次進行同步的時間,並使用此信息控制下載到每個遠程數據庫的行。

 

MobiLink 保留了一個用以說明每個 MobiLink 用戶上一次下載數據的時間戳值。該值被稱為上次下載的時間戳。上次下載的時間戳將作為一個參數被提供給許多事件,該時間戳還可以在同步腳本中使用。

 

 

如果您正在使用 Adaptive Server Anywhere 統一數據庫,而且保存上次修改信息的列的類型為 DEFAULT TIMESTAMP,則不應同步該列。如果您的遠程數據庫需要這樣的列,應使用不同的列名。否則,時間戳的缺省值可能被上載值覆蓋,並不會包含上次在統一數據庫中修改該行的時間。當我們在統一數據庫中的表中增加了時間戳後,就可以在download_cursor中編寫如下的腳本:

 

CALL ml_add_table_script(
'demo4',
'emp',
'download_cursor',
'SELECT empno, empname, gender, 
deptno FROM emp WHERE last_modifIEd > ?')

所以,上述download_cursor的腳本中將只下載自上次同步後更改的數據。

 

本部分的代碼如下:

 

center:

ALTER TABLE emp ADD last_modified 
TIMESTAMP NOT NULL DEFAULT TIMESTAMP


Remote:

CREATE PUBLICATION Lab_04
(
TABLE emp(empno, empname, gender, deptno)
)


CREATE SYNCHRONIZATION USER "Sales04"


CREATE SYNCHRONIZATION SUBSCRIPTION TO Lab_04
FOR "Sales04"
TYPE 'TCPIP'
ADDRESS 'host=localhost;port=2439'
OPTION ScriptVersion = 'demo4'


Center:

CALL ml_add_table_script(
'demo4',
'emp',
'download_cursor',
'SELECT empno, empname, gender, 
deptno FROM emp WHERE last_modifIEd > ?')

COMMIT


cmd:

dbmlsrv9 -dl -v+ -x tcpip -c 
"dsn=center" -o mlserver.mls -zu+

dbmlsync -o dbmlsync.out -v 
-e "sv=demo4" -c "dsn=remote"
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved