限制App Engine(python)NDB仅生成32位密钥

时间:2013-04-12 12:19:09

标签: google-app-engine python-2.7 app-engine-ndb

我使用Python作为开发脚本和NDB。

生成自动数字ID(密钥)的默认算法是什么?如果该应用程序中的总记录低于32位范围,是否可以安全地假设密钥值在应用程序中永远不会超过?

我的实际问题是,我的客户端应用程序不支持64位整数,如果AppEngine将生成大于32位整数的数字键,我的客户端应用程序将出现意外行为。一种解决方案是使用字符串键。但是很大一部分客户端已经编写好了,而且改变客户端代码将会是一个巨大的重新分解因素。

是否可以限制AppEngine生成低于32位值的数字键?谢谢

1 个答案:

答案 0 :(得分:0)

没有。文档中说的所有内容都是系统生成的ID:https://developers.google.com/appengine/docs/python/ndb/entities#numeric_keys

但是,您可以使用allocate_ids让系统为您生成一些ID,您可以决定是否使用这些ID。只要allocate_ids最终返回足够小的值,这将有效,但这也不能保证。

帮助(但不保证)避免这种情况的一种方法是使用实​​体组:每个实体组都有自己的一组数字ID。然而,这并不是对实体组的大量使用,因为对实体组的写入速率是有限的(1次写入/秒是经验法则)

真正的解决方案是咬紧牙关,让你的客户端应用程序能够处理大整数ID。