暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
一种分布式数据库中针对序列的处理方法、装置及系统_CN116303661B_北京万里开源软件有限公司.pdf
46
21页
0次
2024-04-25
免费下载
(19)国家知识产权局
(12)发明专利
(10)授权公告号
(45)授权公告日
(21)申请号 202310041225 .0
(22)申请日 2023 .01 .12
(65)同一申请的已公布的文献号
申请公布号 CN 116303661 A
(43)申请公布日 2023 .06 .23
(73)专利权人 北京万里开源软件有限公司
地址 100000 北京市丰台区海鹰路6号院9
号楼3层3107
(72)发明人 娄帅 卢浩 
(74)专利代理机构 北京冠和权律师事务所
11399
专利代理师 刘艳霞
(51)Int.Cl .
G06F
16/2458
(2019 .01)
G06F
16/2455
(2019 .01)
G06F
16/2453
(2019 .01)
G06F
16/27
(2019 .01)
G06F
9/52
(2006 .01)
(56)对比文件
WO 2022002044 A1 ,2022 .01 .06
US 2018322156 A1 ,2018 .11 .08
CN 111796772 A,2020 .10 .20
CN 111752945 A ,2020 .10.09
CN 111427966 A ,2020 .07 .17
CN 113392126 A ,2021 .09.14
审查员 胡武扬
(54)发明名称
一种分布式数据库中针对序列的处理方法
装置及系统
(57)摘要
本发明公开了分布式数据库中针对序列的
处理方法装置及系统其中处理方法包括接收
序列值获取请求对序列对象元数据进行存储及
缓存处理对序列对象值进行存取及持久化处
对序列对象值进行缓存预分配及缓存加速
处理对本地序列进行缓存并发访问控制处理
以及全局保序控制处理以及对序列对象版本进
行检查本方案可以提高分布式数据库系统生成
序列值的效率并且在严格模式下保证分布式
数据库系统生成全局保序的序列值
权利要求书3页 说明书13页 附图4页
CN 116303661 B
2023.09.12
CN 116303661 B
1 .一种分布式数据库中针对序列的处理方法其特征在于包括
S100接收序列值获取请求
S200对序列对象元数据进行存储及缓存处理
S300对序列对象值进行存取及持久化处理
S400对序列对象值进行缓存、预分配及缓存加速处理
S500对本地序列进行缓存并发访问控制处理以及全局保序控制处理以及对序列对
象版本进行检查
所述S500中对本地序列进行缓存并发访问控制处理包括
S501计算节点的序列对象缓存使用读写锁实现缓存对象的保护并提供并发访问
当创建删除序列对象时获取写锁并对缓存内的条目进行增删SQL语句parse阶段查
询、获取序列值修改序列对象操作时只对序列对象缓存使用读锁
S502每个序列对象的缓存条目内部包含一个互斥锁用于获取序列值修改序列对象
的并发控制通过二级加锁模式减少锁等待提高并发处理能力
所述S500中全局保序控制处理包括
S503全局保序作为序列的属性在创建序列时被指定
S504当指定全局属性后预分配数值区间时被强制分配一个可用数值该数值被消费
新的序列请求到来时重新进行一次预分配流程并强制读最新的当前值的操作
所述S500中对序列对象版本进行检查包括
S505序列对象在创建时为其分配一个初始版本号默认值为0
S506每次修改该序列的属性成功后对其版本号+1当需要检查序列版本时访问序
列对象时记录序列当前的版本在下次访问时检查当前序列对象版本号是否与上次访问
的版本号一致
2.根据权利要求1所述的分布式数据库中针对序列的处理方法其特征在于所述S100
包括
S101序列值获取请求包含在SQL语句中根据需返回的行数确定需要的序列值个数
S102当单并发获取单个序列值时不考虑并发问题
S103当本地多并发获取序列值时按请求的目标序列对象进行分组如存在对某个序
列对象的多个并发请求对该序列上的多个并发请求做互斥排队等待处理
S104当分布式数据库系统的多个节点同时接收序列值获取请求时各个节点生成的
序列值是全局唯一当创建序列对象时设置了保序属性时各个节点按照全局单调递增保
序。
3 .根据权利要求1所述的分布式数据库中针对序列的处理方法其特征在于所述S200
包括
S201每个计算节点包含一份记录序列对象的元数据定义和对应的元数据定义缓存
序列对象在创建时通过分布式数据库内部的同步机制将序列对象的DDL定义同步到各个计
算节点其它计算节点收到创建序列的消息后以slave角色在内部执行一次序列对象
并保存一份该对象的定义同时加载到序列对象缓存
S202序列对象缓存用于语句的解析参与判断语句中的序列值请求是否合法并提供
访问加速请求访问数据库序列对象时直接检查该对象是否存在于序列对象缓存中
权 利 要 求 书
1/3
2
CN 116303661 B
2
S203分布式数据库的计算节点在启动时访问序列对象的持久化元数据记录并将其
加载到数据库对象缓存在计算节点提供服务期间序列对象缓存内某个序列的生命周期
与该序列对象的生命周期一致直至删除序列对象
4 .根据权利要求1所述的分布式数据库中针对序列的处理方法其特征在于所述S300
包括
S301序列对象的当前值存储并持久化在后端存储节点访问或修改序列当前值时
过元数据路由信息定位到后端存储节点
S302根据访问请求的类型对存储序列当前值的持久化内容加共享读锁或互斥写锁的
同步原语访问请求的类型包括读取或修改
S303后端存储节点支持以序列对象为粒度多个计算节点对此持久化记录的并发访
问控制实现方式包括读写锁数据库表内记录的行锁
5 .根据权利要求1所述的分布式数据库中针对序列的处理方法其特征在于所述S400
包括
S401序列值缓存与序列对象相对应每个序列对象均对应一条序列值缓存记录两者
缓存储在各个计算节点的数据库实例的内存
S402序列值缓存采用预分配的方式从序列的合法值区间中设置一段独占的数值空间
供当前节点独占使用一旦某段数值空间被设置并赋给某个计算节点则其他计算节点无
法再使用该数值空间若计算节点的数据库实例关闭或异常崩溃序列值缓存中剩余未使
用的预分配数值将被丢弃
S403计算节点的序列值缓存中记录预分配数值区间数值区间中尚未使用的值以
辅助判断状态的标记状态标记为STATUS_READY直接检查预分配数值区间是否有可用值
如果有可用值则直接使用该值作为本次序列请求的返回值并对应修改数值区间中尚未使
用的值如果无可用值则预分配一段新的数值区间
6 .一种分布式数据库中针对序列的处理系统其特征在于包括
序列操作语法解析模块用于解析创建删除修改序列的SQL语解析获取序列的
SQL请求解析数据库序列的运维语句
序列操作执行模块用于对分布式数据库系统的主要逻辑进行控制
序列对象元数据管理模块用于序列对象元数据信息的持久化和加载在计算节点数
据库实例启动期间读取所有的序列对象持久化信息加载到序列对象缓存保证序列对象
元数据信息和序列对象缓存的一致性在计算节点数据库实例运行期间为创建修改
除序列对象提供元数据信息的持久化接口
序列对象MDL锁模块用于querydml语句和ddl语句间ddl和ddl语句间的并发访问控
存储节点连接管理及访问模块用于承载计算节点和存储节点间的通讯请求内部记
录存储节点的路由信息按照特定的通信协议进行通讯
存储节点序列当前值持久化存储模块用于持久化序列对象的当前值
7 .根据权利要求6所述的分布式数据库中针对序列的处理系统其特征在于所述序列
操作执行模块包括
创建请求子模块用于输入语句是序列的创建请求时访问本地的序列对象缓存检查
权 利 要 求 书
2/3
3
CN 116303661 B
3
of 21
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。