ID生成算法,其中一种就是使用GUID(又称UUID),使用128位存储。UUID的一个问题是太长,可读性太差,人脑无法记忆。
替代方案之一,就是使用关系数据库的自增长字段,自增长字段的一个问题是,无法预先创建一个ID,只能够在保存的时候才能生成ID,这对于批量关联插入数据来说,不满足需求。
替代方案之二,就是使用一个记录ID的表,每次加一,在事务中使用Select FOR UPDATE来读取然后UPDATE SET FVALUE = FVALUE + 1,或者使用我之前文章中所提到的CAS算法。 这样做,会导致性能低下,每生成一个ID的成本都很高。
替代方案之三,就是把ID分成两部分,Seed和IncrementID。Seed采用上面的方案二或者其他办法生成,IncrementID使用一个AtomicInteger来每次递增生成。SEED转化为九进制数字,这样SEED就不会包含9,于是使用9作为分隔符,把SEED和IncrementID隔开。这样做,就可以做高性能产生ID,而且确保不重复。甚至可以更进一步,SEED由一个中心服务器生成。使用9个分隔符号隔开SEED和IncrementID,好处是SEED是变长,而不是使用固定位数来保存SEED,这样产生的ID会更短,可读性更好。
举例,34915,其中34时SEED,15是IncrementID,9是分隔符,SEED部分采用九进制表示法,确保不出现9,第一个9之后的内容属于IncrementID。
我已经做了一个实现,用于实际开发中,思路采用方案三,有很多实作的细节,但是总体设计思路就是如此。
分享到:
相关推荐
### 抖动算法小议——深入探讨多媒体技术中图像的抖动算法 #### 引言 在多媒体领域,尤其是在图像处理技术中,抖动算法扮演着至关重要的角色。本文旨在通过对抖动算法的深入解析,帮助读者理解其原理及其在灰度...
小议经济型酒店消费者心理及消费方向.doc
小议外汇期权会计在新规则中应用 本文主要探讨了小议外汇期权会计在新规则中的应用,涉及到外汇期权的概念、分类、确认、计量和披露等方面的知识点。 一、外汇期权的概念 外汇期权是一种金融衍生工具,允许持有人...
小议嵌入式计算机技术.pdf
法治思想起源小议.docx
小议食品安全问题.doc
小议人力资源外包.doc
小议“地摊经济”合集
小议“地摊经济”2020
小议如何培养班干部.doc
【文章摘要】本文主要探讨了在新的形势下大额现金管理的重要性,特别是在反洗钱方面的挑战。通过对河南省近年来现金收支情况的分析,发现现金流量逐年增加,储蓄性收支占比大且呈上升趋势,同时现金交易在经济活动中...
小议宪法规范的结构.docx
小议法国的刑法改革.pdf
小议休谟政治哲学.pdf
Izwdlg小议香港前世今生.pdf
小议勤奋的议论文.pdf
小议诱惑侦查刑法审查.doc
小议邮轮旅游发展方向.doc
小议我国网络道德教育.doc