数据库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变成字符串,失去整形索引效果

0
0

Spring Cloud+ Vue前后端分离开发企业级在线视频系统

全网稀缺课程 市场热门项目+主流框架 一课掌握前后端技术

1743 学习 · 1697 问题

查看课程