首页 > 解决方案 > 祖先索引还是全局索引?

问题描述

我有一个实体,它代表两个实体组之间的关系,但该实体属于其中一个组。但是,我对这些数据的查询将主要针对其他实体组。为了支持我看到的查询,我有两个选择 a) 创建一个全局索引,它以另一个实体组键作为前缀 b) 将实体移动到另一个实体组并创建祖先索引。

我看到一个演示文稿,其中提到祖先索引在内部映射到每个实体组的单独表,而全局索引只有一个表。这让我觉得祖先比使用包含祖先键作为前缀的全局索引更好,我将始终在某些祖先键的上下文中进行查询。

在性能、存储特性、事务延迟和任何其他架构考虑方面寻求指导,以做出最终决定。

标签: google-cloud-datastore

解决方案


我最终使用了第三个选项,即将另一个实体非规范化到另一个实体组并对其进行祖先查询。这使我能够有效地查询任一实体组的数据。由于我已经在使用事务,因此非规范化不会导致任何不一致,并且一切似乎都运行良好。


推荐阅读