gpt4 book ai didi

java - 处理数据存储最终一致性的技术

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:08 25 4
gpt4 key购买 nike

GAE 的现有持久性框架(如 ObjectifyDatanucleusTwig 等)如何处理“最终一致”的性质数据存储?

我正在使用 DatastoreService 层中的数据存储(我现在没有使用这种持久性框架)。

在我的单元测试期间,我有时会得到正确的对象计数,有时不会。这是预期的。

这是我的 JUnit 助手配置:

private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
.setDefaultHighRepJobPolicyUnappliedJobPercentage(50));

现在,即使我已将 put/get 方法放在一个带有重试的 do-while 循环中(重试次数为 4),它仍然无法放置/获取实体。

那么现在,对于那些指定的框架,他们是否能够确保如果我放置 3 个对象,我将得到 3 个对象?如果是这样,它是如何实现的?

我唯一能想到的就是使用 Memcache,也就是说,我的方法会首先尝试从中获取实体,如果没有成功,那将是唯一一次检查数据存储区。这是一种合理的方法,还是有更好的方法或正确的方法?

最佳答案

如果您想要查询的高度一致性,那么有两种选择:

  1. ) 使用 ancestor查询。

  2. ) 使用 datastoreget操作而不是查询,它们是强一致的。

如果您仔细组织键名,通常可以使用获取而不是查询。如果您需要为给定用户“显示”一致的查询,您的另一个选择是应用一个小技巧:将用户更改注入(inject)结果。因此,如果他们更改了他们的名字并且您重定向到他们的个人资料页面,请在发送之前将他们的更改注入(inject)结果。

关于java - 处理数据存储最终一致性的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com