【问题标题】:Eventual consistency in RDBMS (Oracle)RDBMS (Oracle) 中的最终一致性
【发布时间】:2018-12-13 05:55:26
【问题描述】:

我了解像 Oracle 之类的 RDBMS 数据库并不是真正意义上的最终一致性。但是定制 oracle 以遵循最终一致性模型在技术上是不可行的(比如 cassandra 支持什么?)

例如:我们不能有两个 Oracle 集群(带有自己的存储)通过双向复制的活动数据保护连接吗?即主动-主动!我在许多生产系统中看到了主动-被动模型。但是在 Oracle 中 Active-Active 可行吗?

【问题讨论】:

  • RDBMS 的主要特点之一是一致性,为什么要放宽这个条件?

标签: oracle cassandra database-replication


【解决方案1】:

可以使用 GoldenGate 构建它,但考虑使用 18c 中提供的 Oracle Sharding。这样,您只需使用GDSCTL 命令语法声明您想要的复制拓扑,Oracle 就会实现它(使用 GoldenGate)。

这里是文档的链接:

https://docs.oracle.com/en/database/oracle/oracle-database/18/shard/sharding-overview.html#GUID-0F39B1FB-DCF9-4C8A-A2EA-88705B90C5BF

特别是,请查看第 7.1 节关于高可用性和与 Oracle GoldenGate 的集成。

关于主动-主动的回应

我不能肯定地说,但 Oracle 的文档强烈暗示它可以用于主动-主动安排。来自 Oracle 的文档:

7.1.1 何时为分片高可用性选择 Oracle GoldenGate 何时应使用 Oracle GoldenGate 作为您的高可用性 Oracle Sharding 的解决方案?

Oracle GoldenGate 应该是您首选的高可用性解决方案 在以下情况下:

所有分片都可以读写。使用 Active Data Guard,DR/备份分片是 只读。

更灵活地部署分片。每个分片可以在不同的 操作系统或不同的数据库版本。

不止一个可更新的数据副本。例如,与 Oracle GoldenGate,使用 4 的复制因子,你可以有 4 可以更新的数据的读写副本

【讨论】:

  • 这不是一个主动-主动的解决方案。这是一种多主动-被动方法,每个数据部分都有主动节点和多个被动副本。
  • @AdamLeszczyński 我更新了我的答案,让我相信它一个主动-主动解决方案。如果您在该主题上有经验或更清楚的 Oracle 信息,请分享它,我将更新或撤回我的答案。谢谢!
  • 所以实际上,如果你想使用 Active - Active 你必须使用 Oracle GoldenGate。分片只是为了在一个源中呈现数据而收集的附加层。
【解决方案2】:

您可以使用 Oracle GoldenGate 或任何其他复制引擎创建主动-主动双向异步复制。但是您必须严格定义处理行的方式。

例如:

  1. 如果同一行在两个站点中同时更新 - 哪一个应该更重要?

  2. 如果您为行分配新标识符(如序列),您必须确保不会在两个站点分配相同的标识符。

或者您可以使用 Oracle RAC 创建同步复制。您将创建一个大型数据库,该数据库在 2 台具有共享存储的主机上创建。在一个站点上所做的每一项更改都可以立即在另一个站点上看到。

【讨论】:

  • 谢谢,亚当!当您说具有共享存储的 2 台主机之间的同步复制时:您的意思是,a) 2 台主机将使用同一个磁盘,但每台主机都有自己的数据副本?或 b) 2 台主机将使用相同的磁盘但仅使用一份数据副本?对我来说:“复制”和“共享存储”这两个词是相互矛盾的。复制的目的之一是拥有额外的数据副本不是吗?
  • 实际上使用 Oracle RAC 作为 Active-Active 复制的替代品有点吃力。实际上,您将在这里使用一个数据库。要实现真正的复制,您需要一个额外的工具,例如 GoldenGate。
猜你喜欢
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2012-11-07
  • 2011-11-11
相关资源
最近更新 更多