首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NHibernate HiLo ID生成器.保存前生成ID

NHibernate HiLo ID生成器是一种用于生成唯一标识符(ID)的工具,它是NHibernate框架中的一部分。该生成器使用了HiLo算法,其中Hi表示高位,Lo表示低位。它的工作原理是在数据库中维护一个特殊的表,用于存储每个实体类型的当前高位值。每次需要生成一个新的ID时,生成器会从该表中获取当前的高位值,并将其与低位值组合成一个唯一的ID。

NHibernate HiLo ID生成器的主要优势包括:

  1. 简单易用:NHibernate HiLo ID生成器是NHibernate框架的一部分,可以方便地集成到NHibernate应用程序中。
  2. 高效性能:HiLo算法生成的ID是连续的,不会产生碎片化,因此在数据库索引上的性能更好。
  3. 可定制性:NHibernate HiLo ID生成器可以根据需要进行定制,例如可以配置生成的ID的长度、前缀等。

NHibernate HiLo ID生成器适用于需要在数据库中生成唯一ID的场景,特别是在分布式系统中,多个节点需要生成唯一ID时。它可以确保生成的ID在整个系统中是唯一的,并且不会出现冲突。

腾讯云提供了一系列与NHibernate HiLo ID生成器类似的ID生成服务,例如腾讯云分布式唯一ID生成器(Tencent Distributed Unique ID Generator,TDID),它可以满足分布式系统中生成唯一ID的需求。您可以通过访问以下链接了解更多关于TDID的信息:

https://cloud.tencent.com/product/tdid

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

分布式ID生成器

由于我们的数据库在生产环境中要分片部署(MyCat),所以我们不能使用数据库本身的自增功能来产生主键值,只能由程序来生成唯一的主键值。...默认情况下41bit的时间戳可以支持该算法使用到2082年,10bit的工作机器id可以 支持1024台机器,序列号支持1毫秒产生4096个自增序列id ....SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID 作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右 项目中我们可以直接使用该...* 这样的好处是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和机器ID作区分), * 并且效率较高,经测试,snowflake每秒能够产生26万ID左右,完全满足需要...偏移组合生成最终的ID,并返回ID long nextId = ((timestamp - twepoch) << timestampLeftShift)

25420

分布式id生成器实战

ID生成算法,结果是一个long型的ID。...snowflake算法所生成ID结构 ? 整个结构是64位,所以我们在Java中可以使用long来进行存储。...一般是正数,最高位是0 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截) 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间...snowFlake算法的优点: 生成ID时不依赖于DB,完全在内存生成,高性能高可用。 ID呈趋势递增,后续插入索引树的时候性能较好。 SnowFlake算法的缺点: 依赖于系统时钟的一致性。...生成器 public class IdGenerator { private long workerId = 0; @PostConstruct void init() {

58110

分布式ID生成器方案

背景 在互联网业务中,很多场景需要全局唯一的ID,比如消息系统用一个ID标记唯一的消息,用一个唯一的ID标记一个系统对象等。这些业务场景需要有一个分布式ID生成器。...分布式ID的特性 全局唯一 递增 高可用: ID生成器服务往往服务于多个业务系统模块,访问压力大,所以需要保证高可用。 信息安全: 为了避免恶意推测出批量的ID,有一些场景下ID需要无规则的。...分布式ID生成方案 方案一: UUID UUID核心思想是结合机器的网卡、当地时间、一个随机数来生成。...优点 性能高 - 本地生成,无需网络请求 生成简单- 没有高可用风险 较为安全 - 没有规律 缺点 太长 - 不利于存储 不利于安全性 - 基于MAC地址生成的算法可能会泄露MAC地址 无序-在InnoDB...存储引擎中,无序性会导致数据位置频繁变动,性能低下 方案二: 数据库自增主键 利用数据库自增ID的特性来生成,如 MySQL 的auto_increment 。

32410

架构设计——ID生成器「建议收藏」

一、分布式ID发号器 要求很明确:不同机器同一时间生成不同ip;同一机器不同时间生成不同IP; 所以根据需求,可选变量有: 机器(网卡、IP)+时间,随机数 二、Why not UUID?...2.依赖DB,对数据库造成额外压力 四.全局唯一ID生成器如何设计?...41位时间戳(毫秒级): 需要注意的是此处的 41 位时间戳并非存储当前时间的时间戳,而是存储时间戳的差值(当前时间戳 – 起始时间戳),这里的起始时间戳一般是ID生成器开始使用的时间戳,由程序来指定,...超过这个数量,生成ID就有可能会冲突。...2.其次是12位序列号溢出的问题,即1ms内请求生成ID个数超过了2的12次方=4096个id。snowflake算法对此的做法是,等到下一ms再生成ID

61720

分布式 ID 生成器如何选择?

UUID 生成的主键 id 本身无序,建立索引存储空间大,效率低,可能会导致数据位置频繁变动,严重影响索引性能。...UUID 生成ID 太长,16 byte128 bit,通常以 36 长度的字符串表示,很多场景不太适用,存储空间大。...Twitter 开源的分布式 ID 生成方案(Long) 由于我们的数据库在生产环境中要分片部署(MyCat),所以我们不能使用数据库本身的自增功能来产生主键值,只能由程序来生成唯一的主键值。...ID 不依赖第三方 jar,本地方法实现,效率非常高 缺点: 依赖服务器时间,如果服务器时间回拨,会导致生成id 重复或者服务会处于不可用状态。...作分布式 id 生成策略的优先级:UUID < 自增 ID(序列)< snowflake 算法 ID

1.7K40

双buffer分布式id生成器

双buffer分布式id生成器 ?...关注我们获得更多内容 一 背景 在互联网行业很多业务场景都需要基于业务的id生成器,来生成各个业务数据的业务主键,很多传统企业或者小众业务会直接拿数据库的自增主键当做业务主键,当然这样能够解决大部分问题...那么我们就需要一种能够支持分布式唯一性的id生成规则(或者id生成器)来生成分布式唯一的业务主键。...三 基于业务DB双buffer分布式id生成器 前面讲述了我们对id生成规则的诉求,以及目前比较常见的id生成方案,那么切合自己的业务特性,我们打算开发一款简单易用的分布式id生成器,需要满足一下诉求:...生成器门面类DoubleBufferIdWorker的依赖关系: ?

1.3K10

数据库ID生成器基准测试

在说明如何基准测试之前,我想聊聊我为什么要做这个事儿,话说最近做某后台的时候需要一个 ID 生成器,我不太想用 snowflake 等复杂的解决方案,也不太想用 redis 来实现,因为我手头只有 mysql...实际上当初 flickr 就是这么干的,利用 LAST_INSERT_ID 返回最新插入的 id: mysql> CREATE TABLE `Tickets64` ( `id` bigint(20)...(); 不过我没有直接拷贝此方案,因为看上去它至少有两个可以优化的地方: 因为一张表只能有一个自增字段,所以一个表只能做一个独立的 id 生成器。...id = LAST_INSERT_ID(id+1) WHERE name = 'global'; mysql> SELECT LAST_INSERT_ID(); 确定了解决方案,我琢磨着得 Benchmark...= LAST_INSERT_ID(id+1) WHERE name = 'global' " 结果令人大吃一惊,所谓的改进方案比原始方案慢得多!

39420

推荐一款id生成器: Hashids

唯一 id 生成的方式有很多种,比较常见的有以下几种方式: 语言自带功能,如 Java 中的 UUID,常用于后端 第三方工具提供,如 npm 中的 nanoid,常用于前端 Twitter...本文再推荐一款唯一 id 生成器:Hashids。它具有以下特性: 只能把指定的整数(且不支持负数)转换为唯一 id,具有一定的局限性。 不会发生冲突。...生成的结果无序,避免被遍历。 生成的结果自动规避脏话单词,如 shit 之类。...可以反向解析,这对于某些场景尤为合适(比如短链接系统,可以根据生成的短链接 id 获取原始 id,再从数据库中根据原始 id 拿到对应的长链接)。...可见,该生成器具有一定的局限性,但提供了较为丰富的功能,在特定的场景下是非常好用的。

1.2K10

Java 唯一ID生成器「建议收藏」

前言: 前段时间,写了一个ID 生成器,发在群里,结果遭到别人嘲笑,心有不甘,于是思来想去,决定在重新写一个ID生成器。...此方法生成ID理论上也是会有重复,但是这个概率太低太低,低到可以忽略不计。 原理: 使用当前时间戳+指定长度的随机数,并随机打乱字符串。可以生成指定长度的纯数字的ID。...具体实现代码: /** * 普通Id生成器,用时间戳生成+指定位随机数生成, * 此方法用于单机应用并且并发量不高的情况之下 * * @return */ public static String...Collections.shuffle(list); //拼接字符串,并添加2(自定义)位随机数 return String.join("", list) + randomNumber(2); } /** * 生成指定长度的一个数字字符串

1.2K10

一个PHP实现的ID生成器

至于解决方案,网上已经有很多类似的讨论: 细聊分布式ID生成方法 业务系统需要什么样的ID生成器 分布式Unique ID生成方法一览 微信序列号生成器架构设计及演变 最流行的解决方案,当然是 twitter...的 snowflake,其大致含义是说:为了避免单点故障,在多个节点上运行 ID 生成器服务,每个节点都有自己独立的标识,ID 以时间因子为前缀,虽然不同的服务器时间可能存在差异,不能保证绝对的顺序,...网上现有的开源 ID 生成器,比如 Chronos,都是运行为服务的形式,不过对我而言,这样有些太重了,于是我用 PHP 实现了一个非服务化的简版 ID 生成器,虽然它很简单,但是它并不简陋,实现了 snowflake...BTW:如果是一些非亲缘性的 PHP 进程共同使用一个 id 生成器的话,比如 php-fpm 和 php-cli 共同使用一个 id 生成器,那么 apcu 并不合适,此时需要使用 libshmcache...此外,生成ID 最好别直接用,不然别人可以反解出其中的数据,比如你有多少台服务器等等,解决办法是在应用层用 hashids 编码及解码,如此一来,数据库里保存的还是原始的 ID(Bigint),但是用户看到的却是

44251

游戏服务器ID生成器组件

游戏服务器程序中,经常需要生成全局的唯一ID号,这个功能很常用,本文将介绍一种通用ID生成组件。...游戏服务器程序中使用此组件的场景有:  创建角色时,为其分配唯一ID   创建物品时,每个物品需要唯一ID   创建宝宝、灵兽时需要唯一ID 原理介绍          ID生成器的原理就是使用全局整型变量...由于服务器重启后全局变量失效,故全局变量需要持久化保存,相应的,服务器启动时从持久化中载入全局变量。...ID生成器的工作流程为:   建议采用数据库作为持久化存储,本文以mysql为例   启动时从数据库载入全局变量,作为分配的起始值   每次分配id,先递增全局变量   每次递增后,更新数据库中的全局变量值...__init__(self, db_host_, type_id_ = 0, server_id_ = 0): self.type_id = type_id_ self.server_id

2K80

IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)

本文将要分享的是滴滴开源的分布式ID生成器Tinyid的技术原理、使用方法等等,希望能进一步为你打开这方面的技术视野。...)》 《IM消息ID技术专题(三):解密融云IM产品的聊天消息ID生成策略》 《IM消息ID技术专题(四):深度解密美团的分布式ID生成算法》 《IM消息ID技术专题(五):开源分布式ID生成器UidGenerator...的技术实现》 《IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)》(* 本文) 3、什么是Tinyid?...6、Tinyid的技术原理详解 6.1 ID生成系统的技术要点 在简单系统中,我们常常使用db的id自增方式来标识和保存数据,随着系统的复杂,数据的增多,分库分表成为了常见的方案,db自增已无法满足要求...那么保存db号段的表该怎设计呢?我们继续往下看。

98400
领券