数据库ID的问题
来源:5-6 增加新增大章功能

无情慕
2020-05-05
请问老师熟悉雪花算法吗?我想用雪花算法生成数据库的ID,但生成出来的ID太长了,有什么方法可以保证唯一性的前提下把ID缩短吗?
另:老师在本节课上教的缩短UUID方法作为数据库的ID。。如果表的数据变多了(10W+以上),性能会不会出现瓶颈?
写回答
1回答
-
甲蛙
2020-05-06
二进制就是用0、1两个字符来表示数,十进制就是用10个字符表示数,如果你能找到100个不同的字符,就能表示100进制的数,进制越大,位数越少。
项目中确实不是准确的将16进制转成62进制,只是提供一个思路,将62个字符都用上,来缩短字符串的长度。不过从概率上来说,重复的概率是62的8次方分之一,大部分的项目够用了。
雪花算法,网上有很多文章,比如这遍:https://github.com/souyunku/SnowFlake,可以拿到自己本地运行看看效果
优点是可以用整形,有ID自增效果,索引效率高。如果非要把长度变短,就是用到课程中短ID的思想,转成62进制的,不过会使ID变成字符串,失去整形索引效果
00
相似问题