自动生成ID遇到的一些问题
2012-12-05 16:38
239 查看
关于自动生成ID报告
当前采用策略
使用UUID.randomUUID()生成一个32位的ID
存在问题:32位太长,
目标:尽量简化到20位,或者10
初步解决方案有(根据自己的理解,按照优先级进行排列)
1:根据UUID生成的32位中,截取10位,最简单的方式是取得UUID生成的前10位。可行性:UUID生成的32位,是根据一定信息生成的一个不重复的随机ID(不重复是因为重复的概率极小).每位由数字字母组成,所有枚举出来是36的10次方,在万亿以上,如果我们的app个数在万左右,那么重复的概率应该在亿分之1左右。
2:根据数据量,先预估肯定在1千万(这个可以变,根据实际情况预估). 系统提前生成1千万个不同的ID,每次新建时,取出一个生成好的(是之前没取过的,可以顺序取)。可行性:绝对不会重复,缺点:每次新建时需要从数据库中取。
3:根据位数,如10位,自己编写函数,生成一个随即的数,最简单的是生成一个10的随机数字(当然可以加入时间以及别的信息)。可行性:如果由数字字母(区分大小写)枚举出来在百万亿以上。如果app在万级,重复率也是百亿分之一。缺点:需要自己写算法,以及耗时。
4:MySQL数据库自曾方式;优点:不重复,数据库排序快,缺点,太规律,容易暴露自己的信息(比如用户注册一个,就可以知道我们系统里的注册量了)。
改进方案
自动生成6位id
采用算法"短链接"
说明:
短链接算法是先将url进行MD5加密后生成的32位字符串,然后在对这32位处理,得出4个6位的字符串(这4个中每个都可最为短链接)。
程序中采用了uuid自动生成32位唯一字符串。然后对这32为进行处理,在得出的4个短链接字符串中,选取第一个,作为id
微博短链接的生成算法(Java 版本):http://blog.csdn.net/wgw335363240/article/details/6568794
当前采用策略
使用UUID.randomUUID()生成一个32位的ID
存在问题:32位太长,
目标:尽量简化到20位,或者10
初步解决方案有(根据自己的理解,按照优先级进行排列)
1:根据UUID生成的32位中,截取10位,最简单的方式是取得UUID生成的前10位。可行性:UUID生成的32位,是根据一定信息生成的一个不重复的随机ID(不重复是因为重复的概率极小).每位由数字字母组成,所有枚举出来是36的10次方,在万亿以上,如果我们的app个数在万左右,那么重复的概率应该在亿分之1左右。
2:根据数据量,先预估肯定在1千万(这个可以变,根据实际情况预估). 系统提前生成1千万个不同的ID,每次新建时,取出一个生成好的(是之前没取过的,可以顺序取)。可行性:绝对不会重复,缺点:每次新建时需要从数据库中取。
3:根据位数,如10位,自己编写函数,生成一个随即的数,最简单的是生成一个10的随机数字(当然可以加入时间以及别的信息)。可行性:如果由数字字母(区分大小写)枚举出来在百万亿以上。如果app在万级,重复率也是百亿分之一。缺点:需要自己写算法,以及耗时。
4:MySQL数据库自曾方式;优点:不重复,数据库排序快,缺点,太规律,容易暴露自己的信息(比如用户注册一个,就可以知道我们系统里的注册量了)。
改进方案
自动生成6位id
采用算法"短链接"
说明:
短链接算法是先将url进行MD5加密后生成的32位字符串,然后在对这32位处理,得出4个6位的字符串(这4个中每个都可最为短链接)。
程序中采用了uuid自动生成32位唯一字符串。然后对这32为进行处理,在得出的4个短链接字符串中,选取第一个,作为id
微博短链接的生成算法(Java 版本):http://blog.csdn.net/wgw335363240/article/details/6568794
相关文章推荐
- 使用自动生成Mipmap时遇到的一些问题
- Android工程导入外部jar包时遇到的问题自动生成APK文件
- java自动拆装箱不可避免遇到的一些问题
- Android Studio 之 导入Eclipse项目常见问题及解决方案 在将Eclipse做的Android项目成功导入Android Studio 后,启动生成,遇到一些问题,现总结如下:
- 关于VS2005生成页面遇到的一些问题
- iOS xib自动布局时遇到的一些问题
- sencha touch2的itemTpl模板中自动生成img时遇到的无法传递src进去的问题。
- 关于android 代码生成布局中遇到的一些问题
- 使用POI生成Excel文件,可以自动调整excel列宽遇到的问题及解决
- automake自动生成Makefile及遇到的问题
- hibernate自动生成表遇到的问题总结。
- opencv3.3 级联分类器生成xml以及遇到的一些问题
- hibernate自动生成表遇到的问题总结。
- 哪些年遇到过的Andriod问题(9)R.java文件不能自动生成解决方法
- 解决Android studio 生成jar包中遇到的一些问题!
- idea使用generator插件自动生成代码工具遇到的问题
- R.java不能自动生成资源ID的问题
- VS2012 编译libmseed源码生成dll文件并调用中遇到的一些问题
- 工作中遇到的问题之android客户端自动生成带logo的二维码
- Petapoco 连接oracle11g 自动生成poco时遇到的问题