UUID的意义

 
 
ING-专业要饭(xxx)  22:43:32
现在好多项目数据库的表ID都是用UUID哦,这是为什么?
ING-专业要饭(xxx)  22:43:37
ashier.htm?orderId=879b2c046adf664e40bd6b7b7e1f6d6f&
ING-专业要饭(xxx)  22:43:46
这是支付宝的。
境由心造(xxx)  22:46:59
安全?
kimmking(xxx)  22:47:16
最重要的原因是 全局唯一性

ING-专业要饭(xxx)  22:47:30
还有捏?
境由心造(xxx)  22:47:51
UUID 可以保证百亿次都是唯一的吗?
kimmking(xxx)  22:48:01
安全性 可移植性
ING-专业要饭(xxx)  22:48:13
还有捏?
境由心造(xxx)  22:49:29
事情开始是这样的,然后呢,没有然后了
john(xxx)  22:51:57
可以隐藏业务信息
ING-专业要饭(xxx)  22:52:25
我们公司那破项目所有主键ID合TMD用UUID,我当初感到奇怪,后来仔细想想,也只有这些原因啦。

john(xxx)  22:53:15
普通的项目没必要用uuid吧
kimmking(xxx)  22:54:07
identity、increment单表内绝不会重复
sequence全库内绝不会重复
境由心造(xxx)  22:54:13
哦 这无所谓了
kimmking(xxx)  22:54:38
但是UUID的优势是,在一般的数据量(所有目前已知的数据量)下。
kimmking(xxx)  22:54:52
整个时空内不会重复。
ING-专业要饭(xxx)  22:55:00
KK,我有个问题。
境由心造(xxx)  22:55:09
 时空?
kimmking(xxx)  22:55:15
比如,我把一批数据,分散到各个主机上。
ING-专业要饭(xxx)  22:55:17
当identity 的值达到最大值时,会出现什么情况?
kimmking(xxx)  22:55:51
每个主机上每插入一条数据,就需要一个id,怎么做呢?
kimmking(xxx)  22:56:11
他们都是物理意义上的对等关系。
kimmking(xxx)  22:56:48
A1机器、A2,、A3,,,上的每条记录都可能是支付宝的订单。
kimmking(xxx)  22:56:53
怎么办呢?
kimmking(xxx)  22:57:31
identity、increment不行,因为A1里有一个id=1,A2里就不能有了。
john(xxx)  22:57:38
看设置,oracle序列可以循环。超过最大值报错
kimmking(xxx)  22:58:42
sequence可以,但是很麻烦。可以设置一台机器S,专门用来分配sequence,A1,、A2、A3.。。等等写入记录的时候,都来找S要一个id。
kimmking(xxx)  22:59:08
这就是说,A123都需要知道S的存在。我们引入了一个单点。
kimmking(xxx)  22:59:29
S发送down机的话,A123都不能用了。
kimmking(xxx)  22:59:53
UUID因为它的全局唯一性,可以很简单的避免这个问题。
kimmking(xxx)  23:00:15
A123各个机器自己算个UUID就得了。
kimmking(xxx)  23:00:31
就能保证各个机器上出来的id,都是不一样的了。

 

你可能感兴趣的:(oracle)