这里写目录标题
工作第三天,给了个练手的项目模块,实战学习到的知识,在这里记录一下
在模块添加的时候,添加的是内容,但需要到数据库里面添加,那么就需要一个id,之前学校做项目都是用自增主键解决,工作后第一次接触到uuid,非常有用,记录一下:
uuid和自增主键区别:
自增Long类型的主键可以主键自增,数字类型占用空间小,走索引速度更快,对于排序有更好的性能,不用担心重复的问题,在程序中使用起来更方便。
UUID占用内存空间大,索引相对来讲慢一些,数据量大了可能会重复,不易排序,在程序中使用也不是很方便。
但是,
结合项目本身考虑。假如我们需要手动插入,或者从其他系统导入带有id的数据,这些数据的id和原来数据的id冲突了怎么办,并且这些数据也是数值型的?
新系统上线运行,旧系统同时运行,数据库异构,并且数据双向同步,这个时候如果id有冲突怎么办?
若是从外面导入数据,我们需要区别,需要将id前面加一个符号区分,这个时候又该怎么办?
在做系统集成的时候,如果新系统的主键不是数字类型的,那么就会考虑修改旧系统的主键类型,那么关联的外键如何处理呢?
使用场景:
自增数值ID:单机,小型系统。
UUID:适合用在大型项目微服务架构中,保证全局ID唯一性。
使用:
其实非常简单
uuid是:java.util.UUID;这个包下,导入就行
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
UUID.randomUUID().toString()生成像44e128a5-ac7a-4c9a-be4c-224b6bf81b20这样的东西,只要你不需要通过HTTP传输就可以了,在这种情况下需要删除破折号。