从Mysql迁移到Cassandra
|
以前,我使用此处找到的类将userID转换为一些随机字符串。
从他的博客:
正在运行:
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()函数时,我总是得到一个非常短的随机字符串。
有人知道如何解决这个问题吗?
编辑:
它用于社交媒体网站,因此必须具有持久性。
这也就是为什么我不想在网址中使用用户名/实名的原因,如果需要的话,用户无法保持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个用户/秒正在注册,它不会变得混乱不堪?
没有找到相关结果
已邀请:
1 个回复
氮顺