【问题标题】:Google Datastore ancestor query one write per ancestor per secondGoogle Datastore 祖先查询每个祖先每秒一次写入
【发布时间】:2014-09-25 06:33:23
【问题描述】:

执行祖先查询时,每个祖先每秒只能写入一次。这适用于不同的实体种类还是相同的种类?

例如, https://cloud.google.com/appengine/docs/python/ndb/queries#ancestor

class Customer(ndb.Model):
    name = ndb.StringProperty()

class Purchase(ndb.Model):
    price = ndb.IntegerProperty()

class Order(ndb.Model):
   shipping = ndb.StringProperty()

purchase1 = Purchase(parent=customer_entity.key)
order1 = Order(parent=customer_entity.key)

你能同时写信给采购和订单吗?

【问题讨论】:

    标签: google-app-engine google-cloud-datastore


    【解决方案1】:

    是的,您可以同时编写采购和订单。在数据存储中写入实体时,限制适用于您使用 transactions 的情况。

    例如,在您的 sn-p 中,您可以使用 ndb.put_multi() 编写两个实体。

    【讨论】:

    • Thanos 关于使用单次看跌操作是正确的。但是,写入限制确实适用于外部事务。例如,如果您有许多用户请求在同一个实体组中创建数据,这将达到实体组的写入限制。更合适的限制规则是“每个实体组每秒 1 次写入 rpc”,这就是为什么使用 put_multi 允许您每秒向实体组写入多次。
    【解决方案2】:

    它适用于整个实体组,而与实体种类无关(实际上,Datastore 不太关心种类,只关心键和实体)。

    你可以对你的order和你的purchase单独操作,但不能用transactions的强一致性。如果您想要强一致性,那么您的customer_entity 将定义该一致性的范围和写入速率限制的范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多