祖先钥匙和父钥匙的明显区别是什么?

xyb*_*rek 1 google-app-engine google-cloud-datastore

祖先钥匙和父钥匙的明显区别是什么?

它基本相同吗?它如何以不同方式影响get()方法和Query方法?

从GAE KeyFactory课程中,我们只能看到Key父母而没有这样的祖先Key.

public static Key createKey(Key parent, String kind, String name) {
    return createKey(parent, kind, name, (AppIdNamespace)null);
}
Run Code Online (Sandbox Code Playgroud)

然后使用这样的键:

Entity e = new Entity(key); // key may include a parent Key
Run Code Online (Sandbox Code Playgroud)

在典型的查询中,例如在留言簿应用中.我们可以将密钥作为祖先,因此我们可以使用不同的留言簿来保存实体,例如:

Key guestbookKey = KeyFactory.createKey("Guestbook", guestbookName);
Query q = new Query(kind, guestbookKey); // guestbookKey = ancestor
Run Code Online (Sandbox Code Playgroud)

那么父母和祖先的区别是什么,他们基本上是一样的没有任何区别,只是不同的符号是一样的吗?

Ale*_*lli 5

A Parent表示直接父母.一个Ancestor是一个更通用的术语,涵盖即时父母,父母的父母,父母的父母的父母,等等-正是因为同样的英语使用.

可以请求原子事务的"实体组"需要由具有共同祖先的实体组成- 它们不需要都具有相同(直接)父级,但是它们的行下降确实需要在一个共同的祖先以某种方式"上线"(不一定是所涉及的所有实体的步骤数相同).

当你createKey基于一个parent键时,那个父键又可能是用它自己的父键创建的 - 如果是这样的话,那么父的父级本身不是你现在创建的父级的父级,但它一个其祖先.