如果您正在处理记录的层次结构,其中大多数键都具有祖先,那么在您检索叶之前是否必须创建所有键的链?AppEngine数据存储:分层查询
例(围棋):
rootKey = datastore.NewKey(ctx, "EntityType", "", id1, nil) secondGenKey = datastore.NewKey(ctx, "EntityType", "", id2, rootKey) thirdGenKey = datastore.NewKey(ctx, "EntityType", "", id3, rootKey)
你如何通过thirdGenKey
描述的记录,而不必申报键的所有它上面的层次结构的级别?
这就是我确认。因此,如果您的层次结构由许多祖先级别组成,则需要构建一个带有ID和无祖先的密钥,另一个带有ID的密钥以及该祖先的第一个密钥,另一个带有ID的密钥以及第二个密钥这个祖先等等,直到你处于正确的级别才能访问你的主要记录,是否正确?换句话说,如果你在N级有一条记录,那么你将不得不构建一个N键链,以便以较强的一致性检索它,对吗? –
@DustinOprea,这是正确的。然而,你对强一致性的评论是有误导性的,但是所有的查找(明确地通过关键字获得)都是非常一致的,它与必须存在的关键祖先没有任何关系。当您执行查询(返回0-n个实体)而不将查询绑定到单个祖先(实体组)时,最终的一致性将发挥作用。 –
@DanMcGrath是的..这是祖先的存在,使它成为SC,但你需要整个链下降得足够远。谢谢,丹。 –