CN109815294B - 一种无主节点分布并行数据存储方法和系统 - Google Patents
一种无主节点分布并行数据存储方法和系统 Download PDFInfo
- Publication number
- CN109815294B CN109815294B CN201910114014.9A CN201910114014A CN109815294B CN 109815294 B CN109815294 B CN 109815294B CN 201910114014 A CN201910114014 A CN 201910114014A CN 109815294 B CN109815294 B CN 109815294B
- Authority
- CN
- China
- Prior art keywords
- nodes
- sql
- execution
- client
- group
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种无主节点分布并行数据存储方法和系统,包括:系统接收到多个SQL客户端连接时,按照负载均衡方法将SQL连接均匀分配至多个节点;连接SQL客户端后,接收SQL语句事务请求;对SQL语句进行语法分析并采用动态规划算法或者遗传算法生成最优执行计划;依据数据分布算法获取数据分布所有执行计划的节点,然后将执行计划传送到所有执行计划的节点进行计划执行;根据执行计划进行数据提取、处理、存储一系列事务活动,并返回结果;汇总所有的结果;通过Log传送的机制接收组内的心跳检测包和日志文件,在组内进行数据同步。本申请提供的方案基于指令迁移的方式能够达到高的事务吞吐量,同时所有节点均是主节点,不会因为个别节点的故障导致整个系统的不可用,实现多活,具有高可靠、并行计算和易扩展等优点。
Description
技术领域
本发明涉及对等数据存储领域,特别是涉及一种对等分布并行数据存储方法和系统。
背景技术
随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩大,分布式数据库的发展受到了广泛的关注和研究。
在企业数据越来越庞大,对数据库的性能要求也越来越高,单机数据库对大批量数据的处理存在一定的局限性:单机数据库容易产生容量和性能瓶颈,难以支持密集的并发读写;采用分区表方案,数据不能跨实例存储,扩展性和维护性较差。分布式数据库可以按照指定的分片规则,分布式存储到各个分片当中,能够实现读写分离,提高并发性能并且由于采用分布式存储,能够支持水平扩展存储空间。
但是,现有的分布式数据库中,节点之间的数据同步依靠数据的迁移,在数据库发生大量数据读写的情况下,网络中的传输数据量倍增,对网络的传输造成很大的压力。而且传统的分布式数据库采用一个主节点和多个副本节点的方式实现读写分离,通常主节点会成为系统的性能与扩展瓶颈,因为主节点难以扩展,系统的性能难以通过增加计算节点实现线性性能增长。
发明内容
本发明的目的是提供一种无主节点分布并行数据存储方法和系统,具有高可靠、并行计算和易扩展等优点,在减小传输数据量的同时,解决主节点难以扩展的问题,实现多活。
一种无主节点分布并行数据存储方法,系统由若干组组成,每个组包含若干对等节点:
系统接收到多个SQL客户端连接时,按照负载均衡方法将SQL连接均匀分配至多个节点;
所述节点连接SQL客户端后,接收SQL语句事务请求;
对所述SQL语句进行语法分析并采用动态规划算法或者遗传算法生成最优执行计划;
依据数据分布算法获取数据分布所有执行计划的节点,然后将所述执行计划传送到所述所有执行计划的节点进行计划执行;
根据所述执行计划进行数据提取、处理、存储一系列事务活动,并返回结果;
汇总所有的结果;
通过Log传送的机制接收组内的心跳检测包和日志文件,在组内进行数据同步。
进一步地,所述连接SQL客户端的方法,包括:
接收SQL客户端发送来的连接请求;
建立新的子SQL服务进程;
将所述连接请求重定向到所述子SQL服务进程;
接收所述SQL客户端发送来的开始消息;
验证所述开始消息是否合法,如果合法建立连接,如果不合法则丢弃该连接。
进一步地,所述开始消息包含登陆数据库用户信息、数据库信息、用户密码以及版本信息。
一种无主节点分布并行数据存储系统,由若干组组成,每个组包含若干对等节点,节点包括:
服务模块,用于连接SQL客户端接收SQL语句事务请求;
解析模块,用于对所述SQL语句进行语法分析并采用动态规划算法或者遗传算法生成最优执行计划;
路由模块,用于依据数据分布算法获取数据分布所有执行计划的节点,然后将所述执行计划传送到所述所有执行计划的节点的进行计划执行;
执行模块,用于根据所述执行计划进行数据提取、处理、存储一系列事务活动,并返回结果;
同步模块,用于通过Log传送的机制接收组内的心跳检测包和日志文件,在组内进行数据同步。
进一步地,每组的节点数量至少为2个,每组中的所有节点两两互为镜像。
进一步地,所述无主节点分布并行数据存储系统的节点,还包括子服务模块,用于接收所述SQL客户端发送来的开始消息,验证所述开始消息是否合法,如果合法建立连接,如果不合法则丢弃该连接。
进一步地,所述开始消息包含登陆数据库用户信息、数据库信息、用户密码以及版本信息。
上述方案在处理事务的过程中,不会存在大量的数据迁移情况,除了查询结果外,全是在迁移计算,即传送的为执行计划和日志,在大规模并行访问时,可以充分利用所有节点的计算和存储IO能力,达到高的事务吞吐量,同时因为无主节点,即所有节点均是主节点,所以不会因为个别节点的故障导致整个系统的不可用。
附图说明
图1为本发明的一种无主节点分布并行数据存储方法的流程图;
图2为本发明的与SQL客户端建立连接的过程图;
图3为本发明的一种无主节点分布并行数据存储系统的示意图。
具体实施方式
下面结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用于解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,本发明实施例中,术语“包括”、“包含”或者其任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者系统不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的方法或者系统中还存在另外的相关要素。
作为实现本发明实施例一种无主节点分布并行数据存储方法的一个可选实施例,图1为本发明实施例提供的一个可选的流程示意图,以下进一步说明。
系统接收到多个SQL客户端连接时,按照负载均衡方法将SQL连接均匀分配至多个节点。
步骤101:连接SQL客户端,接收SQL语句事务请求。
一个数据库节点可以同时处理多个SQL客户端的请求,每个SQL客户端与数据库节点的SQL服务进程进行连接的建立。SQL语句事务请求可以是SQL客户端的连接、SQL语句的解析、SQL语句的执行、其它节点的主操作处理等。
如图2所示,步骤101具体包括:
S1,接收SQL客户端发送来的连接请求。
SQL客户端向要连接的数据库节点的SQL服务进程发送connect消息。
S2,建立新的子SQL服务进程。
收到connect消息的SQL服务进程会fork出一个子SQL服务进程。
S3,将所述连接请求重定向到所述子SQL服务进程。
子SQL服务进程会继承和客户端的连接,并且会获取客户端的信息。
S4,接收所述SQL客户端发送来的开始消息。
SQL客户端在链接可用的时候,会发送startup消息,里面包含登陆数据库用户信息、数据库信息、用户密码以及版本信息。
S5,验证所述开始消息是否合法,如果合法建立连接,如果不合法则丢弃该连接。
子SQL服务进程会验证SQL客户端startup信息是否合法,如果合法会向SQL客户端回复take_me消息,表示同意SQL客户端的连接,此时SQL客户端与数据库节点的连接就已经建立。
当SQL客户端与数据库节点进行连接时,数据库节点均会有一个独立的子SQL服务进程与之建立通信连接,每次客户端要连接数据库节点时,客户端都是向主SQL服务进程发送连接请求,然后将连接通道重定向到fork出的子SQL服务进程,主SQL服务进程只负责连接的建立,而子SQL服务进程负责与客户端的实际交互,所以一个节点可以并行的进行多个SQL查询请求,所有的数据库节点的SQL服务进程是独立运行的,所有每个数据库节点均可以同时进行与客户端的连接来处理查询请求,不同于有主节点的架构,所有节点完全可以同时高并发的接受客户端的查询请求。
步骤102:将SQL语句解析转化成数据库最优的执行计划。
当收到事务时,会对SQL语句进行语法分析并采用动态规划算法或者遗传算法生成最优执行计划。
步骤103:接收所述执行计划,并依据数据分布算法获取数据分布所有的执行模块,然后将执行计划传送到对应的执行模块中。
步骤104:根据所述执行计划进行数据提取、处理、存储一系列事务活动,以完成整个执行过程。
步骤105:汇总结果。
步骤106:接收组内的心跳检测包和日志文件,在组内进行数据同步。
作为实现本发明实施例一种无主节点分布并行数据存储系统的一个可选实施例,图3为本发明实施例提供的一个可选的示意图。参照图3,本发明的无主节点分布并行数据存储系统分为若干组,每组的所述节点数量至少为2个,每组中的所有数据库节点两两互为镜像,在任何一个数据库节点上产生的数据均会通过Log传送的机制将元组日志发送到组内其他节点,组内其他节点完成该日志的redo操作,最终改组内所有节点上包含相同的数据。不同组的数据是按范围和哈希进行分布。
因为所有节点均由完整的一组服务进程组成,所以所有节点均可执行上述工作,事务具体由哪个节点执行,主要靠数据分布算法来均衡各节点负载,所以无主节点,所有节点均可以执行完整的事务,因为数据的均衡分布,所有节点的路由模块14都可能成为某一事务的主路由端完成事务的执行。SQL语句执行过程中,指令在主副本节点上执行,除了镜像节点间的日志传送和结果的返回,均不会有数据的迁移。因为只迁移计算,在大规模并行访问时,数据库可以充分利用所有数据库节点的计算和存储IO能力,达到高的事务吞吐量,同时因为无主节点,即所有节点均是主节点,所以不会因为个别节点的故障导致整个系统的不可用。
一个数据库节点内的进程可以并发执行,每个节点中的相同进程均具有相同的功能,所以相同角色的节点完全是对等的,每个数据库节点中单个服务进程在执行时,另外的服务进程可以同时执行其它的处理,即单数据库节点可以同时处理。
服务模块11,用于处理来自JDBC/ODBC或者其它客户端程序的SQL请求,每个数据库节点都有一个主SQL服务进程,每个连接都会fork一个子SQL服务进程提供服务,每个子服务进程管理每个客户端的连接和对应客户端的所有SQL语句处理。
当服务模块11与SQL客户端进行连接时,均会有一个独立的子服务模块16与之建立通信连接,每次客户端要连接时,客户端都是向服务模块11发送连接请求,然后将连接通道重定向到fork出的子服务模块16,服务模块11只负责连接的建立,而子服务模块16负责与客户端的实际交互,所以一个节点可以并行的进行多个SQL查询请求,所有的数据库节点的服务模块11是独立运行的,所有每个数据库节点均可以同时进行与客户端的连接来处理查询请求,不同于有主节点的架构,所有节点完全可以同时高并发的接受客户端的查询请求。
解析模块12,用于将用户的各种命令转化成数据库上中最优的执行计划。
执行模块13,用于根据执行计划进行数据提取、处理、存储一系列活动,以完成整个执行过程。
路由模块14,用于根据数据分布算法判断出相应的节点执行执行计划。
集群处理模块15,用于组内心跳检测以及LOG的传输,完成多节点事物同步、故障转移、选举节点等高可用功能。
Claims (8)
1.一种无主节点分布并行数据存储方法,系统由若干组组成,每个组包含若干对等节点:
系统接收到多个SQL客户端连接时,按照负载均衡方法将SQL连接均匀分配至多个节点;
所述节点连接SQL客户端后,接收SQL语句事务请求;
对所述SQL语句进行语法分析并采用动态规划算法或者遗传算法生成最优执行计划;
依据数据分布算法获取数据分布所有执行计划的节点,然后将所述执行计划传送到所述所有执行计划的节点进行计划执行;
根据所述执行计划进行数据提取、处理、存储一系列事务活动,并返回结果;
汇总所有的结果;
通过Log传送的机制接收组内的心跳检测包和日志文件,在组内进行数据同步。
2.如权利要求1所述的无主节点分布并行数据存储方法,其特征在于,所述若干组之间的数据是按范围和哈希进行分布。
3.如权利要求2所述的无主节点分布并行数据存储方法,其特征在于,所述连接SQL客户端的方法,包括:
接收SQL客户端发送来的连接请求;
建立新的子SQL服务进程;
将所述连接请求重定向到所述子SQL服务进程;
接收所述SQL客户端发送来的开始消息;
验证所述开始消息是否合法,如果合法建立连接,如果不合法则丢弃该连接。
4.如权利要求3所述的无主节点分布并行数据存储方法,其特征在于,所述开始消息包含登陆数据库用户信息、数据库信息、用户密码以及版本信息。
5.一种无主节点分布并行数据存储系统,由若干组组成,每个组包含若干对等节点,节点包括:
服务模块,用于连接SQL客户端接收SQL语句事务请求;
解析模块,用于对所述SQL语句进行语法分析并采用动态规划算法或者遗传算法生成最优执行计划;
路由模块,用于依据数据分布算法获取数据分布所有执行计划的节点,然后将所述执行计划传送到所述所有执行计划的节点的进行计划执行;
执行模块,用于根据所述执行计划进行数据提取、处理、存储一系列事务活动,并返回结果;
同步模块,用于通过Log传送的机制接收组内的心跳检测包和日志文件,在组内进行数据同步。
6.如权利要求5所述的无主节点分布并行数据存储系统,其特征在于,每组的节点数量至少为2个,每组中的所有节点两两互为镜像。
7.如权利要求6所述的无主节点分布并行数据存储系统,其特征在于,所述节点还包括子服务模块,用于接收所述SQL客户端发送来的开始消息,验证所述开始消息是否合法,如果合法建立连接,如果不合法则丢弃该连接。
8.如权利要求7所述的无主节点分布并行数据存储系统,其特征在于,所述开始消息包含登陆数据库用户信息、数据库信息、用户密码以及版本信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910114014.9A CN109815294B (zh) | 2019-02-14 | 2019-02-14 | 一种无主节点分布并行数据存储方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910114014.9A CN109815294B (zh) | 2019-02-14 | 2019-02-14 | 一种无主节点分布并行数据存储方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109815294A CN109815294A (zh) | 2019-05-28 |
CN109815294B true CN109815294B (zh) | 2019-12-20 |
Family
ID=66606609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910114014.9A Active CN109815294B (zh) | 2019-02-14 | 2019-02-14 | 一种无主节点分布并行数据存储方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109815294B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111125253A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种数据同步方法、装置、设备及存储介质 |
CN111984696B (zh) * | 2020-07-23 | 2023-11-10 | 深圳市赢时胜信息技术股份有限公司 | 一种新型数据库和方法 |
CN112328700A (zh) * | 2020-11-26 | 2021-02-05 | 北京海量数据技术股份有限公司 | 一种分布式数据库 |
CN112612851B (zh) * | 2020-12-24 | 2024-03-08 | 南京三眼精灵信息技术有限公司 | 多中心数据同步方法及装置 |
CN114143320A (zh) * | 2021-09-01 | 2022-03-04 | 浪潮云信息技术股份公司 | 一种基于分布式数据库的数据网关方法及系统 |
CN117909907B (zh) * | 2024-03-14 | 2024-07-30 | 宁德时代新能源科技股份有限公司 | 高通量计算平台及其异常排除方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080047162A (ko) * | 2006-11-24 | 2008-05-28 | 엔에이치엔(주) | P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법 |
CN101951395A (zh) * | 2010-08-30 | 2011-01-19 | 中国科学院声学研究所 | 一种基于访问预测的P2P VoD系统服务端的数据缓存策略 |
CN101997759A (zh) * | 2009-08-10 | 2011-03-30 | 中兴通讯股份有限公司 | 一种业务实现方法及业务系统 |
CN102752331A (zh) * | 2011-04-21 | 2012-10-24 | 中兴通讯股份有限公司 | 对等网络中实现策略控制的方法、资源控制代理及系统 |
CN103873501A (zh) * | 2012-12-12 | 2014-06-18 | 华中科技大学 | 一种云备份系统及其数据备份方法 |
-
2019
- 2019-02-14 CN CN201910114014.9A patent/CN109815294B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080047162A (ko) * | 2006-11-24 | 2008-05-28 | 엔에이치엔(주) | P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법 |
CN101997759A (zh) * | 2009-08-10 | 2011-03-30 | 中兴通讯股份有限公司 | 一种业务实现方法及业务系统 |
CN101951395A (zh) * | 2010-08-30 | 2011-01-19 | 中国科学院声学研究所 | 一种基于访问预测的P2P VoD系统服务端的数据缓存策略 |
CN102752331A (zh) * | 2011-04-21 | 2012-10-24 | 中兴通讯股份有限公司 | 对等网络中实现策略控制的方法、资源控制代理及系统 |
CN103873501A (zh) * | 2012-12-12 | 2014-06-18 | 华中科技大学 | 一种云备份系统及其数据备份方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109815294A (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815294B (zh) | 一种无主节点分布并行数据存储方法和系统 | |
US20180189328A1 (en) | Method and system for providing data access and local processing across disparate data systems | |
US9590915B2 (en) | Transmission of Map/Reduce data in a data center | |
CN101707543B (zh) | 一种支持多任务类型的企业媒体总线系统和方法 | |
US9727590B2 (en) | Data management and indexing across a distributed database | |
KR101719936B1 (ko) | 검색가능한 데이터 서비스를 위한 방법 및 장치 | |
CN110213352B (zh) | 名字空间统一的分散自治存储资源聚合方法 | |
CN110009201B (zh) | 一种基于区块链技术的电力数据链接系统及方法 | |
WO2021143462A1 (zh) | 基于前置机进行数据交换的系统及方法 | |
CN113407600B (zh) | 一种动态实时同步多源大表数据的增强实时计算方法 | |
CN111416875A (zh) | 一种面向云边协同的服务目录同步方法及系统 | |
CN111949726A (zh) | 一种基于区块链的关系型数据库同步方法及同步系统 | |
US7694012B1 (en) | System and method for routing data | |
US20220318265A1 (en) | System And Method For Switching From Consistent Database To An Eventual Consistent Database Replica In Real Time While Preventing Reads Of Past Versions Of The Data | |
CN115811546A (zh) | 用于科技服务实现网络协同分布式处理的系统及其方法 | |
CN110555064A (zh) | 用于保险业务的数据服务系统及方法 | |
Vallath | Oracle real application clusters | |
CN102055779A (zh) | 生成高可用性组的方法、设备及系统 | |
EP3349416B1 (en) | Relationship chain processing method and system, and storage medium | |
CN111831743B (zh) | 基于云存储的区块链数据存储系统及方法 | |
US11169728B2 (en) | Replication configuration for multiple heterogeneous data stores | |
CN107330089B (zh) | 跨网络结构化数据收集系统 | |
CN112131229A (zh) | 基于区块链的分布式数据存取方法、装置及存储节点 | |
CN111385347A (zh) | 一种基于token+lua实现的业务系统路由方法 | |
US11947555B1 (en) | Intelligent query routing across shards of scalable database tables |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100193 2nd Floor 201, Block B, Building 12, East 10 Wangdong Road, Northwest Haidian District, Beijing Patentee after: Beijing Gushu Polytron Technologies Inc Address before: 100193 2nd Floor 201, Block B, Building 12, East 10 Wangdong Road, Northwest Haidian District, Beijing Patentee before: BEIJING GUSHU TECHNOLOGY Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |