我正在使用Python 2.7在Google App Engine上构建游戏,我有一套数千项我希望能够始终如一地访问的项目。看起来这样做的最好方法是为所有这些使用单个父键,但有没有办法生成一个静态键,我的应用程序将知道没有执行非祖先查询的值?
具体来说,我需要能够通过名称或关键字在单个事务中查找多达数百个这样的项目,我可以合理地确定空查找意味着项目不存在,而不仅仅是在这次查找中找不到它。
Structuring Data for Strong Consistency有一些接近我想要的东西,但我没有看到他们的例子中定义了guestbook_key()的位置。
答案 0 :(得分:1)
为什么呢?
如果您可以为所有这些项目定义一个唯一的密钥,那么将它们全部放在一个祖先下会获得什么特定的好处?
假设您的名称/关键字对于每个实体都是唯一的,为什么不仅仅使用名称/关键字来构造密钥。
如果它们都是相同的类型,则单个查询可以获取所有实体。哪个不比祖先查询更好/更差。
如果这1000个项目的类型不同,那么如果您需要执行无用的祖先查询,则可能会使用祖先。
在您决定之前,请仔细查看您的访问建议访问模式,更新频率等等。
答案 1 :(得分:1)
注意:使用父级将所有子项放在同一个实体组中。实体组的主要限制是写入限制约为1写/秒。
所以问题是:您是否需要同时以一致的方式访问实体?如果是,那么您可以考虑将此数据放入一个实体中。如果没有,那么您不需要将它们放在同一个实体组中。
另请注意,您可以使用XG transactions,一次最多可处理5个实体组(实体)。