如何计算简单和复杂查询的数据存储区写操作(写入总数)?

时间:2014-07-02 06:48:31

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

我正在开发一个带数据存储区的app引擎项目(创建我们的数据库),

根据此link中给出的信息,针对不同情况(插入,更新和删除)列出了读写操作的总数,但我很困惑如何计算用于修改索引和复合索引的写操作。

我们有以下案例场景,我们必须计算写操作次数

1>>数据存储区查询需要基于单个属性进行过滤而不需要复杂查询[no index defined in datastore-indexes.xml file]

根据示例“SELECT * FROM MESSAGE AS MESSAGE ORDER BY timestamp desc"

2 - ;>数据存储区查询需要基于单个属性进行过滤而不需要复杂查询[index defined on one property in datastore-indexes.xml file ] 例如“SELECT * FROM MESSAGE AS MESSAGE ORDER BY timestamp desc"

3>>数据存储区查询需要基于复杂查询[index defined for complex query defind in datastore-indexes.xml file ]进行过滤  例如“”SELECT * FROM MESSAGE作为消息,其中req_id =“xyz123”ORDER BY timestamp desc“

  
    

注意::为了示例目的,我已经采用了这个语句“SELECT * FROM MESSAGE作为MESSAGE ORDER BY timestamp desc”。这个jpql查询生成一个get(1读取操作)http请求,以便从数据存储中检索数据。

  

问题

  

对于上述情况场景,New Entity Put写入操作将如何   计数?[新实体放置“每次写入属性2次写入+ 2次写入   值+ 1每个复合索引值写入“]

提前致谢!!!!

2 个答案:

答案 0 :(得分:3)

对于具有单值属性的实体,编写新实体需要以下写入:

  • 1表示实体本身
  • {li> 1表示EntitiesByKind索引 每个索引属性
  • 2
  • 每个复合索引
  • 1

所以对于你的例子:

  1. 1 + 1 + 2 *(索引属性的数量)
  2. 这实际上与#1相同;我们无需在datastore-indexes.xml中定义单一属性索引,因为这些索引会自动包含在内。
  3. 1 + 1 + 2 *(索引属性的数量)+ 1
  4. 此处有关于数据存储区写入费用的more information

答案 1 :(得分:1)

我的猜测是

  1. 2 + 2 * n(索引属性的数量:至少为1,时间戳)+ 0
  2. 2 + 2 * n(索引属性数:至少1,时间戳)+ 1(错误.0是对)
  3. 2 + 2 * n(索引属性数:至少2,req_id,时间戳)+ 1