Google Cloud Datastore中批量获取的一致性级别是什么

时间:2016-07-17 15:59:40

标签: google-cloud-datastore google-cloud-platform consistency eventual-consistency

get(Iterable e)是否返回强一致数据或最终一致数据。 我查看了文档,但没有找到答案。

1 个答案:

答案 0 :(得分:1)

简答

批量获取(比如说500项),不会在单个实体之外进行一致性保证。换句话说,它具有与执行500个单独查找相同的一致性,其中每个实体获得将是非常一致的。事务是原子的,因此您不会看到部分事务。

更长的答案

当前的实施细节(可能会有变化)是批次获取对于同一Entity Group的实体将是强烈一致的。

在实体组之间,它将最终保持一致。

例如,请考虑以下事项:

您从客户端A(cA)发送请求以从事务组(tx1)中删除实体组1(例如1)中的5个实体。在提交之后,您从cA发出第二个请求,将5个实体写入实体组2(例如2),也包含在事务(tx2)中。

客户B(cB)大致在同一时间批量获取这10个实体。

可能的结果包括:

  • 返回所有10个实体
    • 在tx1提交之前读取eg1,在tx2提交之后读取eg2
  • 不返回任何实体
    • 在tx1提交后读取eg1,在tx2提交之前读取eg2
  • 返回来自eg1的5个实体
    • 在tx1提交之前读取eg1,在tx2提交之前读取eg2
  • 返回来自eg2的5个实体
    • 在tx1提交后读取eg1,在tx2提交后读取eg2

请注意,由于Cloud Datastore事务是原子的,因此任何时候都不会返回部分事务的结果。