【发布时间】:2011-04-16 11:47:59
【问题描述】:
以前我使用找到的类here 将用户ID 转换为一些随机字符串。
来自他的博客:
跑步:
alphaID(9007199254740989);
将返回“PpQXn7COf”并且:
alphaID('PpQXn7COf', true);
将返回“9007199254740989”
所以这个想法是用户可以做 www.mysite.com/user/PpQXn7COf 我将它转换为一个普通的整数,所以我可以在 mysql 中做
"Select * from Users where userID=".alphaID('PpQXn7COf', true)
现在我刚刚开始与 Cassandra 合作,我正在寻找替代品。
- 我想要像 www.mysite.com/user/PpQXn7COf 这样的网址,而不是像 www.mysite.com/user/username1 那样
- “PpQXn7COf”uuid 必须尽可能短。
在此处解释的 Twissandra 示例中:http://www.rackspace.com/cloud/blog/2010/05/12/cassandra-by-example/
他们创建了一些很长的 uuid(我猜它很长,因为它几乎 100% 确定它是随机的)。
在 mysql 中,我只有一个自动增加的 userID 列,所以当我使用 alphaID() 函数时,我总是得到一个非常短的随机字符串。
有人知道如何尽可能干净地解决这个问题吗?
编辑:
它用于社交媒体网站,因此它必须是持久的。 这也是我不想在 url 中使用用户名/实名的原因,如果用户需要,他们不能保持 google 未被检测到。
我只是有一个简单的想法,但我不知道它的可扩展性如何
<?php
//createUUID() makes +- 14 char string with A-Z a-z 1-0 based on micro/milli/nanoseconds
while(get_count(createUUID()) > 0){//uuid is unique
//insert username pass, uuid etc into cassandra
if($result == "1"){
header('Location: http://www.mysite.com/usercenter');
}else{
echo "error";
}
}
?>
当它达到 twitter/facebook 的大小时:
- 它会在可接受的时间内执行吗?
- 它是否仍会以足够快的速度生成唯一 uuid,因此如果 10000 个用户/秒正在注册它不会造成混乱?
【问题讨论】:
标签: php mysql cassandra uuid userid