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

SQL Anywhere 11.0.1 (中文) » MobiLink - 服务器管理 » 使用 MobiLink 服务器技术 » 同步技术 » 在远程数据库之间对行进行分区

 

无交集分区

分区由同步中涉及的每个表的 download_cursor 和 download_delete_cursor 脚本控制。这些脚本采用两个参数:上次下载时间戳和同步调用中提供的 MobiLink 用户名。

♦  在远程数据库之间对表进行分区
  1. 在表定义中应包括一个包含统一数据库中的同步用户名的列。您不必将此列下载到远程数据库。

  2. 在 download_cursor 和 download_delete_cursor 脚本的 WHERE 子句中包括一个条件,要求此列与脚本参数相匹配。

    脚本参数在脚本中可使用问号或命名参数来表示。例如,下面的 download_cursor 脚本根据雇员 ID 对 Contact 表进行分区。

    SELECT id, contact_name
    FROM Contact
    WHERE last_modified >= {ml s.last_table_download}
    AND emp_id = {ml s.username}

    请参见download_cursor 表事件download_delete_cursor 表事件

示例

CustDB 示例应用程序中的主键池表用于为每个远程数据库提供各自的主键值集。此技术可用于避免出现重复的主键,在使用主键池中有对此技术的详细论述。

使用此方法的一个必要条件是,必须以无交集方式在远程数据库之间对主键池表进行分区。

一个键池表是 ULCustomerIDPool,此表包含每个用户在添加客户时可以使用的主键值。此表包含三列:

  • pool_cust_id   在 ULCustomer 表中使用的主键值。此列是唯一下载到远程数据库中的列。

  • pool_emp_id   拥有此主键的员工。

  • last_modified   此表是使用时间戳技术并基于 last_modified 列来进行维护的。

    有关时间戳同步的信息,请参见基于时间戳的下载

此表的 download_cursor 脚本如下所示。

SELECT pool_cust_id
FROM ULCustomerIDPool
WHERE last_modified >= {ml s.last_table_download}
 AND pool_emp_id = {ml s.username}

如果不使用变量或指定参数,则可以使用包含 ? 占位符的连接或子选择。

请参见同步 Contact 示例中的客户同步 Contact 示例中的联系人