在AppEngine数据存储上创建运行整数id的最佳方法是什么?

时间:2010-04-14 20:45:52

标签: python google-app-engine bigtable

由于各种原因,我需要为存储在Google AppEngine上的实体提供唯一的运行整数ID。自动生成的密钥排序具有此行为,但它不是从1(或0)开始,并且不保证生成的整数部分将来自连续序列。

在AppEngine上有效实现此功能的最佳方法是什么?存储系统是否有任何支持?为了增加复杂性,我可能需要对来自不同实体组的实体执行此操作,这意味着我不能立即获得最高ID并在事务中保存具有下一个id的实体。可能会有memcache去...?

修改

我还没有实现这个,但要澄清memcache的想法。我知道memcache是​​不可靠的,但实际上它可能不会“经常”丢失数据而损害性能。基本上,我会为最后一个使用的id创建一个memcache条目,每当我创建一个新实体并使用该id时,就会以某种形式更新它(不知何故)。在memcache没有这个条目的值的情况下,到目前为止,我通过对我的实体进行查询来获得最高的id,并按照id和update memcache排序(除非其他人已经这样做了)。如果我的新实体的保存也是事务的一部分,那么我现在能看到的唯一问题就是整个操作的原子性。思考..?

1 个答案:

答案 0 :(得分:0)

如果没有整数部分可以存活,请尝试使用uuid模块(来自 标准库):http://docs.python.org/library/uuid.html

这通常会给你一个36个字符的字符串,不过,也许 这远远不是你需要的。但它是独一无二的。