主键uuid

UUID是一堆-分割的16进制的长度为32的数字,占16byte。
是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。
在UUID的算法中,可能会用到诸如网卡MAC地址,IP,主机名,进程ID等信息以保证其独立性。

通俗讲UUID就是可以让项目每条数据具有唯一标识。在java向数据库插入一条数据之前生成一个UUID码当主键,这样那条数据就具有了唯一标识,效果比ID主键自增长要好。
代码如下:
String guid = UUID.randomUUID().toString().replaceAll("-", "");
UUID的生成类参考
在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来,它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用唯一标识符有非常大的区别。UUID最少在3000+年内不会重复。
通用唯一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球唯一标识符(GUID),这也是通用唯一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用唯一标识符是在网络计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件。

优点:
能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。
保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。

缺点:
太长了,32字符长度(去掉"-"),比较占地方,和INT类型相比,存储一个UUID要花费更多的空间。

原文地址:https://www.cnblogs.com/cashew/p/11641391.html