怎么生成全局唯一ID

全局ID生成

目前TDDL(Taobao Distribute Data Layer)提供的id生成是依托数据库来进行的,oracle可以直接使用sequence来完成,mysql需要dba建议一个表专门用于生成id。

为什么需要全局id?

1、在分布式环境中,数据库是可以拆分的,一张表的自增机制只能保证该表唯一,在数据合并到历史库,迁移或者查询,如果出现id冲突,简直就是噩梦。

2、数据库访问时高成本的操作,也要避免每次INSERT都要到id生成器作DB层面的查询。

业界常用的一些UUID方案。

1、UUID

UUID由以下几部分组合:

1)当前日期和时间,UUID的第一部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一部分不同,其余相同。

2)时钟序列

3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

优势:API简单、易用

不足:占用空间大、字符串本身无法加工,可读性不强。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×