CN113946586A - 一种适用于微服务系统的数据库主键生成方法 - Google Patents
一种适用于微服务系统的数据库主键生成方法 Download PDFInfo
- Publication number
- CN113946586A CN113946586A CN202111282607.XA CN202111282607A CN113946586A CN 113946586 A CN113946586 A CN 113946586A CN 202111282607 A CN202111282607 A CN 202111282607A CN 113946586 A CN113946586 A CN 113946586A
- Authority
- CN
- China
- Prior art keywords
- database
- primary key
- unique
- machine
- key generation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库主键生成技术领域,具体涉及一种适用于微服务系统的数据库主键生成方法,包括:基于雪花算法创建对应的ID算法工具;创建Redis机器ID计算器,并利用Redis incr原子性生成唯一的机器ID;对ID算法工具进行初始化,然后基于唯一的机器ID设置ID算法工具的参数;在数据写入数据库时,通过ID算法工具生成唯一ID并进行赋值,然后将赋值后的唯一ID插入到数据库中作为对应的数据库主键。本发明中数据库主键生成方法能够保证主键性能和主键生成效率,从而提升数据库主键的生成效果。
Description
技术领域
本发明涉及数据库主键生成技术领域,具体涉及一种适用于微服务系统的数据库主键生成方法。
背景技术
随着数据日益增长,业务数据量太大,单库单表不足以支撑现有业务,随之很多系统需要分布式部署,在此情况下对于数据库主键的生成需要满足全局唯一、高性能、好接入、高可用的条件。目前,数据库主键的生成方法主要包括数据库自增字段方法和GUID(全局统一标识符)方法。其中,自增字段方法由数据库自增类型字段来实现,由数据库自动生成和维护,并确保唯一性。GUID方法是利用机器硬件的唯一性特征(例如网卡MAC地址的唯一性)并结合生成时间,来确保在全球范围内不会出现重复的数值。
针对现有主键生成方法生成的数据库主键性能不足的问题,公开号为CN102880705B的中国专利公开了一种《数据库主键生成装置和数据库主键生成方法》,其装置包括:读取单元,读取预设的主键配置表,从主键配置表中获取数据中心的站点编号;主键生成单元,根据获取的站点编号读取主键分配表,获取主键分配表中记录的主键的最大值,根据主键的最大值得到当前可分配的主键的值,其中,主键包括数据中心的站点编号、生成主键的日期和流水号。
上述现有方案中的数据库主键生成方法生成的主键既具有像业务编号一样直观易用的特点,又可支持分布式数据部署环境。但是,现有数据库主键生成方法在应用于分布式环境下的微服务系统时,其主键的生成大多需要依赖于ID生成服务的远程调用,导致网络资源消耗严重,服务性能低下,进而导致数据库主键的生成效率很低。因此,如何设计一种能够保证主键性能和主键生成效率的数据库主键生成方法是亟需解决的技术问题。
发明内容
针对上述现有技术的不足,本发明所要解决的技术问题是:如何提供一种能够保证主键性能和主键生成效率的数据库主键生成方法,从而提升数据库主键的生成效果。
为了解决上述技术问题,本发明采用了如下的技术方案:
一种适用于微服务系统的数据库主键生成方法,包括以下步骤:
S1:基于雪花算法创建对应的ID算法工具;
S2:创建Redis机器ID计算器,并利用Redis incr原子性生成唯一的机器ID;
S3:对ID算法工具进行初始化,然后基于唯一的机器ID设置ID算法工具的参数;
S4:在数据写入数据库时,通过ID算法工具生成唯一ID并进行赋值,然后将赋值后的唯一ID插入到数据库中作为对应的数据库主键。
优选的,步骤S2中,通过如下步骤生成唯一的机器ID:
S201:获取对应的数据中心ID;
S202:获取对应的本机IP地址;
S203:通过设置的全局缓存前缀连接上数据中心ID,再连接上本机IP地址,进而获取对应的机器ID。
优选的,步骤S203中,若不存在预先缓存的机器ID,则执行incr命令生成一个增长ID,然后将该增长ID设置成键前缀,进而连接上数据中心ID,再连接上本机IP地址,最后将最终得到的ID作为此次的机器ID。
优选的,若未获取到对应的数据中心ID或本机IP地址,则停止机器ID的生成。
优选的,步骤S4中,首先利用Java注解机制在实体类主键字段中获取对应的ID属性注解;然后通过创建拦截器来拦截数据写入数据库的操作;再通过ID算法工具生成唯一ID并进行赋值;最后将赋值后的唯一ID插入到数据库中作为对应的数据库主键。
本发明中的主键生成方法与现有技术相比,具有如下有益效果:
本发明通过创建的ID算法工具生成唯一ID作为数据库主键的方式,不需要搭建分布式ID服务,也无需在生成主键时远程调用ID生成服务,进而能够降低网络资源消耗并提升服务性能,从而能够保证主键性能和主键生成效率。
本发明通过唯一的机器ID设置ID算法工具的管件参数,使得ID算法工具能够很好的生成唯一ID,进而能够提高数据库主键的可用性。
本发明通过数据中心ID和本机IP地址组合生成唯一机器ID的方式,保证了机器ID的唯一性,进而能够有效的满足分布式环境下多微服务系统数量的要求。
附图说明
为了使发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:
图1为实施例中主键生成方法的逻辑框图;
图2为实施例中ID算法工具生成的唯一ID示意图。
具体实施方式
下面通过具体实施方式进一步详细的说明:
实施例:
本实施例中公开了一种适用于微服务系统的数据库主键生成方法。
如图1所示,适用于微服务系统的数据库主键生成方法,包括以下步骤:
S1:基于雪花算法(Snowflake)创建对应的ID算法工具;
S2:创建Redis机器ID计算器,并利用Redis incr原子性生成唯一的机器ID;
S3:对ID算法工具进行初始化,然后基于唯一的机器ID设置ID算法工具的参数;
S4:在数据写入数据库时,通过ID算法工具生成唯一ID并进行赋值,然后将赋值后的唯一ID插入到数据库中作为对应的数据库主键。生成的唯一ID如图2所示。
在本发明中,通过创建(封装)的ID算法工具生成唯一ID作为数据库主键的方式,不需要搭建分布式ID服务,也无需在生成主键时远程调用ID生成服务,进而能够降低网络资源消耗并提升服务性能,从而能够保证主键性能和主键生成效率。同时,本发明通过唯一的机器ID设置ID算法工具的管件参数,使得ID算法工具能够很好的生成唯一ID,进而能够提高数据库主键的可用性。
具体的,步骤S2中,通过如下步骤生成唯一的机器ID:
S201:获取对应的数据中心ID;
S202:获取对应的本机IP地址;
S203:通过设置的全局缓存前缀(如id_generator)连接上数据中心ID,再连接上本机IP地址,进而获取预先缓存的机器ID。若不存在预先缓存的机器ID,则执行incr命令生成一个增长ID,然后将该增长ID设置成键前缀(如id_generator),进而连接上数据中心ID,再连接上本机IP地址,最后将最终得到的ID作为此次的机器ID。若未获取到对应的数据中心ID或本机IP地址,则停止机器ID的生成。
在本发明中,通过数据中心ID和本机IP地址组合生成唯一机器ID的方式,保证了机器ID的唯一性,进而能够有效的满足分布式环境下多微服务系统(应用服务)数量的要求。
具体实施过程中,步骤S4中,首先利用Java注解机制在实体类主键字段中获取对应的ID属性注解;然后通过创建拦截器来拦截数据写入数据库的操作;再通过ID算法工具生成唯一ID并进行赋值;最后将赋值后的唯一ID插入到数据库中作为对应的数据库主键。
在本发明中,结合Java注解机制和拦截器的特性,对数据插入操作进行拦截,并扫描对应实体中的ID属性注解,进而能够更好的辅助生成唯一ID并进行赋值,从而能够提升数据库主键的生成效果。
需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管通过参照本发明的优选实施例已经对本发明进行了描述,但本领域的普通技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。同时,实施例中公知的具体结构及特性等常识在此未作过多描述。最后,本发明要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。
Claims (5)
1.一种适用于微服务系统的数据库主键生成方法,其特征在于,包括以下步骤:
S1:基于雪花算法创建对应的ID算法工具;
S2:创建Redis机器ID计算器,并利用Redis incr原子性生成唯一的机器ID;
S3:对ID算法工具进行初始化,然后基于唯一的机器ID设置ID算法工具的参数;
S4:在数据写入数据库时,通过ID算法工具生成唯一ID并进行赋值,然后将赋值后的唯一ID插入到数据库中作为对应的数据库主键。
2.如权利要求1所述的适用于微服务系统的数据库主键生成方法,其特征在于,步骤S2中,通过如下步骤生成唯一的机器ID:
S201:获取对应的数据中心ID;
S202:获取对应的本机IP地址;
S203:通过设置的全局缓存前缀连接上数据中心ID,再连接上本机IP地址,进而获取对应的机器ID。
3.如权利要求2所述的适用于微服务系统的数据库主键生成方法,其特征在于:步骤S203中,若不存在预先缓存的机器ID,则执行incr命令生成一个增长ID,然后将该增长ID设置成键前缀,进而连接上数据中心ID,再连接上本机IP地址,最后将最终得到的ID作为此次的机器ID。
4.如权利要求2所述的适用于微服务系统的数据库主键生成方法,其特征在于:若未获取到对应的数据中心ID或本机IP地址,则停止机器ID的生成。
5.如权利要求1所述的适用于微服务系统的数据库主键生成方法,其特征在于:步骤S4中,首先利用Java注解机制在实体类主键字段中获取对应的ID属性注解;然后通过创建拦截器来拦截数据写入数据库的操作;再通过ID算法工具生成唯一ID并进行赋值;最后将赋值后的唯一ID插入到数据库中作为对应的数据库主键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111282607.XA CN113946586A (zh) | 2021-11-01 | 2021-11-01 | 一种适用于微服务系统的数据库主键生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111282607.XA CN113946586A (zh) | 2021-11-01 | 2021-11-01 | 一种适用于微服务系统的数据库主键生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113946586A true CN113946586A (zh) | 2022-01-18 |
Family
ID=79337348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111282607.XA Pending CN113946586A (zh) | 2021-11-01 | 2021-11-01 | 一种适用于微服务系统的数据库主键生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946586A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785385A (zh) * | 2023-12-30 | 2024-03-29 | 北京领雁科技股份有限公司 | 基于雪花算法的id生成系统及方法 |
-
2021
- 2021-11-01 CN CN202111282607.XA patent/CN113946586A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785385A (zh) * | 2023-12-30 | 2024-03-29 | 北京领雁科技股份有限公司 | 基于雪花算法的id生成系统及方法 |
CN117785385B (zh) * | 2023-12-30 | 2024-06-07 | 北京领雁科技股份有限公司 | 基于雪花算法的id生成系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10613762B2 (en) | Memory allocation buffer for reduction of heap fragmentation | |
US6928460B2 (en) | Method and apparatus for performing generational garbage collection in a segmented heap | |
CN101902473B (zh) | 基于网格gis的数据同步更新实现方法 | |
CN107454203A (zh) | 在分布式系统中生成唯一id的方法 | |
CN101986665B (zh) | Ipv6地址分配方法和系统 | |
US7991807B2 (en) | Method and system for garbage collection | |
CN113946586A (zh) | 一种适用于微服务系统的数据库主键生成方法 | |
CN109241056B (zh) | 一种用于分布式系统的数字id生成系统 | |
CN106874465A (zh) | 一种基于数据版本的高效管理缓存的方法 | |
CN106993022B (zh) | 用于集群的标识管理方法、标识服务器及相应的系统 | |
CN113407560B (zh) | 更新消息处理方法、数据同步方法、配置信息配置方法 | |
CN105208137A (zh) | 一种互联网协议ip地址分配方法、装置、服务器和终端 | |
CN111651459A (zh) | 一种基于Redis的业务ID生成方法 | |
CN114756385B (zh) | 一种深度学习场景下的弹性分布式训练方法 | |
CN101616002A (zh) | 一种用户身份验证方法及装置 | |
CN110855805B (zh) | 一种基于合成记录类型批量配置正反向记录的方法与系统 | |
US20090187589A1 (en) | Method and system for managing data clusters | |
CN113656172A (zh) | 一种优化雪花算法的方法、装置、设备以及存储介质 | |
CN111930642A (zh) | 缓存管理方法、电子设备以及缓存管理装置 | |
CN111930720A (zh) | 数据倾斜的处理方法、系统、电子设备和介质 | |
CN111385334A (zh) | 一种数据配送方法、装置、设备及存储介质 | |
CN117812039B (zh) | 一种网络地址转换日志记录方法、系统、设备及介质 | |
CN112256709B (zh) | 一种专用机体系下的数据读取方法、系统及设备 | |
CN116389411B (zh) | 域名数据处理方法、装置及设备 | |
US6671783B1 (en) | Method and article for managing references between objects in memories of different durations in a run-time environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |