我可以将项目保存到数据存储区,对索引进行0次写入操作吗?

时间:2012-03-09 10:19:34

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

持久保存实体所需的数据存储区写操作数为1 + number of indexes

如果我更新现有实体并且索引字段未更改,该怎么办?需要多少次写操作?是否可以仅使用1个写操作保存现有项目。如果索引不受影响?

1 个答案:

答案 0 :(得分:3)

简短的回答是否定的。如果您想按字段搜索,则需要对其进行索引,并且您必须按写入付费。在每个实体写入时,将写入整个实体,并且数据存储区不知道您是否更改了索引字段。

如果您担心费用,可以创建未编制索引的字段。未编制索引的字段不会添加任何写操作。但是,您无法按未索引的字段进行搜索: http://code.google.com/appengine/docs/python/datastore/queries.html#Unindexed_Properties

您可以手动将属性设置为无索引,编写实体,然后将其设置为再次编入索引。这实际上是没用的,也是一堆努力,可能不是你想要的。听起来你想要使用旧的索引,但是这种技术会吹掉索引,而且这个特定的实体不会被索引(并且不会出现在搜索结果中),而其他类型的实体也是如此。 / p>

如果您有一个字段,您可能会比实体的其余部分写得多,那么成本意识要做的事情可能是将该字段分解为其自己的未编制索引的实体,并将其密钥存储在原始实体中。你需要额外的数据库提取来获取它。

编辑:这个原始答案不正确。我当时可能误解了这个问题。虽然您无法使用1个写操作创建新实体,但如果您编写的现有实体的索引属性未更改,则您确实可以使用1个写操作进行编写。