以前我使用的是類here將userID轉換爲一些隨機字符串。從Mysql遷移到Cassandra
從他的博客:
運行:
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中,我只是有一個用戶ID列自動增加,所以當我使用alphaID()函數時,我總是得到一個非常短的隨機字符串。
任何想法如何解決這個儘可能乾淨?
編輯:
它用於社交媒體網站,所以它必須是持久的。 這也是爲什麼我不想在網址中使用用戶名/真實姓名,用戶如果他們需要,不能檢測到谷歌。
我剛剛得到一個簡單的想法,但我不知道它是多麼可擴展
<?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";
}
}
?>
當這得到的大小可以說嘰嘰喳喳/ Facebook的:
- 將它在執行可接受的時間
- 它是否仍然生成獨特的uuid足夠快,所以如果10000用戶/秒正在註冊它不混亂嗎?
謝謝你的精彩回答!但是,你認爲我的第一篇文章中的簡單版本(查看編輯中)是否也可以工作? 這實現起來會簡單得多。 – Writecoder 2011-04-16 14:33:43