CN116644086B - 一种基于SST的Insert SQL语句实现方法 - Google Patents
一种基于SST的Insert SQL语句实现方法 Download PDFInfo
- Publication number
- CN116644086B CN116644086B CN202310587092.7A CN202310587092A CN116644086B CN 116644086 B CN116644086 B CN 116644086B CN 202310587092 A CN202310587092 A CN 202310587092A CN 116644086 B CN116644086 B CN 116644086B
- Authority
- CN
- China
- Prior art keywords
- data
- service
- sst
- writer
- save
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000008520 organization Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 claims description 5
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 230000002457 bidirectional effect Effects 0.000 claims description 2
- 239000000758 substrate Substances 0.000 claims 2
- 238000005192 partition Methods 0.000 abstract 2
- 238000006243 chemical reaction Methods 0.000 abstract 1
- 238000013500 data storage Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于SST的Insert SQL语句实现方法,属于数据库技术领域,本发明主要解决insert语句小批量数据持续写入场景。通过预先分配固定数量的range数据分区,不同分区写入不同的数据节点,在数据节点上,接收到数据后,本地数据攒批,达到一定数量后,内存中生成SST文件,之后异步的将生成的SST直接调用本地的rocksdb接口,直接落入到rocksdb存储的L0层,减少了中间的数据拷贝和转换,提高insert语句的热点写入性能,同时也避免的rocksdb的flush写失速场景的出现。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种基于SST的Insert SQL语句实现方法。
背景技术
数据库中现有数据写入方式主要有两种,数据导入和数据动态的insert写入,当用户数据是大批量同时到来或者是历史数据,可以使用数据导入方式入库,这种方式往往需要用户先将需要入库的数据生成对应的物理文件,存放到对应磁盘路径,由加载工具去读取数据,并批量加载的数据库的存储引擎,加载工具的启动关闭的开销都比较大,属于比较重的数据写入方式,但当用户数据是小批量动态到来时,就需要用到insert sql语句方式进行数据写入,用户可以将要写入的数据动态的拼接为一条insert sql语句,带有多条要写入的数据行,在经过parser和校验后,启动执行引擎,将insert sql语句要写入的数据行拼接为batch请求,之后由分布式层将请求拆分到不同节点,由节点的存储引擎,拆分为一条条数据行后,写入实际的SST存储文件,相比加载方式提高实时性,减少加载启动的开销,但在实际使用时,当用户的数据产生热点时,大量的数据行集中在少量或者某个节点的存储引擎后,会导致存储引擎在解析数据行,做数据顺序写入到存储文件时出现拥塞现象导致整条insert语句执行卡住,多条insert语句排队现象。因此需要一种新的insert方式,解决这种多表持续小批量写入场景,可以有限的降低单条insert语句的性能,但在一定时长的统计周期内,整体的insert语句性能是明显提升的。
发明内容
为了解决以上技术问题,本发明提供了一种基于SST的Insert SQL语句实现方法。
本发明的技术方案是:
一种基于SST的Insert SQL语句实现装置,为每条insert sql语句单独创建对应的scheduler服务,并按照数据分片创建对应的writer服务,并双向注册到scheduler服务和SST-save服务中,由scheduler服务统一调度,多条语句统一由节点级别的SST-save进行统一汇总,并通过副本层批量落盘。
进一步的,
writer服务由数据接收服务,数据组织服务,通知服务以及数据缓存服务组成;
SST-save服务接收writer服务通知进行数据提取落盘,同时能主动触发writer服务强制进行数据流转;
当writer服务创建后,双向注册到scheduler服务和SST-save服务中,接受双向调度管理。
通过为每个表在每个节点建立一个公用的writer服务,进行数据临时攒批,在合理的时间或者数据量的阈值控制下,统一直接生成存储引擎使用的SST文件,数据由节点统一的SSTWriter服务进行统一调度落盘,并释放成功信号,让参与攒批的语句都返回用户成功标记,通过节点的表级的统一赞批处理,并且统一落盘,减少的执行中的处理冲突,也减少了存储的写入冲突,提高了小批量频繁写入场景的写入性能。
再进一步的,
通过为每个表在每个节点建立一个公用的writer服务,进行数据临时攒批,在阈值控制下,统一直接生成存储引擎使用的SST文件,数据由节点统一的SSTWriter服务进行统一调度落盘,并释放成功信号,让参与攒批的语句都返回用户成功标记,通过节点的表级的统一赞批处理,并且统一落盘,减少的执行中的处理冲突,减少存储的写入冲突。
再进一步的,
scheduler服务是insert sql语句接入集群节点数据路由服务,负责按照表的range分布合并成节点分布图,按照从insert sql语句解析到的数据键值路由对应数据到对应集群节点,writer为节点的表的range级别数据行接收拼接服务,其中包括数据接收服务负责接收scheduler服务路由过来的数据。
数据组织服务负责将接收到的数据按照数据特征和SST文件组织格式,在内存中拼接SST内存数据块,同时writer也接收SST-save的通知状态,来决定是否临时终止当前SST内存数据块拼装,强制将不满的SST数据块提前加入缓存。
数据缓存服务负责将拼接完成的SST数据块临时缓存,标记为只读状态,并通知SST-save进行落盘;
SST-save服务负责将一段时间接收到的通知的SST数据块按照表的本地range进行整合为一个大的SST内存文件,将每个sst数据块封装成raft日志格式发送给副本层,这里复用了副本层的高可用机制,同时将数据按照执行顺序写入到实际存储;数据实际完成写入后,SST-save服务会等待写入成功信号,并返回给对应的writer,writer之后会通知对应的scheduler,当本次insert sql语句对应的数据都写入到存储后,并拿到了左右数据的写入成功信号,那么本次insert sql语句的执行就可以返回给用户成功。
另外当SST-save处于空闲状态时,会通知对应的writer服务需要进行强制数据下推,减少磁盘的等待。
Insert sql语句执行完成后,退出流程,由scheduler先接收到表删除或者***退出信号,其通知对应的writer退出,并等待writer正在进行的数据写入操作停止后并通知节点的SST-save服务取消注册,并返回对应的完成对出信号后,清楚对应的注册信息,再进行scheduler自身退出。
SST-save服务常驻内存,接收writer服务的注册和取消注册;
Insert sql语句执行初始化,语句在生成对应的物理计划后会进行执行前的准备,第一步判断本次insert ***的数据量,如果大于阈值,则进入本装置执行流程,首先开始当前语句的scheduler服务启动,并根据当前表数据分布,构造writer创建命令下发给对应节点的分布式服务,创建对应的writer服务,writer服务启动后,会向本地的SST-save进行注册,完成本装置执行框架的创建,Insert sql语句执行初始化也完成。
本发明的有益效果是
1、本发明提出的方法可以解决小批量数据频繁写入场景数据批量落盘,增加吞吐量需求。
2、本发明提出为写入节点按照数据切片单独创建writer服务,同时writer服务自动注册到统一的落盘服务,由writer服务串联上层的scheduler服务。
3、本发明提出的新增SST-save,汇总多条insert语句的写入请求,统一落盘,减少执行排队,资源争抢。
4、本发明提出的SST-save空闲状态,主动通知注册的writer进行强制推送数据,可以更加有效的利用资源。
附图说明
图1是Insert sql执行整体结构图;
图2是writer和SST-Save双向注册通知交互示意图。
实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种基于SST的insert sql语句实现装置,解决小批量频繁写入场景吞吐量不足。
实现构架如图1所示,scheduler是insert sql语句接入集群节点数据路由服务,负责按照表的range分布合并成节点分布图,按照从insert sql语句解析到的数据键值路由对应数据到对应集群节点,writer为节点的表的range级别数据行接收拼接服务,其中包括数据接收服务负责接收scheduler服务路由过来的数据。数据组织服务负责将接收到的数据按照数据特征和SST文件组织格式,在内存中拼接SST内存数据块,同时writer也接收SST-save的通知状态,来决定是否临时终止当前SST内存数据块拼装,强制将不满的SST数据块提前加入缓存。数据缓存服务,负责将拼接完成的SST数据块临时缓存,标记为只读状态,并通知SST-save进行落盘。SST-save服务负责将一段时间接收到的通知的SST数据块按照表的本地range进行整合为一个大的SST内存文件,将每个sst数据块封装成raft日志格式发送给副本层,这里复用了副本层的高可用机制,同时将数据按照执行顺序写入到实际存储。数据实际完成写入后,SST-save服务会等待写入成功信号,并返回给对应的writer,writer之后会通知对应的scheduler,当本次insert sql语句对应的数据都写入到存储后,并拿到了左右数据的写入成功信号,那么本次insert sql语句的执行就可以返回给用户成功。另外当SST-save处于空闲状态时,会通知对应的writer服务需要进行强制数据下推,减少磁盘的等待。
Insert sql语句执行完成后,退出流程,由scheduler先接收到表删除或者***退出信号,其通知对应的writer退出,并等待writer正在进行的数据写入操作停止后并通知节点的SST-save服务取消注册,并返回对应的完成对出信号后,清楚对应的注册信息,再进行scheduler自身退出。
SST-save服务常驻内存,接收writer服务的注册和取消注册。
Insert sql语句执行初始化,语句在生成对应的物理计划后会进行执行前的准备,第一步判断本次insert ***的数据量,如果大于阈值,则进入本装置执行流程,首先开始当前语句的scheduler服务启动,并根据当前表数据分布,构造writer创建命令下发给对应节点的分布式服务,创建对应的writer服务,writer服务启动后,会向本地的SST-save进行注册,完成本装置执行框架的创建,Insert sql语句执行初始化也完成。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (5)
1.一种基于SST的Insert SQL语句实现方法,其特征在于,
为每条insert sql语句单独创建对应的scheduler服务,并按照数据分片创建对应的writer服务,并双向注册到scheduler服务和SST-save服务中,由scheduler服务统一调度,数条语句统一由节点级别的SST-save进行统一汇总,并通过副本层批量落盘;
writer服务由数据接收服务,数据组织服务,通知服务以及数据缓存服务组成;
SST-save服务接收writer服务通知进行数据提取落盘,同时能主动触发writer服务强制进行数据流转;
当writer服务创建后,双向注册到scheduler服务和SST-save服务中,接受双向调度管理;
Scheduler服务是insert sql语句接入集群节点数据路由服务,负责按照表的range分布合并成节点分布图,按照从insert sql语句解析到的数据键值路由对应数据到对应集群节点,writer为节点的表的range级别数据行接收拼接服务,其中包括数据接收服务负责接收scheduler服务路由过来的数据;
数据组织服务负责将接收到的数据按照数据特征和SST文件组织格式,在内存中拼接SST内存数据块,同时writer也接收SST-save的通知状态,来决定是否临时终止当前SST内存数据块拼装,强制将不满的SST数据块提前加入缓存;
数据缓存服务负责将拼接完成的SST数据块临时缓存,标记为只读状态,并通知SST-save进行落盘;
SST-save服务负责将一段时间接收到的通知的SST数据块按照表的本地range进行整合为一个大的SST内存文件,将每个SST数据块封装成raft日志格式发送给副本层,这里复用了副本层的高可用机制,同时将数据按照执行顺序写入到实际存储;数据实际完成写入后,SST-save服务会等待写入成功信号,并返回给对应的writer,writer之后会通知对应的scheduler,当本次insert sql语句对应的数据都写入到存储后,并拿到了左右数据的写入成功信号,那么本次insert sql语句的执行就返回给用户成功。
2.根据权利要求1所述的方法,其特征在于,
通过为每个表在每个节点建立一个公用的writer服务,进行数据临时攒批,在阈值控制下,统一直接生成存储引擎使用的SST文件,数据由节点统一的SSTWriter服务进行统一调度落盘,并释放成功信号,让参与攒批的语句都返回用户成功标记,通过节点的表级的统一攒批处理,并且统一落盘,减少执行中的处理冲突,减少存储的写入冲突。
3.根据权利要求1所述的方法,其特征在于,
另外当SST-save处于空闲状态时,会通知对应的writer服务需要进行强制数据下推,减少磁盘的等待。
4.根据权利要求3所述的方法,其特征在于,
Insert sql语句执行完成后,退出流程,由scheduler先接收到表删除或者***退出信号,其通知对应的writer退出,并等待writer正在进行的数据写入操作停止后并通知节点的SST-save服务取消注册,并返回对应的完成对出信号后,清楚对应的注册信息,再进行scheduler自身退出。
5.根据权利要求4所述的方法,其特征在于,
SST-save服务常驻内存,接收writer服务的注册和取消注册;
Insert sql语句执行初始化,语句在生成对应的物理计划后会进行执行前的准备,第一步判断本次insert ***的数据量,如果大于阈值,则进入本装置执行流程,首先开始当前语句的scheduler服务启动,并根据当前表数据分布,构造writer创建命令下发给对应节点的分布式服务,创建对应的writer服务,writer服务启动后,会向本地的SST-save进行注册,完成本装置执行框架的创建,Insert sql语句执行初始化也完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310587092.7A CN116644086B (zh) | 2023-05-24 | 2023-05-24 | 一种基于SST的Insert SQL语句实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310587092.7A CN116644086B (zh) | 2023-05-24 | 2023-05-24 | 一种基于SST的Insert SQL语句实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116644086A CN116644086A (zh) | 2023-08-25 |
CN116644086B true CN116644086B (zh) | 2024-02-20 |
Family
ID=87618172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310587092.7A Active CN116644086B (zh) | 2023-05-24 | 2023-05-24 | 一种基于SST的Insert SQL语句实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116644086B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646051A (zh) * | 2013-11-27 | 2014-03-19 | 武汉邮电科学研究院 | 一种基于列存储的大数据并行处理***及方法 |
WO2016078423A1 (zh) * | 2014-11-17 | 2016-05-26 | 中兴通讯股份有限公司 | 分布式数据库***的事务处理方法及装置 |
CN109522053A (zh) * | 2017-09-20 | 2019-03-26 | 阿里巴巴集团控股有限公司 | 一种大规模并行处理***及数据处理方法 |
KR20200092095A (ko) * | 2019-01-24 | 2020-08-03 | 주식회사 웨어밸리 | 관계형 데이터베이스의 DML문장을 NoSQL 데이터베이스로 동기화하기 위한 트랜잭션 제어 방법 |
CN112328700A (zh) * | 2020-11-26 | 2021-02-05 | 北京海量数据技术股份有限公司 | 一种分布式数据库 |
CN112667644A (zh) * | 2021-01-20 | 2021-04-16 | 浪潮云信息技术股份公司 | 一种混合索引内存数据库存储引擎管理方法 |
CN114415976A (zh) * | 2022-03-28 | 2022-04-29 | 深圳市杉岩数据技术有限公司 | 一种分布式数据存储***与方法 |
WO2022127866A1 (zh) * | 2020-12-17 | 2022-06-23 | 中兴通讯股份有限公司 | 数据处理方法、装置、电子设备、存储介质 |
CN115934748A (zh) * | 2022-11-07 | 2023-04-07 | 浪潮软件集团有限公司 | 一种基于分布式SQL的开关分发与metrics采集汇总***及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220232423A1 (en) * | 2022-03-25 | 2022-07-21 | Intel Corporation | Edge computing over disaggregated radio access network functions |
-
2023
- 2023-05-24 CN CN202310587092.7A patent/CN116644086B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646051A (zh) * | 2013-11-27 | 2014-03-19 | 武汉邮电科学研究院 | 一种基于列存储的大数据并行处理***及方法 |
WO2016078423A1 (zh) * | 2014-11-17 | 2016-05-26 | 中兴通讯股份有限公司 | 分布式数据库***的事务处理方法及装置 |
CN109522053A (zh) * | 2017-09-20 | 2019-03-26 | 阿里巴巴集团控股有限公司 | 一种大规模并行处理***及数据处理方法 |
KR20200092095A (ko) * | 2019-01-24 | 2020-08-03 | 주식회사 웨어밸리 | 관계형 데이터베이스의 DML문장을 NoSQL 데이터베이스로 동기화하기 위한 트랜잭션 제어 방법 |
CN112328700A (zh) * | 2020-11-26 | 2021-02-05 | 北京海量数据技术股份有限公司 | 一种分布式数据库 |
WO2022127866A1 (zh) * | 2020-12-17 | 2022-06-23 | 中兴通讯股份有限公司 | 数据处理方法、装置、电子设备、存储介质 |
CN112667644A (zh) * | 2021-01-20 | 2021-04-16 | 浪潮云信息技术股份公司 | 一种混合索引内存数据库存储引擎管理方法 |
CN114415976A (zh) * | 2022-03-28 | 2022-04-29 | 深圳市杉岩数据技术有限公司 | 一种分布式数据存储***与方法 |
CN115934748A (zh) * | 2022-11-07 | 2023-04-07 | 浪潮软件集团有限公司 | 一种基于分布式SQL的开关分发与metrics采集汇总***及方法 |
Non-Patent Citations (3)
Title |
---|
STAR: SQL Guided Pre-Training for Context-dependent Text-to-SQL Parsing;Zefeng Cai等;《arXiv》;第1-13页 * |
基于KVM云计算平台的分布式关系型数据库的设计与实现;曹野;《中国优秀硕士学位论文全文数据库信息科技辑》(第01期);第I138-814页 * |
基于融合数据库的海量传感器信息存储架构;类兴邦等;《计算机科学》;43(06);第68-71+111页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116644086A (zh) | 2023-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220405284A1 (en) | Geo-scale analytics with bandwidth and regulatory constraints | |
CN107483631B (zh) | 一种控制缓存实现移动互联网络服务访问的方法 | |
CN111858759A (zh) | 一种基于共识算法的htap数据库 | |
US20240061712A1 (en) | Method, apparatus, and system for creating training task on ai training platform, and medium | |
CN103631931A (zh) | 一种数据分级存储方法及*** | |
CN101778400B (zh) | 基于数据库的话务量分析与预测***及使用该***的话务量预测方法 | |
CN111522870B (zh) | 数据库访问方法、中间件和可读存储介质 | |
CN109885642A (zh) | 面向全文检索的分级存储方法及装置 | |
CN114942965B (zh) | 一种数据库主备同步操作的加速方法和*** | |
CN116108057A (zh) | 一种分布式数据库访问方法、装置、设备及存储介质 | |
CN115587118A (zh) | 任务数据的维表关联处理方法及装置、电子设备 | |
JPH09171477A (ja) | データベースを構成する方法及び装置 | |
TW201721471A (zh) | 資料庫操作方法及裝置 | |
CN116644086B (zh) | 一种基于SST的Insert SQL语句实现方法 | |
CN109189343B (zh) | 一种元数据落盘方法、装置、设备及计算机可读存储介质 | |
CN112650736B (zh) | 一种数据迁移方法及装置 | |
CN117609181A (zh) | 一种用于TChouse数据库迁移方法和*** | |
CN113127462A (zh) | 一种基于生命周期管理的一体化大数据管理平台 | |
CN116628023A (zh) | 等待事件类型查询方法、装置、存储介质和电子设备 | |
CN116244610A (zh) | 一种基于机器学习的分布式查询***及其优化方法 | |
CN116775665B (zh) | 一种基于高速公路日常运维管理的全自动任务发布*** | |
US20070276873A1 (en) | System and method for optimizing efficiency of replicated network services | |
CN118153649B (zh) | 集成大模型训练与推理的软硬一体机和大模型训练方法 | |
CN115396447A (zh) | 一种分布式数据库的负载均衡方法、装置、设备及介质 | |
CN117032950A (zh) | 基于日志的实时数据透传方法及*** |
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 |