Google文档说:
数据存储区对可与单个实体关联的索引条目的数量和总体大小施加限制。这些限制很大,大多数应用程序不受影响。但是,在某些情况下您可能会遇到限制。
我在解释这些词时遇到了一些困难(可能是因为我对这个论点的无知)。默认情况下,数据存储区为任何(未定义为未编制索引的)实体属性创建单个索引。因此,如果我将实体PIZZA定义为:
PIZZA{
"name" : "somename";
"price" : <someprice>;
"property3" : "...";
...
"propertyN" : "...";
}
然后,当我将此实体“放入”数据存储区时,它会创建N + 2个索引(每个属性定义一个)。
现在我决定创建另一个具有M个属性的PIZZA实体,这些M属性的R与第一个实体中定义的N + 2不同。
因此,数据库将新实体插入与第一个PIZZA共同的M-R属性的索引表中,并创建其他R索引。
现在的问题是:索引限制是关于任何enetity的索引属性的数量(在这种情况下是N + 2)还是可以包含PIZZA实体的索引总数? (在这种情况下是N + R)?或者再次关于索引总数?
答案 0 :(得分:1)
此大小限制是指实体提供属性值的索引字段数(行数乘以属性),而不是多个索引。当仅引用内置(自动)索引时,它只是实体的可索引属性的计数,因为每个属性值在每个内置索引中只出现一次。计数增加,因为该属性有助于复杂查询的自定义索引。
当您索引多值属性时,此限制会更明显。这样的属性为内置索引的每个值贡献一行。它还会增加每个属性在自定义索引中出现的次数,因为所有索引值的所有组合都必须在自定义索引中表示,因此会重复多次。如果我有具有crust_type
单值属性和toppings
多值属性的Pizza实体的自定义索引,并且实体具有三个toppings
值,则{{1} }属性对该索引贡献三次,每个crust_type
值一次。
总值大小的相关限制等于每个值的大小乘以值出现的索引行数。这两个限制都适用于单个实体的属性。