首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用长字符串作为唯一的表id (或不使用)?

问使用长字符串作为唯一的表id (或不使用)?
EN

Stack Overflow用户
提问于 2012-07-30 16:14:22
回答 1查看 1.1K关注 0票数 1

我知道这件事已经讨论过很多次了,我希望能为我的具体案例得到一些建议。

我正在开发一个社交网站,理论上应该可以在mysql数据库中记录数十亿张照片。

我想知道用'oij43oj54oi52j43i‘这样的字符串id替换记录的唯一BIGINT id是否是个好主意。

好处是:

  1. 我可以将照片记录插入多个数据库中,这些数据库分布在多个服务器上,与BIGINT id不同,在插入时,您需要等待并从mysql获取下一行编号。
  2. 如果是/avatars/oij43o54oi52j43i.jpg,则不太可能允许用户通过输入整数(如/avatars/120.jpg )随机访问图像。我知道这第二部分也可以通过URL重写完成,但是会使用一些CPU/mem。

其他表,如"photo_comments“,在引用照片时也可以使用相同的字符串id,例如:_comment_ photo _id=‘oij43oj54oi52j43i’;

考虑到这些,使用字符串ID是否是个坏主意?特别是对于我提到的第一个优势,这是一个有效的观点/优势/实践吗?

谢谢。

编辑:确保字符串是唯一的,可以通过将用户id附加到字符串中来完成,或者使用使用时间戳微秒的php uniqid()。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-30 17:54:50

如果您正在构建类似这样的东西,您应该从Instagram获取一个页面,使用一个UUID而不是顺序ID,这些都有很多优点,但最大的优点是它们是可扩展的和可共享的。

在大多数语言中都有一个简单的UUID库,甚至MySQL也有一个UUID生成器,可以作为最后的手段使用。

Instagram的版本不是纯UUID,而是类似的64位版本。

基本上,你应该用在Instagram上阅读这篇关于切分和ID的文章来获得灵感。

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

https://stackoverflow.com/questions/11725380

复制
相关文章

相似问题

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