【问题标题】:should i use sequence ids for database or uuid_short()?我应该对数据库或 uuid_short() 使用序列 ID 吗?
【发布时间】:2013-04-23 06:43:08
【问题描述】:

我想为用户、页面、照片、相册、事件、cmets 等实现 facebook 之类的 id。它们都是唯一的 id,大部分都可以从 http://facebook.com/{object_id}

访问

要喜欢或评论任何对象,您只需简单地做http://facebook.com/{object_id}/comment 或喜欢。

mysql 在序列上的实现:http://www.mysqlperformanceblog.com/2008/04/02/stored-function-to-generate-sequences/

关于 uuid_short() 的 mysql 文档:http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_uuid-short

使用序列有什么优点和缺点?

顺便说一句,如果我要实现序列,我会选择 BIGINT 作为字段类型。

【问题讨论】:

    标签: mysql sql database database-design uuid


    【解决方案1】:

    如果您使用的是 InnoDB,则数值每次都会胜过 UUID 值。

    假设您将此值作为主键,它将被聚集。严格递增的数值远远优于 UUID。

    有关更多信息,请参阅这些答案Mysql How do you create a clustered index? 和后续链接。还有这个Google books link。还有DBA.SE

    注意:同样的道理也适用于 SQL Server 和 Sybase

    【讨论】:

    • 我不是指使用UUID,而是UUID_short(),它也是数字。
    • 它有一些条件,如果一个条件不成立,唯一性也会失败。点击上面的链接阅读上面的所有条件。
    • @Basit:我看到了,但是当您更改系统时间时,这似乎是一种极端情况。您可以通过始终使用 UTC 来避免这种情况。
    • 这有点离题,但我想知道你是否知道 google+、facebook、pinterest.. 将 ID 保存在 DB 中?
    • 我不抱歉。从来不需要调查它
    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多