ndb にはディレクトリ構造がありません。先祖キーを使用してツリー構造を作成できますが、それは固定ツリーであり、要素を移動することはできず、親が存在する必要はありません。さらに、多くの根が存在する場合があります。この方法で構築されたツリーは、すべての要素が 1 つのエンティティ グループに属するため、書き込み速度によっても制限されます。あなたが何をしているかに応じて、プラスとマイナスがあります。
このようにツリーを構築した場合、直接の子を取得するメカニズムがないため、祖先クエリを実行し、キーで並べ替える必要があります。これにより、基本的にループできるエンティティの深さ優先リストが得られます。オブジェクトに追加のプロパティを格納して、クエリの深さを制限できます。
種類のない祖先クエリを参照してください - https://developers.google.com/appengine/docs/python/datastore/queries#Python_Kindless_ancestor_queries 。すべてのノードが同じ種類の場合、ノードの種類に対して基本的な祖先クエリを実行できます。
任意のエンティティの直接の親キーを取得できます (エンティティが存在すると仮定すると、親を取得できます)。
ツリーを CMS に実装していますが、祖先キーは使用していません。各親は直接の子のキー (および名前) を格納するため、ツリーを明示的にウォークし、ノードを移動できます。