世间万物,都有自己唯一的标识,比如人,每个人都有自己的指纹(白夜追凶给我科普的,同卵双胞胎DNA一样,但指纹不一样).又如中国人,每个中国人有自己的身份证.对于计算机,很多时候,也需要为每一份数据生成唯一的标识.在这里,数据的概念是非常宽泛的,比如数据量记录.文件.消息,而唯一的标识我们称之为id. 本文地址:http://www.cnblogs.com/xybaby/p/7616272.html 自增ID 使用过mysql的同学应该都知道,经常用自增id(auto increment)作为主键…
月整理出来,有兴趣的园友可以关注下我的博客. 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案.我和我的小伙伴们也讨论了这个主题,我受益匪浅啊…… 博文示例: 1.         GUID生成Int64值后是否还具有唯一性测试 2.         Random生成高唯一性随机码 今天分享的主题是:如何在高并发分布式系统中生成全局唯一Id. 但这篇博文实际上是“半分享半讨论”的博文: 1)         半分享是我将说下我所了解到的关于今天主题所涉及的几种方案.…
http://www.cnblogs.com/heyuquan/p/global-guid-identity-maxId.html 又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上.最近还写了一个发邮件的组件以及性能测试请看 <NET开发邮件发送功能的全面教程(含邮件组件源码)> ,还弄了个MSSQL参数化语法生成器,会在9月整理出来,有兴趣的园友可以关注下我的博客. 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案.我和我的小伙伴们也…
又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上.最近还写了一个发邮件的组件以及性能测试请看 <NET开发邮件发送功能的全面教程(含邮件组件源码)> ,还弄了个MSSQL参数化语法生成器,会在9月整理出来,有兴趣的园友可以关注下我的博客. 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案.我和我的小伙伴们也讨论了这个主题,我受益匪浅啊…… 博文示例: GUID生成Int64值后是否还具有唯一性测试 Random生成高唯一性随机码 今天分…
高并发分布式系统中生成全局唯一(订单号)Id   1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime),这样我们将时间信息与GUID组合起来,在保留GUID的唯一性的同时增加了有序性,以此来提高索引效率,在NHibernate中,COMB型主键的生成代码如下所示: /// <summary> /// 保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)组…
数据在分片时,典型的是分库分表,就有一个全局ID生成的问题.单纯的生成全局ID并不是什么难题,但是生成的ID通常要满足分片的一些要求:   1 不能有单点故障.   2 以时间为序,或者ID里包含时间.这样一是可以少一个索引,二是冷热数据容易分离.   3 可以控制ShardingId.比如某一个用户的文章要放在同一个分片内,这样查询效率高,修改也容易.   4 不要太长,最好64bit.使用long比较好操作,如果是96bit,那就要各种移位相当的不方便,还有可能有些组件不能支持这么大的ID.…
1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime),这样我们将时间信息与GUID组合起来,在保留GUID的唯一性的同时增加了有序性,以此来提高索引效率,在NHibernate中,COMB型主键的生成代码如下所示: /// <summary> /// 保留GUID的10个字节,用另6个字节表示GUID生成的时间(DateTime)组合方式 /// </summary>…
[insert 一条数据 然后拿出这条数据在数据库中生成的ID] <insert id="insert" parameterType="management"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> select last_insert_id() AS pid; </s…
对于分布式系统而言,意味着会有很多个instance会并发的生成很多业务数据,比如订单.不同的机房.不同的机器.不同的应用实例会同时生成.所以,如何生成一个好用的全局id并不是一个简单的uuid就能够搞定的事情.事实上,数据库内置的序列(oracle)或者自增机制(mysql)也无法满足需求.虽然可以设置gap,但是他无法做到扩展时基本不受影响. 同时,纯粹意义上的uuid(指的是逻辑上,而非技术上的uuid)或者整数自增在大型应用中,很有可能是不合适的,因为很多时候,我们真正需要的ID是有一定…
本文源码:GitHub·点这里 || GitEE·点这里 一.全局ID简介 在实际的开发中,几乎所有的业务场景产生的数据,都需要一个唯一ID作为核心标识,用来流程化管理.比如常见的: 订单:order-id,查订单详情,物流状态等: 支付:pay-id,支付状态,基于ID事务管理: 如何生成唯一标识,在普通场景下,一般的方法就可以解决,例如: import java.util.UUID; public class UuidUtil { public static String getUUid()…