google-app-engine - AppEngine/数据存储 : Best way to retrieve since ancestor query returns everything recursively

标签 google-app-engine go data-modeling google-cloud-datastore

当我使用祖先约束执行 get() 时,似乎我获得了该祖先键的所有实体以及它作为父级的所有祖先。

在这种情况下,我使用祖先关系来表示同源树(所有节点都由同一种类表示;每个级别都立即一致)。我使用的所有 ID 都是全局唯一的,并且我在每个实体上都写了父 ID(除了它在祖先路径中)。

由于祖先检索返回了太多数据(所有级别和以下级别,而不仅仅是直接级别;文档没有提到这个和其他一些怪癖),我需要添加一个过滤器来确保我刚刚恢复到当前水平。

因此,问题是执行 ancestor().filter() 与仅执行 filter() 的效率是否存在差异,因为它们都产生相同的结果对我来说。

谢谢。

最佳答案

只有 filter() 是最终一致的,而 ancestor().filter() 是强一致的。

正如您所提到的,您需要按索引属性进行过滤,以仅返回树的特定级别。

关于google-app-engine - AppEngine/数据存储 : Best way to retrieve since ancestor query returns everything recursively,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671772/

相关文章:

python - 如何在 localhost 运行时解锁 App Engine 数据库?

python - 使用Python访问MySQL时如何检索Google Cloud-SQL中的列名称?

django - 是 BigTable 慢还是我笨?

go - Golang客户端库对Apache Airflow的支持

c - Go 是否修复或共享 C 的危险隐式 -> 无符号转换?

go - 一个字符可以在 Go 中跨越多个 rune 吗?

data-modeling - 星型架构、规范化维度、非规范化层级键

database - 六度分离面试题

python - 如何制作图像,以便 appengine 在调整大小时不会将透明变为黑色?

mysql - 数据库架构多对多对多