我使用Python作为开发脚本和NDB。
生成自动数字ID(密钥)的默认算法是什么?如果该应用程序中的总记录低于32位范围,是否可以安全地假设密钥值在应用程序中永远不会超过?
我的实际问题是,我的客户端应用程序不支持64位整数,如果AppEngine将生成大于32位整数的数字键,我的客户端应用程序将出现意外行为。一种解决方案是使用字符串键。但是很大一部分客户端已经编写好了,而且改变客户端代码将会是一个巨大的重新分解因素。
是否可以限制AppEngine生成低于32位值的数字键?谢谢
答案 0 :(得分:0)
没有。文档中说的所有内容都是系统生成的ID:https://developers.google.com/appengine/docs/python/ndb/entities#numeric_keys
但是,您可以使用allocate_ids
让系统为您生成一些ID,您可以决定是否使用这些ID。只要allocate_ids
最终返回足够小的值,这将有效,但这也不能保证。
帮助(但不保证)避免这种情况的一种方法是使用实体组:每个实体组都有自己的一组数字ID。然而,这并不是对实体组的大量使用,因为对实体组的写入速率是有限的(1次写入/秒是经验法则)
真正的解决方案是咬紧牙关,让你的客户端应用程序能够处理大整数ID。