【问题标题】:Datastore and MemCache Entry Read and Pricing数据存储和 MemCache 条目读取和定价
【发布时间】:2017-03-03 06:44:19
【问题描述】:

数据存储区按读取的实体数量收费。

  1. 如果从 memcache 中读取实体,是否算作在数据存储区 pricing 中读取的实体并计费?
  2. 如果一个实体在同一个批次中被读取多次,它算作一次读取还是多次读取?

例如,经典的帖子和标签问题,我想查找标签名称以获得帖子列表,

class Post(ndb.Model):
  title = ndb.StringProperty()
  tag_ids = ndb.KeyProperty(repeated=True)

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

@ndb.tasklet
def callback(post):
  tags = yield Tag.get_multi(tag_id for tag_id in post.tag_ids)
  raise ndb.Return(tags)

qry = Post.query()
output = qry.map(callback, limit=20)

post01 有 tag01、tag02,post02 有 tag02、tag03。在这种情况下,tag02在同一个批次中被查询了两次,tag02算作2读还是1读?

  1. 是否有任何配置文件库可以获取计费的阅读次数,以便我自己解决上述问题?

提前致谢。

【问题讨论】:

  • 您所说的“是否算作已读”是什么意思?从数据存储读取还是从内存缓存读取?
  • 我的意思是如果从 memcache 读取的实体算作 datastore pricing 中读取的实体。我已经按问题更新了。

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


【解决方案1】:

你不会因为从内存缓存中读取实体而被收费,但你已经采取了 自己关心将实体放入缓存中并从缓存中读取。 我认为当您使用复杂的数据模型时,这可能会变得非常具有挑战性。

我正在运行一个只有几百个实体的小型应用程序,当第一个 用户读取我将所有实体放入缓存中的数据,所有其他用户将获得 缓存中的数据。

对于我的其他应用程序,我正在使用支持放置实体的 Objectify(我正在使用 Java) 在 Memcache (https://github.com/objectify/objectify) 中。也许 Python 存在类似的东西。

【讨论】:

  • 感谢您的回答。 pythonndb库其实是为你管理memcache和batch,还有一些配置可以。
猜你喜欢
  • 2018-11-03
  • 1970-01-01
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 2019-10-29
  • 2013-03-21
相关资源
最近更新 更多