【问题标题】:Cloud Datastore - Make Use of Small OperationsCloud Datastore - 使用小型操作
【发布时间】:2017-10-13 15:22:47
【问题描述】:

在我的 Google Cloud Datastore 中,使用 App Engine,我有大约 1000 个 A 类型的实体。

我需要预先加载整个实体列表,并在每次用户登录时不断更新。我不能静态地这样做。

利用 Google Cloud Datastore 定价模型 (https://cloud.google.com/datastore/pricing) 我将查询代码更改为:

a_entities = A.query().fetch()

到:

a_keys = A.query().fetch(keys_only=True)
a_entities = ndb.get_multi(a_keys)

所以我保持在每日免费配额内,因为我将大部分读取操作转移到“数据存储小型操作”类型,在我阅读时,这些操作是免费且无限制的。

这是一个合理的解决方案吗?如果流量增加很多,它是否能够维持一定的流量?它会影响其他资源吗?

谢谢

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore query-optimization


    【解决方案1】:

    keys_only 查询是免费的(只需 1 次操作)。但是下一行,get_multi 实际实体不是免费的。您还没有发现保持在免费配额内的漏洞。

    【讨论】:

    • 好的,谢谢,通过测试,我发现这往往比第一行在配额上执行得更好。是因为memcache吗?
    • @FedericoCapello 如果值在内存缓存中,从成本的角度来看,您将从这种方法中受益(假设使用共享内存缓存)。但是,从性能的角度来看,您需要进行 2 次往返。在大容量场景中,您还需要注意热键问题
    猜你喜欢
    • 2017-09-14
    • 2019-06-08
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    相关资源
    最近更新 更多