CN111625543B - 一种基于HBase表实现全局单调递增的序列的方法 - Google Patents

一种基于HBase表实现全局单调递增的序列的方法 Download PDF

Info

Publication number
CN111625543B
CN111625543B CN202010459160.8A CN202010459160A CN111625543B CN 111625543 B CN111625543 B CN 111625543B CN 202010459160 A CN202010459160 A CN 202010459160A CN 111625543 B CN111625543 B CN 111625543B
Authority
CN
China
Prior art keywords
sequence
hbase
value
database
unique
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.)
Active
Application number
CN202010459160.8A
Other languages
English (en)
Other versions
CN111625543A (zh
Inventor
顾海燕
杨永锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guizhou Esgyn Information Technology Co Ltd
Original Assignee
Guizhou Esgyn Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guizhou Esgyn Information Technology Co Ltd filed Critical Guizhou Esgyn Information Technology Co Ltd
Priority to CN202010459160.8A priority Critical patent/CN111625543B/zh
Publication of CN111625543A publication Critical patent/CN111625543A/zh
Application granted granted Critical
Publication of CN111625543B publication Critical patent/CN111625543B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于HBase表实现全局单调递增的序列的方法,包括以下步骤:数据库初始化阶段,HBase内创建一张表,表至少具有两列,一列对应序列的唯一标识,另外一列用于存放序列的当前值,表内每一行依次对应数据库中的一个序列;创建序列时,数据库的元数据表内插入数值,所述数值包括序列起始值,最大值,步长值,且需要将序列唯一标识,以及起始值插入到步骤A中创建的HBase表中。本发明利用incrementColumnValue方法可以保证表中的数据单调递增的特性,数据在数据库引擎层面不需要额外增加锁,使得数据库性能好,效率高,且实现简单。

Description

一种基于HBase表实现全局单调递增的序列的方法
技术领域
本发明属于分布式数据库技术领域,具体涉及一种基于HBase表实现全局单调递增的序列的方法。
背景技术
序列是数据库中的一个对象,在ANSI标准中有明确定义。序列具有起始值,最大值,步长,是否循环,是否单调递增等属性。使用序列通常用来获得其当前值或者下一个值。一个数据库集群中可以存在多个的序列。如何实现高性能的序列,是分布式数据需要解决的问题之一。本方案是要解决在分布式数据库中,如何实现高效的整个集群全局唯一且单调递增的序列的问题。
序列的各个属性是固化在数据库的元数据表中的。在分布式数据库中,想要保证全局唯一且递增,也就要做到对序列的元数据表的访问具有原子性,常见的解决方案就是基于锁的序列实现。锁的实现分为两类。一类是乐观锁,一类是悲观锁。乐观锁适用于并发较低的场景。流程为向元数据表中写入时间戳(需保证唯一),获取当前的序列号,加上步长之后,更新序列的元数据表中序列的值,读回时间戳。通过写入和读回的时间戳是否相等,来确定是否获取到唯一的递增的序列号。时间戳相等,表示获取成功,如果时间戳不相等,表示这个序列的值被其他客户端获得了,那么就重试。悲观锁就是真正意义上的分布式锁,在访问序列的元数据表之前,加分布式全局锁,获取唯一的序列号,然后更新序列元数据的值,最后释放锁。以上用锁的方式,都需要在数据库的引擎层面有锁保护或者锁的相关逻辑。
乐观锁的缺点显而易见,首先在大并发的情况下,冲突会多,可能重试多次才能获得结果,甚至获取失败。就算没有并发,需要额外的多一次读和一次写,效率不高;悲观锁首先是基于一个分布式锁,无论是基于zookeeper的实现或者是Redis的实现,获取锁本身的代价就很大,另外还有扩展性,可用性,单点热点的隐患存在的问题,为此我们提出一种基于HBase表实现全局单调递增的序列的方法。
发明内容
本发明的目的在于提供一种基于HBase表实现全局单调递增的序列的方法,以解决上述背景技术中提出的问题,并达到利用HBase的方法,无须在引擎层加锁或实现锁的逻辑,就能获得全局唯一且单调递增的序列值的效果。
为了实现上述目的,本发明采用了如下技术方案:
一种基于HBase表实现全局单调递增的序列的方法,包括以下步骤:
A)、数据库初始化阶段,HBase内创建一张表,表至少具有两列,一列对应序列的唯一标识,另外一列用于存放序列的当前值,表内每一行依次对应数据库中的一个序列;
B)、创建序列时,数据库的元数据表内插入数值,所述数值包括序列起始值,最大值,步长值,且需要将序列唯一标识,以及起始值插入到步骤A中创建的HBase表中;
C)、当序列获得下一个值时,需要根据序列唯一标识,以及步长,调用incrementColumnValue方法来更新HBase表中的值,并把更新的值返回给客户端;
D)、若使用序列获得当前值,根据序列的唯一标识,步长为0,调用incrementColumnValue方法来更新HBase表中的值,incrementColumnValue方法可以保证表中的数据单调递增的特性,以上的步骤在数据库引擎层面不需要额外增加锁;
E)、删除序列,除了要删除序列的元数据表中的记录,同时需要根据序的唯一标识,删除HBase表中序列的记录。
进一步地,若数据库中存在多种序列,可以将多种序列分类存储不同的HBase表中。
进一步地,当多张HBase表同时存在的情况下,多张HBase表的表名前缀相同,表名以_n结尾,序列到序列所存放的HBase表之间的路由关系是:序列的唯一标识/HBase表的总个数,其余数来决定序列存放到第几张HBase表,且与数值存放到该序列的元数据表中。
相比于现有技术,本发明的有益效果在于:
通过设计了本申请,利用incrementColumnValue方法可以保证表中的数据单调递增的特性,数据在数据库引擎层面不需要额外增加锁,使得数据库性能好,效率高,且实现简单,不需要任何额外实现分布式锁的逻辑,也没有获得分布式锁的开销,且和锁的实现相比,本申请具有更强的可扩展性,同时能避免分布式锁的单点热点问题,在序列数量庞大,或者单region访问成为瓶颈的时候,可以创建多张HBase表来存放,以及序列到HBase表的路由方式。这是本申请提案需要保护的技术点之二。
附图说明
图1为本发明的创建序列流程图;
图2为本发明的获得序列值流程图;
图3为本发明的删除序列流程图;
图4为本发明的流程图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参照图1-图4,本发明提出的一种基于HBase表实现全局单调递增的序列的方法,包括以下步骤:
A)、数据库初始化阶段,HBase内创建一张表,表至少具有两列,一列对应序列的唯一标识,另外一列用于存放序列的当前值,表内每一行依次对应数据库中的一个序列;
B)、创建带有order属性的序列,把序列UID,对应的HBase表的编号以及其他属性值插入到元数据表SEQ_GEN,再把序列UID以及起始值插入到表名为ESG_TRAFODION._ORDER_SG_.ORDER_SEQ_GEN_n的HBase表中,如下表所示:
SEQ_UID SEQ_VALUE
1111111111111111111 start_value(default1)
C)、当序列获得下一个值时,需要根据序列唯一标识,以及步长,调用incrementColumnValue方法来更新HBase表中的值,并把更新的值返回给客户端,查询序列值过程中,根据序列名从元数据表SEQ_GEN中获得序列UID以及所有属性用incrementColumnValue方法更新ESG_TRAFODION._ORDER_SG_.ORDER_SEQ_GEN_n表中UID对应的序列值,并获得更新值,然后返回更新值,查询结束;
D)、若使用序列获得当前值,根据序列的唯一标识,步长为0,调用incrementColumnValue方法来更新HBase表中的值,incrementColumnValue方法可以保证表中的数据单调递增的特性,以上的步骤在数据库引擎层面不需要额外增加锁;
E)、删除带有order属性的序列,删除元数据表SEQ_GEN里UID对应的那行数据,再删除ESG_TRAFODION._ORDER_SG_.ORDER_SEQ_GEN_n的HBase表中对应的行,除了要删除序列的元数据表中的记录,同时需要根据序的唯一标识,删除HBase表中序列的记录。
在本实施例中,若数据库中存在多种序列,可以将多种序列分类存储不同的HBase表中,以此来实现扩展性,同时防止热点region的问题。
在本实施例中,当多张HBase表同时存在的情况下,多张HBase表的表名前缀相同,表名以_n结尾,来决定是第几张HBase表,序列到序列所存放的HBase表之间的路由关系是:序列的唯一标识/HBase表的总个数,其余数来决定序列存放到第几张HBase表,且与数值存放到该序列的元数据表中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (1)

1.一种基于HBase表实现全局单调递增的序列的方法,其特征在于,包括以下步骤:
A)、数据库初始化阶段,HBase内创建一张表,表至少具有两列,若数据库中存在多种序列,可以将多种序列分类存储不同的HBase表中,一列对应序列的唯一标识,另外一列用于存放序列的当前值,表内每一行依次对应数据库中的一个序列,当多张HBase表同时存在的情况下,多张HBase表的表名前缀相同,表名以_n结尾,序列到序列所存放的HBase表之间的路由关系是:序列的唯一标识/HBase表的总个数,其余数来决定序列存放到第几张HBase表,且与数值存放到该序列的元数据表中;
B)、创建序列时,数据库的元数据表内插入数值,所述数值包括序列起始值,最大值,步长值,且需要将序列唯一标识,以及起始值插入到步骤A中创建的HBase表中;
C)、当序列获得下一个值时,需要根据序列唯一标识,以及步长,调用incrementColumnValue方法来更新HBase表中的值,并把更新的值返回给客户端;
D)、若使用序列获得当前值,根据序列的唯一标识,步长为0,调用incrementColumnValue方法来更新HBase表中的值,incrementColumnValue方法可以保证表中的数据单调递增的特性,以上的步骤在数据库引擎层面不需要额外增加锁;
E)、删除序列,除了要删除序列的元数据表中的记录,同时需要根据序的唯一标识,删除HBase表中序列的记录。
CN202010459160.8A 2020-05-27 2020-05-27 一种基于HBase表实现全局单调递增的序列的方法 Active CN111625543B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010459160.8A CN111625543B (zh) 2020-05-27 2020-05-27 一种基于HBase表实现全局单调递增的序列的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010459160.8A CN111625543B (zh) 2020-05-27 2020-05-27 一种基于HBase表实现全局单调递增的序列的方法

Publications (2)

Publication Number Publication Date
CN111625543A CN111625543A (zh) 2020-09-04
CN111625543B true CN111625543B (zh) 2023-08-25

Family

ID=72272600

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010459160.8A Active CN111625543B (zh) 2020-05-27 2020-05-27 一种基于HBase表实现全局单调递增的序列的方法

Country Status (1)

Country Link
CN (1) CN111625543B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112104743B (zh) * 2020-09-21 2022-08-16 北京金山云网络技术有限公司 序列生成方法、装置和电子设备
CN112948399B (zh) * 2021-05-17 2021-08-03 太平金融科技服务(上海)有限公司深圳分公司 序列号生成方法、装置、计算机设备和存储介质

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102769667A (zh) * 2012-06-29 2012-11-07 北京奇虎科技有限公司 一种id生成方法、装置和系统
CN103390038A (zh) * 2013-07-16 2013-11-13 西安交通大学 一种基于HBase的构建和检索增量索引的方法
CN103823810A (zh) * 2012-11-19 2014-05-28 中国电信股份有限公司 一种在分布式系统中生成唯一键的方法、装置及系统
CN104008212A (zh) * 2014-06-23 2014-08-27 中国科学院重庆绿色智能技术研究院 一种地理位置信息相关联的物联网时间序列数据存取方法
CN104850611A (zh) * 2015-05-12 2015-08-19 浪潮集团有限公司 一种使用kettle从关系型数据库向非关系型数据库定时增量更新数据的方法
CN104951519A (zh) * 2015-06-04 2015-09-30 无锡天脉聚源传媒科技有限公司 一种生成序列号的方法及装置
CN105446976A (zh) * 2014-06-25 2016-03-30 北大方正集团有限公司 业务表的处理方法及装置
CN106326374A (zh) * 2016-08-15 2017-01-11 北京集奥聚合科技有限公司 一种从HBase中增量抽取数据的方法及系统
CN106777019A (zh) * 2016-12-08 2017-05-31 腾讯科技(深圳)有限公司 一种HBase系统的监控方法及监控服务器
CN107077476A (zh) * 2014-09-24 2017-08-18 甲骨文国际公司 利用动态类型的大数据对事件进行丰富以用于事件处理
CN107918671A (zh) * 2017-11-29 2018-04-17 郑州云海信息技术有限公司 全局序列号应用于分布式数据库中间件的方法
CN108960672A (zh) * 2018-07-23 2018-12-07 广州唯品会信息科技有限公司 限额限次的风控方法、装置及计算机可读存储介质
CN108959386A (zh) * 2018-05-31 2018-12-07 深圳壹账通智能科技有限公司 分布式全局唯一id生成方法、装置、设备和存储介质
CN109639775A (zh) * 2018-11-27 2019-04-16 湖南蚁为软件有限公司 全局单调递增id生成方法、装置、系统及设备
CN110036382A (zh) * 2016-09-30 2019-07-19 易享信息技术有限公司 多租户非关系型平台对象
CN110147359A (zh) * 2017-12-13 2019-08-20 北京奇虎科技有限公司 一种增量生成方法、装置以及一种数据更新方法、装置
CN110457059A (zh) * 2019-06-28 2019-11-15 苏宁云计算有限公司 一种基于redis的序列号生成方法及装置
CN111104397A (zh) * 2019-11-19 2020-05-05 浙江工业大学 一种基于Flume的可配置数据集成方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870110B2 (en) * 2008-02-27 2011-01-11 International Business Machines Corporation Method and system for generating a transaction-bound sequence of records in a relational database table
JP4612715B2 (ja) * 2008-09-05 2011-01-12 株式会社日立製作所 情報処理システム、データ更新方法およびデータ更新プログラム
US20110078666A1 (en) * 2009-05-26 2011-03-31 University Of California System and Method for Reproducing Device Program Execution
US10120907B2 (en) * 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102769667A (zh) * 2012-06-29 2012-11-07 北京奇虎科技有限公司 一种id生成方法、装置和系统
CN103823810A (zh) * 2012-11-19 2014-05-28 中国电信股份有限公司 一种在分布式系统中生成唯一键的方法、装置及系统
CN103390038A (zh) * 2013-07-16 2013-11-13 西安交通大学 一种基于HBase的构建和检索增量索引的方法
CN104008212A (zh) * 2014-06-23 2014-08-27 中国科学院重庆绿色智能技术研究院 一种地理位置信息相关联的物联网时间序列数据存取方法
CN105446976A (zh) * 2014-06-25 2016-03-30 北大方正集团有限公司 业务表的处理方法及装置
CN107077476A (zh) * 2014-09-24 2017-08-18 甲骨文国际公司 利用动态类型的大数据对事件进行丰富以用于事件处理
CN104850611A (zh) * 2015-05-12 2015-08-19 浪潮集团有限公司 一种使用kettle从关系型数据库向非关系型数据库定时增量更新数据的方法
CN104951519A (zh) * 2015-06-04 2015-09-30 无锡天脉聚源传媒科技有限公司 一种生成序列号的方法及装置
CN106326374A (zh) * 2016-08-15 2017-01-11 北京集奥聚合科技有限公司 一种从HBase中增量抽取数据的方法及系统
CN110036382A (zh) * 2016-09-30 2019-07-19 易享信息技术有限公司 多租户非关系型平台对象
CN106777019A (zh) * 2016-12-08 2017-05-31 腾讯科技(深圳)有限公司 一种HBase系统的监控方法及监控服务器
CN107918671A (zh) * 2017-11-29 2018-04-17 郑州云海信息技术有限公司 全局序列号应用于分布式数据库中间件的方法
CN110147359A (zh) * 2017-12-13 2019-08-20 北京奇虎科技有限公司 一种增量生成方法、装置以及一种数据更新方法、装置
CN108959386A (zh) * 2018-05-31 2018-12-07 深圳壹账通智能科技有限公司 分布式全局唯一id生成方法、装置、设备和存储介质
CN108960672A (zh) * 2018-07-23 2018-12-07 广州唯品会信息科技有限公司 限额限次的风控方法、装置及计算机可读存储介质
CN109639775A (zh) * 2018-11-27 2019-04-16 湖南蚁为软件有限公司 全局单调递增id生成方法、装置、系统及设备
CN110457059A (zh) * 2019-06-28 2019-11-15 苏宁云计算有限公司 一种基于redis的序列号生成方法及装置
CN111104397A (zh) * 2019-11-19 2020-05-05 浙江工业大学 一种基于Flume的可配置数据集成方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
许鑫 ; 时雷 ; 何龙 ; 张浩 ; 马新明 ."基于NoSQL数据库的农田物联网云存储系统设计与实现".《农业工程学报》.2019,全文. *

Also Published As

Publication number Publication date
CN111625543A (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
CN107818115B (zh) 一种处理数据表的方法及装置
EP0303231B1 (en) Method and device for enabling concurrent access of indexed sequential data files
EP0362709A2 (en) Method for obtaining access to data structures without locking
CN111625543B (zh) 一种基于HBase表实现全局单调递增的序列的方法
CN105320775A (zh) 数据的存取方法和装置
CN104484471B (zh) 一种高性能数据存储引擎的实现方法
CN103229164B (zh) 数据访问方法和装置
CN112269786B (zh) 一种内存数据库kv存储引擎索引的创建方法
CN111611246B (zh) 一种基于持久性存储器优化b+树索引性能的方法和系统
Ramamohanarao et al. Recursive linear hashing
Kumar et al. Access methods for bi-temporal databases
CN109684327B (zh) 一种数据库外部链接的数据获取方法
CN111427885B (zh) 基于查找表的数据库管理方法和装置
CN115935020A (zh) 一种图数据存储方法和装置
Chien et al. A comparative study of version management schemes for XML documents
CN113742307B (zh) 一种基于值日志系统的二级索引的存储和查询方法及系统
CN114218277A (zh) 一种关系数据库的高效查询方法和装置
CN112463837B (zh) 一种关系型数据库数据存储查询方法
WO2022068289A1 (zh) 一种数据访问方法、装置、设备及计算机可读存储介质
CN114840561A (zh) 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质
JPH08235040A (ja) データファイル管理システム
CN111767436A (zh) 一种hash索引数据的存储、读取方法与系统
CN118394803B (zh) 一种存算分离数据库的缓存方法、装置、设备及介质
Huang et al. A Primer on Database Indexing
Omiecinski Concurrent file conversion between B+-tree and linear hash files

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
GR01 Patent grant
GR01 Patent grant