我知道这已经讨论过很多次了,我希望能针对我的具体情况得到建议。
我在一个社交网站上工作,理论上应该可以在 mysql 数据库中记录数十亿张照片。
我想知道将记录的唯一 BIGINT id 替换为像“oij43oj54oi52j43i”这样的字符串 id 是否是个好主意。
优点是:
我可以将照片记录插入到分布在多个服务器上的多个数据库中,这与 BIGINT id 不同,您需要在插入时等待并从 mysql 获取下一个行号。
如果是 /avatars/oij43oj54oi52j43i.jpg,则不太可能允许用户通过输入像 /avatars/120.jpg 这样的整数来随机访问图像。我知道第二部分也可以通过 URL 重写来完成,但会使用一些 CPU/内存。
其他表(如“photo_comments”)在引用照片时也可以使用相同的字符串 id,例如 photo_comment_photo_id='oij43oj54oi52j43i';
考虑到这些,使用字符串 ID 是不是一个坏主意?特别是对于我提到的第一个优势,这是一个有效的观点/优势/实践吗?
谢谢你。
编辑:确保字符串是唯一的可以通过将用户 ID 附加到字符串来完成,并且可能使用使用时间戳微秒的php uniqid() 。