我正在尝试在 NDB 中存储一个层次结构,我很困惑在构造新实体的键时是否应该只使用“父”参数,或者我是否应该在我的模型中包含一个额外的属性来保存父级 key ?
最佳答案
如果您在键中使用祖先,您将创建一个大实体组(假设树/层次结构的单个根),从写入性能的角度来看,这实际上可能不是您想要的。此外,深层次结构可能意味着非常大的 key 。
如果您想使用祖先键移动节点,您必须删除并重新创建键的整个子层次结构,其中将父级存储在节点中(或将子键存储在父级中)意味着您只需存储不同的键在属性中。
如果你通常沿着层次结构向下走(比如 url 遍历),你可能会发现将子键存储在父级列表中更有效,假设每个级别不会有太多直接子级,以及将父 key 存储在子 key 中。
在决定走哪条路之前,我会详细检查您的实际需求。
关于python - Google App Engine NDB 中的层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452172/