0

我想创建自己的帐户系统,并且我知道数据存储上没有唯一的字段。我做了一些关于唯一约束的搜索,我找到了两种方法

首先:电子邮件地址作为键,所以我们可以快速检查它是否存在,但这不是现实世界的例子。

第二:使用事务,但数据存储写入缓慢,所以我不想锁定所有记录

哪些大型应用程序使用自定义会计,数据存储是否适合会计?developer.google.com 上是否有任何关于安全自定义会计的文档?

感谢您的回答...

4

1 回答 1

2

您可以在 GAE 上实现自己的唯一约束(这是 webapp2 auth 模块所做的):

我建议不要使用电子邮件地址作为实体的 ID,因为在创建实体后您无法更改实体的 ID。如果您需要让用户更改他们的电子邮件地址,您将必须为他们创建一个新的用户实体,然后更新对该实体的所有引用(引用其他实体中的属性)并重新创建任何子实体(用户实体是父级)。

使用属性查询检查唯一性的问题之一是您不能在事务中进行非祖先查询,因此据我所知,您无法查询属性值的唯一性并保存一个新实体在同一笔交易中的独特价值。这意味着您的查询有可能会说属性值是唯一的,但是当您的实体被写入时,该值不再是唯一的。我在上面链接的唯一约束代码没有这个限制,因为您可以测试一个 id 在写入新实体的同一事务中是否是唯一的。

注意:我上面所说的“id”在 db 库中称为 key_name,在 ndb 库中称为 id。

于 2012-09-04T02:42:11.260 回答