在 Google App Engine Datastore 中存储分层数据? [英] Storing hierarchical data in Google App Engine Datastore?

查看:35
本文介绍了在 Google App Engine Datastore 中存储分层数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以说明我如何在谷歌应用引擎数据存储区中存储和轻松查询分层数据吗?

Can someone illustrate how I can store and easily query hierarchical data in google app engine datastore?

推荐答案

最佳选择取决于您的要求.这里有一些解决方案(我假设您使用的是 Python,因为您没有指定):

The best option depends on your requirements. Here's a few solutions (I'm assuming you're using Python, since you didn't specify):

  1. 如果您需要对整个树进行事务性更新,并且对任何一棵树的持续更新不会超过大约 1QPS,您可以使用对分层存储的内置支持.创建实体时,可以传递parent"属性来指定父实体或键,查询时可以使用.ancestor()方法(或GQL中的'ANCESTOR IS'来检索给定实体的所有后代.
  2. 如果您不需要事务更新,您可以复制实体组的功能而不会出现争用问题(和事务安全):将 db.ListProperty(db.Key) 添加到名为祖先"的模型中,并填充它带有您要插入的对象的祖先列表.然后,您可以使用 MyModel.all().filter('ancestors =', parent_key) 轻松检索来自给定祖先的所有内容.
  3. 如果您不需要事务,并且您只关心检索实体的直接子代(并非所有子代),请使用上面概述的方法,而不是 ListProperty,只需使用父实体的 ReferenceProperty.这称为邻接列表.

还有其他方法可用,但这三种方法应该涵盖最常见的情况.

There are other approaches available, but those three should cover the most common cases.

这篇关于在 Google App Engine Datastore 中存储分层数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆