Cloud Datastore - 使用小型操作
Posted
技术标签:
【中文标题】Cloud Datastore - 使用小型操作【英文标题】:Cloud Datastore - Make Use of Small Operations 【发布时间】: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)
所以我保持在每日免费配额内,因为我将大部分读取操作转移到“数据存储小型操作”类型,在我阅读时,这些操作是免费且无限制的。
这是一个合理的解决方案吗?如果流量增加很多,它是否能够维持一定的流量?它会影响其他资源吗?
谢谢
【问题讨论】:
【参考方案1】:keys_only
查询是免费的(只需 1 次操作)。但是下一行,get_multi
实际实体不是免费的。您还没有发现保持在免费配额内的漏洞。
【讨论】:
好的,谢谢,通过测试,我发现这往往比第一行在配额上执行得更好。是因为memcache吗? @FedericoCapello 如果值在内存缓存中,从成本的角度来看,您将从这种方法中受益(假设使用共享内存缓存)。但是,从性能的角度来看,您需要进行 2 次往返。在大容量场景中,您还需要注意热键问题以上是关于Cloud Datastore - 使用小型操作的主要内容,如果未能解决你的问题,请参考以下文章
库 appengine.api.datastore 和 com.google.cloud.datastore 有啥区别?
在 Google Cloud Datastore 上使用动态类型
Google Cloud Datastore Emulator 如何验证我们的 datastore-index.xml?
Cloud Firestore 下一代 Cloud Datastore?