热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SymmetricDS文档翻译--【Chapter3.详细配置(Configuration)[se

1.6.Conflicts3.7.1.ConflictDetectionandResolution冲突的检测和解决是SymmetricDS3.0的新特性。冲突检测是决定是否插入,更新或者删除的策略。冲突是因为目标数据与在源节点先前插入、更新或删除的数据不一致。解决冲突就是当检测到冲突时决定做什

1.6. Conflicts 3.7.1. Conflict Detection and Resolution 冲突的检测和解决是SymmetricDS 3.0的新特性。冲突检测是决定是否插入,更新或者删除的策略。冲突是因为目标数据与在源节点先前插入、更新或删除的数据不一致。解决冲突就是当检测到冲突时决定做什

1.6. Conflicts

3.7.1. Conflict Detection and Resolution

冲突的检测和解决是SymmetricDS 3.0的新特性。冲突检测是决定是否插入,更新或者删除的策略。冲突是因为目标数据与在源节点先前插入、更新或删除的数据不一致。解决冲突就是当检测到冲突时决定做什么。
冲突检测和解决策略配置在CONFLICT表中。至少为一个NODE_GROUP_LINK配置这个冲突策略。这些配置信息仅限于一个CHANNEL或一个表。
冲突检测通过CONFLICT表中的detect_type和detect_expression列指定。detect_expression的值依赖于detect_type的值。当数据被加载到目标系统的时候执行冲突检测。

USE_PK_DATA
表明仅使用主键来检测冲突。如果已经存在一个相同主键的行,在更新和删除过程中将不会检测到冲突。更新和删除一行数据仅使用主键的列来处理。如果在插入时一行数据已经存在,将会检测到冲突。

USE_OLD_DATA
表明将使用一行数据的各个列的旧值来检测冲突。旧数据是这行数据在源节点中在变化之前的值。如果在目标系统上存在与旧数据相同的一行数据,在更新和删除时,将不会检测到冲突。如果在插入是一行数据已经存在,将会检测到数据冲突。
注意,一些平台不知道二进制列的比较。在下列平台下,不会对二进制列的冲突检测:DB2,DERBY,ORACLE和SQLSERVER。

USE_CHANGED_DATA
跟上边相反。

USE_TIMESTAMP
判断条件是主键+时间戳列。

USE_VERSION
判断条件是主键+一个版本号列。

Important
注意,在表对应的Trigger上,use_stream_lobs被设置为true时,冲突检测将不会检测二进制类型的列,此外,一些数据库不允许二进制类型的列的比较,不管use_stream_lobs是否被设置为true。
可以在CONFLICT表的resolve_type列,配置如何处理冲突检测。可以配置两个可选的Boolean类型的值,resolve_row_only和resolve_changes_only,下面讨论这个解决方案的设置。

FALLBACK
表明当检测到冲突的时候,系统应该自动的应用变化后的数据。如果源节点的操作是插入,将会尝试更新数据。如果源节点中的操作是更新,但是目标节点这行数据不存在,然后将在目标节点尝试插入操作。如果源节点的操作室删除,但是目标节点中这行数据不存在,然后目标节点的这个删除操作将被忽略。Resolve_changes_only标识控制在一次fallback操作中,是所有的行都被更新还是只更新已经发生变化的列。

IGNORE
表明当检测到冲突时,系统将自动忽略。Resolve_row_only列控制是整个batch都被忽略还是只忽略这一行数据。

MANUAL
表明当检测到冲突的时候,整个Batch将保持错误状态直到手工介入。一行错误的数据会被插入到INCOMING_ERROR表中。此次冲突检测的标识(例如CONFLICT表中的conflict_id)将会被记录,同时还会记录旧的数据,新的数据和当前数据(当前数据是指在目的节点意外的数据,这些数据不想期望的那样不匹配旧的数据)到old_data,new_data和cur_data中。为了解决冲突,resolve_data列可以被手工的填充以代替原始的数据,这将被用来进行下一次加载尝试。Resolve_ignore标识将被用来表明下一次加载时,这一行数据是否应该被忽略。

NEWER_WINS
表明当使用USE_TIMESTAMP或者USE_VERSION方式检测到冲突的时候,将会使用更新的时间戳或者更高版本的数的数据更新目标节点的数据。
对于配置的每一个冲突检测策略,你可以控制是否以及多少被解决冲突后的数据被发送回数据冲突所在的节点。可以设置ping_back列为下面的值中的一个来控制这个策略:

OFF
没有数据被发送回原始节点,即使被解决的数据也不匹配节点发送的数据。

SINGLE_ROW
一个Batch中的一行导致冲突然后被解决的数据发送回原始节点

REMAING_ROWS
一个batch中发生冲突然后被解决的一行数据,与整个Batch中剩下的数据一起,被发送回原始节点。


推荐阅读
  • 本文详细解析了 SUCTF 2019 中的 EasySQL 题目,重点探讨了堆叠注入与 UNION 注入的区别及其应用条件。 ... [详细]
  • 本文详细探讨了Xshell6评估版到期后无法使用的常见问题,并提供了有效的解决方案,包括如何合法购买授权以继续使用。 ... [详细]
  • 本文详细介绍了如何利用PowerShell中的Invoke-SqlCmd cmdlet来执行SQL查询,旨在为数据库管理和自动化任务提供实用的技术指导。 ... [详细]
  • 在Android应用开发过程中,经常需要在SQLite数据库中快速插入大量数据。本文通过实例探讨了不同插入方法的效率,并提供了优化建议。 ... [详细]
  • 本文探讨了在使用MySQL数据库时遇到的一些基本问题,如连接失败和语句执行错误,并提供了多个有效的解决方案。 ... [详细]
  • 本文详细介绍了Oracle数据库中审计日志(audit trail)的配置方法及各参数选项的功能,包括如何启用系统范围的审计记录,以及如何将审计数据存储在不同的位置和格式。 ... [详细]
  • 本文探讨了SQL Server中以sp_开头的存储过程特性及其对数据库执行上下文的影响。通过分析执行规则和潜在问题,提供了解决方案,确保存储过程能够正确访问所需对象。 ... [详细]
  • API网关作为微服务架构中的关键组件,扮演着系统与外部世界交互的唯一接口角色。它不仅封装了系统的内部复杂性,还为不同客户端提供了个性化的API接口。本文将探讨API网关的重要性及其核心功能。 ... [详细]
  • 收割机|篇幅_国内最牛逼的笔记,不接受反驳!!
    收割机|篇幅_国内最牛逼的笔记,不接受反驳!! ... [详细]
  • 本文介绍了在T-SQL中如何有效地进行字符串分割以及如何将多行字符串合并为单行的方法,提供了具体的函数实现和示例。 ... [详细]
  • 本文介绍了Kettle资源库的基本概念、类型及其管理方法,同时探讨了Kettle的不同运行方式,包括图形界面、命令行以及API调用,并详细说明了日志记录的相关配置。 ... [详细]
  • 探讨了汉字在计算机系统中的字符占用情况,以及在使用SQL Server 2000进行特定条件查询时遇到的问题,特别是针对姓氏为‘刘’的学生记录的查询。 ... [详细]
  • 本文深入探讨了在MySQL数据库中利用innobackupex工具进行备份,并结合binlog日志实现数据库的完整恢复过程。适合对数据库管理和维护有一定需求的技术人员阅读。 ... [详细]
  • Pikachu SQL注入实战解析
    作为一名网络安全新手,本文旨在记录个人在SQL注入方面的学习过程与心得,以备后续复习之用。通过逐步深入的学习,力求掌握每个知识点后再向下一个挑战迈进。 ... [详细]
  • Spring Boot + MyBatis Plus 实现SQL语句打印的两种方法
    本文详细介绍了如何在Spring Boot和MyBatis Plus环境中实现SQL语句打印的两种方法,包括配置文件设置和多数据源环境下的动态配置。适合开发者在日常开发和调试过程中参考。 ... [详细]
author-avatar
一滴水
没事就吐槽!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有