Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » MobiLink - 服务器管理 » MobiLink 服务器技术 » 同步技术

 

实现基于时间戳的下载

时间戳方法是进行高效下载的最实用的通用技术。此方法将跟踪每个用户上次同步的时间并仅下载在该时刻后更改的行。

前提条件

执行此任务没有前提条件。

上下文和注释

MobiLink 维持一个 TIMESTAMP 值,用来指示每个 MobiLink 用户上次下载数据的时间。此值被称为上次下载时间

 任务
  1. 要为表实施基于时间戳的同步,在统一数据库中,添加一个 last_modified 列以保存行的最近修改时间。通常可以按照如下方式声明该列:

    DBMS 最近修改的列
    Adaptive Server Enterprise datetime
    IBM DB2 LUW timestamp NOT NULL GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP
    Microsoft SQL Server datetime
    MySQL timestamp default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    Oracle timestamp
    SQL Anywhere timestamp DEFAULT timestamp
  2. 在 download_cursor 和 download_delete_cursor 事件的脚本中,将第一个参数与 TIMESTAMP 列中的值进行比较。

结果

基于时间戳的同步实施完成。

下面从 MobiLink Contact 示例中获取的例子说明了如何实施基于时间戳的下载。

  • 表定义:

    CREATE TABLE "DBA"."Customer"(
       "cust_id"  integer NOT NULL DEFAULT GLOBAL AUTOINCREMENT,
       "name"  char(40) NOT NULL,
       "rep_id"  integer NOT NULL,
       "last_modified" timestamp NULL DEFAULT timestamp,
       "active"  bit NOT NULL,
       PRIMARY KEY ("cust_id") )
  • download_cursor 脚本:

    SELECT cust_id, Customer.name, Customer.rep_id
    FROM Customer KEY JOIN SalesRep
    WHERE Customer.last_modified >= {ml s.last_table_download}
        AND SalesRep.ml_username = {ml s.username}
        AND Customer.active = 1

 另请参见

脚本中的上次下载时间
夏令时解决方案