首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在users.id_users和DynamoDB上创建“DynamoDB”

在users.id_users和DynamoDB上创建“DynamoDB”
EN

Stack Overflow用户
提问于 2016-03-10 15:10:55
回答 1查看 301关注 0票数 1

我正在学习DynamoDB,但我不明白如何才能创建一个唯一的用户的id foreach用户。在SQL是简单的,有一个int (AI)字段。它将是一个int值,因为每个用户的配置文件url类似于(非常常见的形式):

代码语言:javascript
运行
复制
my-application-url/users/[:id_users]
ex. my-application-url/users/1/

我以前的save_users函数是:

代码语言:javascript
运行
复制
public function save_users($users){ 
 if($users->id == 0){
    $this->tableGateway()->save($users);
 }else{
    $this->tableGateway()->update($users, 'id_users' => (int) $users->id);
 }
}

我使用zend框架2。

我可以得到最后一个注册用户的id并增加它,但是如果我同时注册了2个或更多的用户,我可以得到2个或更多相同的用户id。

用户dynamodb表它也很简单:

代码语言:javascript
运行
复制
{
  "id_users" Number: 1,
  "firstname" String: "Alessandro",
  "lastname" String: "Corradini",
  "email" String: "my-email",
  "password" String: "my-encrypted-password"
}

可能的解决方案

我需要一个UUID字段到users表中。这张桌子就像:

代码语言:javascript
运行
复制
{
  "UUID" String : <UUID-placeholder>,
  "id_users" Number: 1,
  "firstname" String: "Alessandro",
  "lastname" String: "Corradini",
  "email" String: "my-email",
  "password" String: "my-encrypted-password"
}

对于id_users标识符,也是唯一的,我将使用下面的函数生成一个固定长度的id_users。在将用户保存到register.php之前,我将检查是否存在于表中(还有电子邮件!),如果不是,请保存用户,否则生成另一个唯一的id。

代码语言:javascript
运行
复制
 function randomId($length){
    $result = mt_rand(1, 9);

    for($i = 0; $i < ($length - 1); $i++) {
        $result .= mt_rand(0, 9);
    }

    return $result;
 }

对于16个字符长度,我有10^16组合。我觉得这很不错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 15:23:17

dynamodb的方法是在客户端创建一个UUID,例如通过时间戳(而不是自动增量特性)。

还可以使用为您提供id的外部服务(通过使用全局谓词上的锁)。

您可以在这里获得更多信息:

是自动递增的主键,好的,https://forums.aws.amazon.com/thread.jspa?messageID=561190

How to make a UUID in DynamoDB?

https://www.quora.com/How-to-auto-increment-in-DynamoDB

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35920297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档