Auparavant, j'utilisais la classe trouvé here pour convertir userID une certaine chaîne aléatoire.Migration de Mysql à Cassandra
De son blog:
Course à pied:
alphaID(9007199254740989);
retournera 'PpQXn7COf' et:
alphaID('PpQXn7COf', true);
retournera '9007199254740989'
L'idée est que les utilisateurs pourrait faire www.mysite.com/user/PpQXn7COf et je convertis cela en entier normal afin que je puisse le faire dans mysql
"Select * from Users where userID=".alphaID('PpQXn7COf', true)
Maintenant je commence à travailler avec Cassandra et je cherche un remplacement.
- Je veux URL comme www.mysite.com/user/PpQXn7COf pas comme www.mysite.com/user/username1
- UUID "PpQXn7COf" doit être aussi courte que possible.
Dans l'exemple Twissandra expliqué ici: http://www.rackspace.com/cloud/blog/2010/05/12/cassandra-by-example/
Ils créent un peu de temps UUID (je suppose qu'il est si long car alors sa presque 100 pour cent sûr son aléatoire).
Dans mysql je viens d'avoir une colonne userID avec increasement automatique alors quand je l'ai utilisé la fonction alphaID() i toujours eu une chaîne aléatoire très court.
Toute une idée de comment résoudre ce aussi propre que possible?
Edit:
Il est utilisé pour un site de médias sociaux de sorte qu'il doit être persistant. C'est aussi pourquoi je ne veux pas utiliser les noms d'utilisateur/noms réels dans les URL, l'utilisateur ne peut pas rester indétecté google s'ils en ont besoin.
Je viens de recevoir une idée simple, mais je ne sais pas comment il est évolutif
<?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";
}
}
?>
Lorsque cela devient la taille permet de dire twitter/facebook:
- aura-t-il exécuter en temps acceptable? Va-t-il encore générer un uuid unique assez rapidement, donc si 10000 utilisateurs/seconde sont en train de s'enregistrer, ce n'est pas encombré?
Merci pour votre réponse fantastique! Cependant, pensez-vous que ma version simple dans le premier post (regardez sous edit) fonctionnerait aussi? Ce serait beaucoup plus simple à mettre en œuvre. – Writecoder