同步子字符串索引
子字符串索引中的数据必须随着源属性的更改而进行同步。创建新对象 (插入)、修改现有对象的属性 (更新) 或删除对象 (移除) 的操作都需要更新到子字符串中的数据。
以下操作可用于将子字符串索引与其源属性同步:
• 事件驱动同步
• 已安排后台队列处理
• 手动同步
对于子字符串索引,您可以使用不同的同步方法。每个单独的子字符串索引和操作类型 (插入、更新或移除) 均可以单独进行同步配置。例如,事件处理可用于插入和更新操作,而后台队列处理可用于移除操作。
事件驱动同步
事件驱动同步可在插入、更新或移除时发生。启用后,源属性将同步到与原始操作处于相同事务中的子字符串索引。更改将立即反映到使用子字符串索引的所有查询中。这个选项的劣势是操作会增加额外的处理时间。
事件驱动同步使用
配置文件中的
synchronizeOnInsert、
synchronizeOnRemove 和
synchronizeOnUpdate 属性进行配置。默认情况下,同步选项处于禁用状态。
已安排后台队列处理同步
当同步配置为可以使用已安排后台队列处理时,已安排队列将根据配置文件定期执行。已安排后台队列处理决定着在此期间应该执行哪些子字符串索引和操作类型。用单独的处理队列执行这些单独的任务。为进行插入和更新操作,可以对完整的源表格进行处理,也可以仅处理最新更改 (最后一次处理所做的更改)。要进行移除操作,只能处理完整字符串索引。
已安排后台队列处理同步使用期间属性 (
synchronizationSchedulePeriod) 以及
配置文件中指定的间隔属性 (
scheduleSynchronizeFullInsertInterval、
scheduleSynchronizeFullRemoveInterval、
scheduleSynchronizeFullUpdateInterval、
scheduleSynchronizeRecentInsertInterval 和
scheduleSynchronizeRecentUpdateInterval) 进行配置。
经配置的期间和间隔属性共同决定着进行同步的频率。例如,10 秒的期间和 30 个周期的间隔可以使每 300 秒进行一次同步。小于 0 的间隔值从不使用队列处理进行同步。等于 0 的间隔值仅在方法服务器启动时进行同步。
已安排后台队列处理不会由于子字符串索引的处理时间而对源对象的操作造成任何影响。源对象操作和子字符串索引同步之间存在延时。所以,在延时窗口中执行的查询可能不会与源对象的当前状态保持一致。
手动同步
手动同步使用 subStringIndexTool 与 sync 操作来执行。此操作将立即在指定子字符串索引的方法服务器上执行完全同步。