问题标签 [data-consistency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
115 浏览

javascript - 如何在 JavaScript 中保持 2 向对象关系的一致性?

如果我在 2 个对象之间有 2 向关系,例如AB相关,BA相关,我怎样才能保持这种一致性,以使 2 个对象始终相互引用?

我正在努力将我非常简单的问题用语言表达出来,所以这里有一个非常简单的例子。我从Husband和开始Wife

从逻辑上讲,如果哈利的妻子是温蒂,那么温蒂的丈夫就是哈利。

我需要一种保持这种关系一致的方法。因此,我创建了一个 setter 方法,Husband并通过以下划线前缀表示该wife变量应被视为私有变量。

现在描述这种关系很简单,并鼓励一致性:

同样,最好有相反的选项:

为此,我setHusband在 上创建一个方法Wife,并Husband根据需要进行调整。

在这一点上,我遇到了障碍。我的新setHusband方法需要能够保持一致性,但wife现在是_wife(私有的),并且调用setWife会导致无限循环,因为它们相互交互。

我可以创建另一组类似的方法,reallyJustSetHusband但这似乎很愚蠢。

我的难题并不是 JavaScript 特有的,但我在问题中提到了它,以防需要特定的方法。

在这两个对象之间实现一致性的最佳方法是什么?有什么我忽略的吗?

DOM 中的相似模式

在 DOM 中,如果调用parent.appendChild(child),则child.parentNode === parent. 它们从不矛盾。如果父母有一个孩子,那么孩子有同一个父母。其他关系如nextSibling也保持一致。

0 投票
1 回答
193 浏览

azure-table-storage - Azure 表保持一致性

我遇到了一个问题。我必须在天蓝色表中存储一个列表。我正在做的是将它序列化为字符串并存储它。现在,当我阅读该行时,有些情况下我没有得到更新的列表。因此,如果我们将任何项目添加到列表中,那么旧的项目就会丢失。有没有人遇到过这个问题,解决方法是什么。

详细地说,假设我们有 3 个类,其中 C 扩展 B,B 扩展 A。现在 B 和 C 的任何对象也是 A 的对象。现在假设我们将 A 的所有对象(包括 B 和 c)维护为一个列表在 Azure 表的一列中。对象的当前状态为 [A',B',C',A''] 当我们有多个应用程序服务器时会发生问题。现在,Server1 想通过获取当前列表将 B 的实例添加到列表中,例如 [A',B',C',A''] 追加新实例让我们说 B'' 使其成为 [A',B',C' ,A'', B''] 同时 Server2 获取列表为 [A',B',C',A''] 并附加 C'' 以使 [[A',B',C',A ''],C'']。现在关于对象 B'' 的信息丢失了。如何缓解此类问题。

我正在使用 dot net 客户端库。下面是相同的代码

0 投票
0 回答
42 浏览

java - 缓存:处理异步调用的失败场景

我正在创建一个应用程序,我在其中使用缓存来减少数据库的延迟和负载。我面临的问题是我使用的缓存客户端提供了用于将数据发布到远程分布式缓存的异步调用,因此我无法弄清楚如何处理这种行为。

例如。- 数据库和缓存中都存在变量X=10。因此,当 X 将其值更改为X=20我想确保在数据库和缓存中其值得到更新。对于 DB,我可以进行同步调用,所以它在那里很好,但是使用缓存我有异步方法,它返回 void,所以我不足以确保成功的缓存发布场景。

问题是我不想从缓存中读取过时的数据,我总是想读取更新的最新数据。

有没有针对此类问题的解决方法?

0 投票
7 回答
12594 浏览

design-patterns - 跨微服务的数据一致性

虽然每个微服务通常都有自己的数据 - 某些实体需要在多个服务之间保持一致。

对于微服务架构等高度分布式环境中的这种数据一致性要求,设计上有哪些选择?当然,我不想要共享数据库架构,其中单个数据库管理所有服务的状态。这违反了隔离和无共享原则。

我确实理解,微服务可以在创建、更新或删除实体时发布事件。对此事件感兴趣的所有其他微服务可以相应地更新其各自数据库中的链接实体。

这是可行的,但是它会导致跨服务进行大量仔细和协调的编程工作。

Akka 或任何其他框架可以解决这个用例吗?如何?

EDIT1:
为清楚起见,添加下图。
基本上,我试图了解,如果今天有可用的框架可以解决这个数据一致性问题。

对于队列,我可以使用任何 AMQP 软件,例如 RabbitMQ 或 Qpid 等。对于数据一致性框架,我不确定目前 Akka 或任何其他软件是否可以提供帮助。还是这种情况如此罕见,并且是一种不需要任何框架的反模式?
在此处输入图像描述

0 投票
1 回答
8576 浏览

sql - InfluxDB:如何更新现有数据库的持续时间

我有一个默认创建的数据库retention policy,即infinite.

# SHOW RETENTION POLICIES ON "my_database" name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 true

如何修改实时数据库的保留策略,以便从现在开始仅保留最近 10 天的数据?

0 投票
2 回答
299 浏览

database - 数据创建响应超时的最佳重试策略

在这种情况下,最好的重试策略是什么:

Database成功创建数据条目,但响应时间过长Application。所以要执行这项工作,Application重试创建,当然会Database返回一个“已经存在”的错误。所以最后从Application他的角度来看,好像是创作失败了,其实是成功了。更糟糕的是,如果这是在一系列步骤的中间,那么就无法Application决定是否触发前面步骤的回滚。

增加超时时间Application不是一个可接受的解决方案,因为 IP 网络永远不可能 100% 可靠,而且响应在网络中丢失的可能性总是很小。

在创建之前添加对存在的检查<data>可能会起作用。但这只是在考虑并发性的情况下。在我的情况下,可以有多个客户Database,我不确定竞争条件的可能性。

0 投票
1 回答
168 浏览

cassandra - 在 cassandra 中验证数据中心之间的数据一致性

我维护一个带有 2 个数据中心的 cassandra 集群。现在我要在现有集群中添加新的数据中心。重建数据后,如何验证新数据中心数据的一致性?

0 投票
2 回答
2503 浏览

cassandra - Cassandra 一致性级别和复制因子

我是卡桑德拉的新手。假设我有 3 个节点,并且密钥空间的复制因子(RF)为 3。

  1. 我可以安全地假设如果 2/3 节点关闭,我仍然可以获得查询的完整数据,而不管一致性级别如何?
  2. 保持 2/3 节点处于关闭状态,哪种一致性级别可以确保我获得完整的查询数据?
0 投票
0 回答
36 浏览

java - PostgreSQL 行更改通知 java 程序,反之亦然

当一行要更新时,这个动作是否会影响这一行很难预测,所以我希望数据库在动作正确完成时回调一些api服务,并且当api没有正确调用时,更新的操作需要回到以前的版本。

所以,我想在数据库级别做。我研究了一下,知道一些 oracle db 有这个调用 java-function 功能,而 postgreSQL 只有一个与之相关的不推荐使用的项目,并且可能不可靠。

另外,我如何在java中实现db和api服务之间的这种一致性(比如给redis设置一个值,如果redis无法连接就会失败,所以调用这个api被认为是失败的)

0 投票
1 回答
537 浏览

mysql - 多主-主innodb集群保证什么样的一致性保证?

假设我有一个多主 innodb 集群(只有 2 个数据节点),其中客户端通过 mysql 路由器发出请求。假设两个客户端几乎同时在两个节点上更新数据库中某个表上的特定行。现在两个节点在同一行中都有不同的数据。在多主 innodb 集群中如何协调这些类型的冲突?