【问题标题】:what is the consistency level of a batch get in Google Cloud DatastoreGoogle Cloud Datastore 中批量获取的一致性级别是多少
【发布时间】:2016-07-17 15:59:39
【问题描述】:

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

【问题讨论】:

  • any“数据存储”的语用一致性完全取决于数据如何到达那里,以及它是否可能会受到修改,以便在这家商店是“到达时陈旧的”。它是一种共享资源,必须被视为……共享资源。通常的警告适用,“谷歌与否”。

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


【解决方案1】:

简答

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

更长的答案

当前的实现细节(可能会发生变化)是,对于同一 Entity Group 中的实体,批量获取将是高度一致的。

实体组之间,以最终一致为准。

例如,考虑以下问题:

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

客户端 B (cB) 大致同时对这 10 个实体进行批量获取。

可能的结果包括:

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

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

【讨论】:

    猜你喜欢
    • 2017-07-08
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多