UUID是否适合做订单ID问题

目录

UUID定义(直接查的)

UUID设计目的

UUID的组成

UUID的版本

      version1: 基于时间的

      version2: 基于DCE的

      version3: 基于MD5的

      version4: 基于伪随机数的

      version5: 基于SHA1的

UUID的样例

UUID是否可以做订单ID?

UUID为什么不建议做订单ID?      

首先-很难区分先后时间:

其次-表空间占用更大:

最后-对于mysql的B+Tree效率更低:

那么什么方法更适合生存订单ID呢?


UUID定义

      UUID是国际标准化组织(ISO)提出的一个概念。UUID是一个128比特的数值,这个数值可以通过一定的算法计算出来。为了提高效率,常用的UUID可缩短至16位。UUID用来识别属性类型,在所有空间和时间上被视为唯一的标识。一般来说,可以保证这个值是真正唯一的任何地方产生的任意一个UUID都不会有相同的值。使用UUID的一个好处是可以为新的服务创建新的标识符。这样一来,客户端在查找一个服务时,只需要在它的服务查找请求中指出与某类服务(或某个特定服务)有关的UUID,如果服务的提供者能将可用的服务与这个UUID相匹配,就返回一个响应。

UUID设计目的

       UUID的设计目的简单来说,就是让分布式系统中的所有元素,都能有一个唯一ID。UUID我们一般做开发的都会用到。生成一个UUID也很简单。

UUID的组成

      三部分组成。

      当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
      时钟序列。
      全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得      

      时间戳(当前日期+时间)+ 时钟序列 + 机器识别号(MAC、其他)

UUID的版本

      uuid有五个版本。分别是:

      version1: 基于时间的

          基于时间的UUID通过计算当前时间戳、随机数和机器MAC地址得到。由于在算法中使用了MAC地址,这个版本的UUID可以保证在全球范围的唯一性。但与此同时,使用MAC地址会带来安全性问题,这就是这个版本UUID受到批评的地方。如果应用只是在局域网中使用,也可以使用退化的算法,以IP地址来代替MAC地址--Java的UUID往往是这样实现的(当然也考虑了获取MAC的难度)。

      version2: 基于DCE的

          DCE(Distributed Computing Environment)安全的UUID和基于时间的UUID算法相同,但会把时间戳的前4位置换为POSIX的UID或GID。这个版本的UUID在实际中较少用到

      version3: 基于MD5的

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值