您将需要考虑应用程序中确实需要高度一致性的任何部分,然后考虑哪些实体和实体组需要参与相应的查询和事务(现在,跨组事务中最多可以包含25个),但是您以这种方式使用祖先会为我敲响警钟。
通过将实体组视为逻辑上构建数据模型的一种方式,很容易被实体组所吸引(我有!),但这可能会导致问题,最终导致不必要的大型实体组发生写争用。
相反,最好考虑一下应用程序中需要强一致性的点,并围绕这些点设计实体组。
在这种情况下,我可能只有一个
parentCategory属性(类型为
datastore.Key)。然后,您可以查询 乐器的 子类别,如下所示:
k := datastore.NewKey(c, "Category", "Musical Instruments", 0, nil)q := datastore.NewQuery("Category").Filter("parentCategory =", k)(我刚开始使用Go,所以上面的内容可能是一个近似值)
每个类别中假设你有某种形式的
Product,你想查询所有
Product内给予A S
Category在树中在任何级别(例如, 电视广播员 在
吉他 ,或 的Minimoog 的 乐器
,那么你可能需要一个多值属性(在去吧,我想这可能是一个
[]datastore.Key切片),代表了类别树的分支。



