索引数据存储中的布尔型或类枚举属性对于快速写入来说是个坏主意?

问题描述:

这是well documented快速写入实体种类与单调增加值作为关键或索引属性是一个坏主意的性能。索引数据存储中的布尔型或类枚举属性对于快速写入来说是个坏主意?

如何使用枚举类型的值(例如性别)在布尔属性或属性上索引实体?

我的猜测是低基数属性索引可能会遭受同样的问题,因为没有这种属性的内置类型。但是布尔属性可能有特殊的处理方式吗?

云数据存储已针对低基数数据(如布尔值和枚举)进行了优化。每个索引条目还包含实体关键字,然后可以让我们的基础Bigtable平板电脑有效地分割,从而处理更大的负载。这是有效的,因为我们不需要考虑相同值的排序顺序,因此让它们随机分布在它们自己的密钥空间内对查询没有任何影响,并且实体密钥保证是唯一的,因此我们避免了冲突。

当我们为一个值建立索引时,我们还在末尾添加了一个'scatter key'属性,它本质上是一个随机整数。随后可以使用此分散键进行查询拆分,从而使Cloud Dataflow等功能可以有效地对该数据集进行查询并行化。

+0

谢谢,丹。只是好奇,因为Datastore不支持声明Enum类型,所以你怎么知道应用优化的属性?让我再次猜测。我可以看到这种技术如何应用​​于任何需要建立索引的短文本属性。如果所有的价值都是独一无二的,那么在极端情况下它可能无法帮助,但它不会受到伤害。 –

+0

通过枚举,我的意思是按照你的问题枚举类型,是的,这可以在任何地方应用。 –