CN115329010A - 一种分布式关系型数据库的数据处理方法 - Google Patents
一种分布式关系型数据库的数据处理方法 Download PDFInfo
- Publication number
- CN115329010A CN115329010A CN202211237201.4A CN202211237201A CN115329010A CN 115329010 A CN115329010 A CN 115329010A CN 202211237201 A CN202211237201 A CN 202211237201A CN 115329010 A CN115329010 A CN 115329010A
- Authority
- CN
- China
- Prior art keywords
- data
- area
- areas
- aggregate
- database
- 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.)
- Granted
Links
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- 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/21—Design, administration or maintenance of databases
-
- 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
- G06F16/2246—Trees, e.g. B+trees
-
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- 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/23—Updating
- G06F16/235—Update request formulation
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式关系型数据库的数据处理方法,包括根据业务需求为不同的组件定义不同的具备寻址标识的数据片区,当组件部署时新建和运行其对应数据片区,数据片区为对应组件提供数据存储服务;把新建的数据片区的标识和容器地址注册到数据库管理中心,数据库管理中心注册信息发给所有数据片区,其它数据片区根据数据片区的标识和容器地址访问新建的所述数据片区,使得数据片区之间数据相互传输;可以把各聚合体的数据就近放置在计算端,从而加快数据处理效率。创建数据库的操作指令,对所述聚合体进行相关操作。通过提供对数据库内聚合体的操作指令,无需编写复杂的SQL语句,实现各种业务需求,大大简化了编程难度。
Description
技术领域
本发明属于数据库技术领域,具体涉及一种分布式关系型数据库的数据处理方法。
背景技术
随着数字经济成为大战略,目前正在大力推进城市数字化、企业数字化。云计算、大数据、人工智能等技术是支撑数字经济的重要支柱。而分布式数据库则是云计算、大数据、人工智能最重要的基础设施,负责存储、传输海量的业务数据。
当前市场上分布式数据库分为两大类:关系型数据库、非关系型数据库。分布式关系数据库主流产品有:PostgreSQL、CockroachDB等;非关系型数据库主流产品有:MongoDB、Redis、ScyllaDB等。关系型数据库适合存储结构化数据,便于事务操作,实现复杂查询。非关系型数据则适合非结构化数据,扩展性好。
从分布式的实现模式上有两大类技术类型:主副本模式、多活模式。主副本模式数据库有:PostgreSQL、MongoDB、Redis等;多活模式数据库有:CockroachDB、ScyllaDB等。主副本模式,存在一个可写入的主节点,多个可读的副节点。多活模式则是每个节点对等,都可以接受数据的读写。
现在几个主流的分布式数据库存在以下缺点:
不支持树形结构的多表格聚合体。虽然支持表格之间一对多的关联,但没有明确表格之间的父子关系。而现实场景中,很多表格都存在固定的父子关系形成一个聚合体。现有的各种分布式数据库,没有提供操作聚合体的指令,对于这一类聚合体的关联操作都需要较多指令和步骤,非常复杂。数据片区之间不能按指令实现数据交换。数据一旦确定片区,则不可移动,数据不能按业务需求自由的复制和传输。在很多业务场景,为了满足不同片区的使用者共享数据,需要片区之间根据业务需求通过指令实现数据传输和共享。数据记录没有版本控制。在有些业务场景,需要对已经持久化的数据实现回滚。此时数据记录必须要保存多版本的数据,回滚时把上一版本数据恢复即可。如果没有版本控制功能,只能由业务层去存储原有数据,回滚时回填该数据,处理特别麻烦。另外,在片区之间数据传输时,可以通过版本识别防止数据的竞争,也可以防止数据的重复传输。数据库不能同时部署在云端、边沿端和终端。现有分布式数据库由于不能实现数据分片之间数据交换,也没有对云端、边沿端和终端的不同硬件特点适配数据库的兼容,无法同时部署到云端、边沿端和终端。不能兼顾数据强一致性和弱一致性的需求。现有分布式数据库各分片共享数据要么是强一致性的,要么是弱一致性的。而不能根据业务场景,既可以设定为强一致性,也可以设定为弱一致性。实现强一致性时效率较低。现有分布式数据库为了实现数据的有效性,在具有强一致性的数据分片处理过程中,一定当所有数据分片的数据全部一致后,该数据才允许被读取,从而造成时间延迟较大。
发明内容
本发明的目的是提供一种分布式关系型数据库的数据处理方法,用以解决分布式关系型数据库开发效率低的问题。
为了实现上述目的,本发明采用以下技术方案:
一种分布式关系型数据库的数据处理方法,包括以下步骤:
根据业务需求为不同的组件定义不同的具备寻址标识的数据片区,当组件部署时新建和运行其对应数据片区,数据片区为对应组件提供数据存储服务;
所述数据片区的定义包括:
每个数据片区在部署前,利用相关开发工具,根据业务需求定义对应数据片区内部各聚合体的数据结构;
每个聚合体由一个根表格和多层级若干子表格组成一棵表格树,表格树中的每个表格都定义了数据片区相关信息;
数据片区的新建和注册:
根据业务需求在指定的容器里新建具有唯一标识的数据片区,在新建的数据片区里新建已经定义好的聚合体,并为新建聚合体建立初始值;
完成新建数据片区后,把新建的数据片区的标识和容器地址注册到数据库管理中心,以便数据库管理中心再把注册信息发给所有数据片区,其它数据片区根据数据片区的标识和容器地址访问新建的所述数据片区,使得数据片区之间数据相互传输;
创建数据库的操作指令,所述操作指令用于对所述聚合体进行新增、删除、修改、查询、数据输出、数据输入和数据恢复操作。
根据上述技术,通过提供对数据库内聚合体的操作指令,无需编写复杂的SQL语句,SQL语句是对数据库进行操作的一种语言,实现各种业务需求,大大简化了编程难度,由于数据片区之间数据传输的功能,可以把各聚合体的数据就近放置在计算端,从而加快数据处理效率。
在一种可能的设计中,根据数据片区对应的唯一的寻址标识,使用数据库的操作指令在数据片区之间单个或批量传输指定的聚合体数据;所述聚合体数据的传输方式包括:数据下载、数据上传、数据拉取和数据推送。
在一种可能的设计中,还包括对数据库进行迁移:根据业务需求把指定的数据片区从当前容器迁移到指定的其它容器;同时把迁移后的容器标识注册到数据库管理中心该数据片区的最新容器,并通知给所有其它数据库片区。
在一种可能的设计中,还包括数据库的删除:根据业务需求删除指定的数据片区,同时通知数据库管理中心把该数据片区相关信息删除,所有其它数据库片区都将删除该数据片区的信息。
在一种可能的设计中,每个数据片区设定有多个备份数据片区,备份数据片区采用raft算法进行数据同步。每个数据片区可设定多个备份,提高数据库的可用性,备份数据片区采用raft算法实现数据强一致性,确保每个备份能够低延时的更新最新数据要求。具体的,对于读取频繁的数据片区,可以部署多份,由业务层以指令的方式实现这些高并发数据片区的数据同步,满足高并发的需求。数据片区各备份之间数据同步实现强一致性算法比传统算法快好几倍,根本上改善数据库的读写效率。
在一种可能的设计中,对所述备份数据片区的数据同步操作包括:
每次对数据片区执行数据的操作指令时,同时向所有对应的备份数据片区发出操作,对应的备份数据片区并行执行数据的操作指令;
每新增或修改一组数据记录时则把该组记录号的状态通过raft算法同步到其它备份片区;
每个备份的数据片区在执行数据新增或修改之前,通过在raft的状态获取该数据片区的新记录号或同步顺序;
若其中一个备份数据片区数据操作完成即返回成功的信息;
若其中一个备份数据片区操作失败,根据所述raft的状态标识,控制数据片区不会被有效读取,以便避免数据错误。
数据片区各备份之间数据同步通过raft算法实现强一致性算法比传统算法快好几倍,根本上改善数据库的读写效率。
在一种可能的设计中,还包括对计数器字段的定义:在多用户场景,每个用户向对应字段写入增量数值或减量数值时,数据库自动计算总数,以便无需阻塞其他用户。通过计数器字段的定义,支持秒杀的高并发场景。
在一种可能的设计中,所述聚合体中同一条数据记录每次修改都重新保存一份数据并记录其版本号;当实现事务回滚时,销毁当前版本,恢复前一个版本数据。根据上述技术,实现了数据的版本管理,分布式事务由数据库自动实现。还可以满足业务流程的回滚操作,自动实现数据的回滚。另外,可防止多用户操作的数据竞争控制。
在一种可能的设计中,所述数据片区的定义中,表格树中的每个表格都定义了数据片区相关信息,所述数据片区相关信息包括当前键值、父表键值、当前版本号、源数据片区、源键值、源版本号、状态标识、事务ID和特定业务字段。
在一种可能的设计中,将所述数据片区同时部署在云端、边沿端和/或终端。
有益效果:
本发明提供的分布式关系型数据库的数据处理方法,通过提供对数据库内聚合体的操作指令,无需编写复杂的SQL语句,实现各种业务需求,大大简化了编程难度,解决分布式关系型数据库开发效率低的问题;
各数据片区具备寻址标识,数据片区之间数据传输的功能,可以把各聚合体的数据就近放置在计算端,从而加快数据处理效率;或将数据片部署到云端、边沿端和/或终端;使得一套数据库同时运行在不同的端,满足各种业务场景的需求;
每个数据片区可设定多个备份,提高数据库的可用性,备份数据片区采用raft算法实现数据强一致性,确保每个备份能够低延时的更新最新数据要求。具体的,对于读取频繁的数据片区,可以部署多份,由业务层以指令的方式实现这些高并发数据片区的数据同步,满足高并发的需求;数据片区各备份之间数据同步实现强一致性算法比传统算法快好几倍,根本上改善数据库的读写效率。
实现了数据的版本管理,分布式事务由数据库自动实现;还可以满足业务流程的回滚操作,自动实现数据的回滚。另外,可防止多用户操作的数据竞争控制。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将结合实施例或现有技术的描述对本发明作简单地介绍,在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。
实施例:
本实施例提供了一种分布式关系型数据库的数据处理方法,其特征在于,包括以下步骤:
根据业务需求为不同的组件定义不同的具备寻址标识的数据片区,当组件部署时新建和运行其对应数据片区,数据片区为对应组件提供数据存储服务;
所述数据片区的定义包括:
每个数据片区在部署前,利用相关开发工具,根据业务需求定义对应数据片区内部各聚合体的数据结构;
每个聚合体由一个根表格和多层级若干子表格组成一棵表格树,表格树中的每个表格都定义了数据片区相关信息;
具体实施时,所述数据片区的定义中,表格树中的每个表格都定义了数据片区相关信息,所述数据片区相关信息包括当前键值、父表键值、当前版本号、源数据片区、源键值、源版本号、状态标识、事务ID和特定业务字段;其中,
当前键值:表示表格中每条记录的唯一标识;
父表键值:表示该条记录其对应父表记录的键值;
当前版本号:表示该记录的版本值,初始值为0,每修改一次加1;
源数据片区:存放当前记录的源数据片区标识;
源键值:表示该记录对应源数据片区的记录键值,为NULL表示没有源记录;
源版本号:表示对应源记录的版本号;
状态标识:表示当前记录的几种状态,包括有效、删除、临时、无效、无效回滚、有效回滚、删除回滚。
聚合体是对业务实体的数据表达,具备一个根表和若干层子表的树形表格结构体。聚合体内的表格中都存在一个“父表”键值字段,每条记录的“父表”键值数据存放该记录的“父表”记录的键值。
数据片区的新建和注册:
根据业务需求在指定的容器里新建具有唯一标识的数据片区,在新建的数据片区里新建已经定义好的聚合体,并为新建聚合体建立初始值;
完成新建数据片区后,把新建的数据片区的标识和容器地址注册到数据库管理中心,以便数据库管理中心再把注册信息发给所有数据片区,其它数据片区根据数据片区的标识和容器地址访问新建的所述数据片区,使得数据片区之间数据相互传输;
创建数据库的操作指令,所述操作指令用于对所述聚合体进行特定操作,所述特定操作包括:新增、删除、修改、查询、数据输出、数据输入和数据恢复操作;
具体的,操作聚合体的指令包括:新增聚合体记录指令、删除聚合体记录指令、修改聚合体记录指令、查询聚合体记录指令、聚合体记录的输出指令、聚合体记录的输入指令和恢复聚合体记录指令,其中,
新增聚合体记录指令:把一组标识了表名和字段名的树形结构数据新增到一个聚合体中,该指令能把该组数据根据表名和字段名自动新增到聚合体内对应表格和字段中,并返回一个含有各表格新记录号的结构体;
删除聚合体记录指令:该指令能够删除指定根表记录号的对应聚合体数据,删除的数据包括指定的根表记录以及其若干层的子表记录;
修改聚合体记录指令:把一组标识了表名和字段名的树形结构数据赋值给指定根表记录号及子表记录号的聚合体,该指令能把该组数据根据表名和字段名写入到指定记录号的聚合体内;
查询聚合体记录指令:指定聚合体的根记录号和相关子表的条件等式,该指令查询指定根记录号的聚合体内符合条件等式的各子表相关记录;
聚合体记录的输出指令:指定数据片区和聚合体的根记录号,该指令把当前数据片区中指定根记录号的聚合体内所有子表数据一起输出到指定的数据片区中;
聚合体记录的输入指令:指定数据片区和聚合体的根记录号,该指令把指定数据片区中对应根记录号的聚合体内所有子表数据一起输入到当前的数据片区中;
恢复聚合体记录指令:指定已删除的聚合体根记录号,该指令把指定根记录号的聚合体内所有数据恢复。
具体实施时,能按上述指令实现数据片区之间数据传输。
每个数据片区有唯一的寻址标识,可以在数据片区之间单个或批量传输指定的聚合体数据。数据传输有四种类型:数据下载、数据上传、数据拉取、数据推送;其中
数据下载:是指当前数据片区从该数据的源数据片区获取数据。数据下载时,系统自动判断待下载的数据和当前数据的版本号是否一致,如果一致则无需下载,否则实施下载操作。
数据上传:是指当前数据片区把已修改的数据上传给该数据的源数据片区。数据上传时,系统自动判断目标数据的版本号是否大于待写入数据的版本号,如果是,则本次数据传输失败并返回出错原因,否则实施上传操作,且版本号加1。通过版本控制,从而避免多角色修改同一数据,造成数据竞争的错乱。
数据拉取:是指当前为数据的源数据片区,从指定的数据片区拉取已修改的数据到当前数据片区。数据拉取时,系统自动判断当前数据的版本号是否大于待拉取数据的版本号,如果是,则本次数据传输失败并返回出错原因,否则实施拉取操作,且版本号加1。通过版本控制,从而避免多角色修改同一数据,造成数据竞争的错乱。
数据推送:是指当前为数据的源数据片区,把当前数据片区的数据推送到指定的数据片区。数据推送时,系统自动判断待推送的数据和目标数据的版本号是否一致,如果一致则无需推送,否则实施推送操作。
由于设计了数据片区之间数据传输的功能,可以把各聚合体的数据就近放置在计算端,从而加快数据处理效率。例如,在边沿端部署数据片区满足企业驻地计算需求;在终端部署数据片区满足终端交互的数据需求。由此,数据片区可以同时部署在云端、边沿端和终端。
具体示例的,根据上述方法,部署一套分布式关系型数据库系统,该系统由若干具备寻址标识的数据片区组成,数据片区可以同时部署到云端、边沿端和终端,每个数据片区可是设置2个以上的多活备份。数据都以聚合体的形式存放在各数据片区中,每个数据片区中根据业务需求分配不同类型的聚合体。数据片区之间可以根据指令传输数据。该系统应用场景:可用于云计算、大数据领域,为各种城市数字化、企业数字化的大型互联网应用提供数据库支持。可以同时支持云端、边沿端和终端的数据存储,使得一套数据库同时运行在以上三端,满足各种业务场景的需求。
具体的,数据库的操作指令全部是围绕聚合体实施各种操作,包括:
聚合体的定义:
指令格式:tab 表格名称 { 字段类型 字段名称, ... , tab 子表名称 { 字段类型 字段名称, ... } }
举例:tab t1 { string f1, number f2, tab t1 {}, tab t2 { string f1,string f2 }, tab t3 { string f1, string f2, tab t4 { string f1, string f2 } }
其中,tab为聚合体定义的关键词;t1为根表名称;string、number为字段类型;f1、f2、f4为字段名称;第2个t1表示该表格为嵌套表;t2、t3是t1的子表名称;t4是t3的子表名称。
聚合体的变量申明:
指令格式:tab 表格名称 { 字段名称, …, 子表名称 { 字段名称, … } } 表格变量名称;tab 表格名称 { 字段名称, …, 子表名称 { 字段名称, … } } 表格变量名称 = [记录号…]。
举例:tab t1 { f1, t2 {}, t3 { {} } } t1Info,给上述t1聚合体定义一个t1Info变量,该变量指向t1部分字段和部分子表。
聚合体的赋值:
指令格式:目标表格变量=源表格变量[记录序号…] ;目标表格变量=源表格变量[记录序号].子表名称[记录序号…]。
举例:*t1Info[0].t2[] = {f1: [1,2,3]},向t1Info的t1根表0号记录的t2子表新增记录,新增记录号填入t1Info。
举例:*t1Info[0].t1[1].t1[0,1,2] = {f1: [1,2,3]},指定父级记录序号,修改t1Info的t1表0号记录的t1子表1号记录的t1子表[0,1,2]号记录的f1字段值。
聚合体的读取:
指令格式:表格数据变量=表格名称[记录ID号…] {字段名称…}
举例:data = *t1Info[0].t1[0,1,2] {f1,f2},指定父级记录序号,读取t1Info的第0层t1表格0号记录其第1层t1子表 [0,1,2]号记录的[f1,f2]字段赋值给data变量。
聚合体的删除:
指令格式:del *表格变量[记录序号…]
举例:del *t1Info[0].t1[1].t2,指定父级记录序号,删除t1Info的t1表0号记录的t1子表1号记录的t2子表所有记录。
聚合体的恢复:
指令格式:undel *表格变量[记录序号…]
举例:undel *t1Info[0].t1[1].t2,指定父级记录序号,恢复t1Info的t1表0号记录的t1子表1号记录的t2子表所有记录。
聚合体的查询:
指令格式:表格变量=表格名称(条件) AND表格名称(条件) …
举例:t1Info = t1(条件) AND t2(条件) AND t3(条件), 以t1Info的t1表格,t2表格和t3表格为条件查询记录。
聚合体的清除:
指令格式:clear表格名称[记录ID号…]
举例:clear t1[1,2,3],清除t1表格的id=[1,2,3]记录及所有子表记录。
聚合体的传输:
“数据输入”指令格式:input 表格变量;
举例:input t1Info,将t1Info指向的所有记录下载至当前数据片区。
“数据条件输入”指令格式:input 表格变量 ( [表格名称, 下载条数,字段名称,排序类型,…], { 表格名称(条件) AND 表格名称(条件)… } ) from 目标数据片区
举例:input t1Info ( ['t2',100, 'name', 'asc', 'name2', 'desc'], { t1(条件) AND t2(条件) } ) from dataBranch1,指定页、条件和目标数据片区下载数据,页为 ['t2',100, 'name', 'asc', 'name2', 'desc'],条件为{ t1(条件) AND t2(条件)},目标数据片区为dataBranch1。
“数据续传”指令格式:continue 表格变量 [页号],
举例:continue t1Info, 未指定页号继续下载数据,本次页号默认为上次页号加1。
“数据输出”指令格式:output 表格变量 [to 目标数据片区…]
举例:output t1Info to [dataBranch1, dataBranch2],上传数据到指定的目标数据片区,目标数据片区为dataBranch1、dataBranch2,如果未指定目标数据片区,则缺省为源数据片区。
“数据推送”指令格式:push 表格变量 [to 目标数据片区…],
举例:push t1Info to [dataBranch1, dataBranch2],指定多个目标数据片区上传数据,目标数据片区为[dataBranch1、dataBranch2]。
“数据拉取”指令格式:pull 表格变量 from 目标数据片区,
举例:pull t1Info from dataBranch1,指定目标数据片区拉取数据,目标数据片区为dataBranch1。
聚合体的缓存:
“缓存推送”指令格式:cache push *表格变量,
举例:cache push *t1Info,把t1Info指向的聚合体内所有记录缓存到内存中。
“缓存释放”指令格式:cache pop *表格变量,
举例:cache pop *t1Info,把t1Info指向的聚合体从缓存内存中释放。
聚合体的复制:
指令格式:*表格变量[]=*表格变量[记录序号…]
举例:*t1Info0[]= *t1Info[0,1,2],t1Info的第0层的t1表格的[0,1,2]号记录复制到t1Info0的第0层的t1表格,新记录ID填入t1Info0,
聚合体的索引定义:
指令格式:index 表格名称 { 字段名称, … }
举例:index t1 { f1 },给t1表格的f1字段建立单索引。
数据库清理:
指令格式:clean 事务
举例:clean transaction,把transaction事务操作的处于无效的数据全部清除。
在一种可能的实施方式中,还包括对数据库进行迁移:根据业务需求把指定的数据片区从当前容器迁移到指定的其它容器;同时把迁移后的容器标识注册到数据库管理中心该数据片区的最新容器,并通知给所有其它数据库片区。
在一种可能的实施方式中,还包括数据库的删除:根据业务需求删除指定的数据片区,同时通知数据库管理中心把该数据片区相关信息删除,所有其它数据库片区都将删除该数据片区的信息。
在一种可能的实施方式中,每个数据片区设定有多个备份数据片区,备份数据片区采用raft算法进行数据同步。为了提高数据库的可用性,每个数据片区可设定多个备份。备份数据片区采用raft算法实现数据强一致性,确保每个备份能够延时小于20毫秒的更新最新数据要求。而数据片区之间的数据同步有别于备份之间的数据同步,此类数据同步的时延要求不高。如果是通过数据库指令同步传输,可以实现20到100毫秒时延的数据更新要求。如果是通过数据库指令异步传输,则一般大于100毫秒时延的数据更新要求。
在一种可能的实施方式中,在实现备份数据片区的数据同步时,采用了上述备份数据片区的数据同步操作,比传统的强一致性数据同步算法更快。传统的算法都是等几个备份数据片区的数据全部同步完成后才返回成功的结果。本实施例中对所述备份数据片区的数据同步操作包括:
每次对数据片区执行数据的操作指令时,同时向所有对应的备份数据片区发出操作,对应的备份数据片区并行执行数据的操作指令;避免像传统算法串行执行数据同步修改;
为了保证并行执行数据操作,也能实现新增记录号一致,以及记录修改顺序的一致。每新增或修改一组数据记录时则把该组记录号的状态通过raft算法同步到其它备份片区;
每个备份的数据片区在执行数据新增或修改之前,通过在raft的状态获取该数据片区的新记录号或同步顺序;从而实现备份数据的完全一致;
若其中一个备份数据片区数据操作完成即返回成功的信息;从而加快强一致性算法的速度;
若其中一个备份数据片区操作失败,根据所述raft的状态标识,控制数据片区不会被有效读取,以便避免数据错误。
在一种可能的实施方式中,还包括对计数器字段的定义:
在很多的业务场景,需要定义一种数据累计字段。这种字段的特点:1、初始值为0;2、每次修改都是在原来数值基础上提供一个增加或者减少的数值;3、读取时则获取该字段的数值总和。例如,订单总数、仓储物品总数等,都是这一类应用场景。
在传统数据库中,对这类字段都是直接写入总数,而不是写入增量数或减量数。在多用户场景,为了避免数据竞争,当一个用户修改该数据时必须阻塞其他用户对该数据的读写,否则数据会出现错乱。这种处理在秒杀应用等高并发场景,将出现订单堵塞。
而本发明采用计数字段方式,在多用户场景,每个用户向该字段写入增量数值或减量数值,数据库自动计算总数,无需阻塞其他用户。可以实现高并发应用场景。
在一种可能的实施方式中,所述聚合体中同一条数据记录每次修改都重新保存一份数据并记录其版本号;当实现事务回滚时,销毁当前版本,恢复前一个版本数据。在分布式系统中,某些业务流程会先后对多个数据片区操作数据。可能出现有些数据片区持久化成功,有些数据片区持久化失败的情况,此时需要执行事务回滚操作,把当前事务所有持久化成功的数据全部回滚到上一个版本。为了实现数据自动回滚的功能,同一条数据记录每次修改都重新保存一份数据并记录其版本号。当实现事务回滚时,销毁当前版本,恢复前一个版本数据。同时,该版本号也可以用来控制数据竞争以及数据重复传输。为了防止记录中老旧版本数据堆积过多,可以通过数据库提供的清理指令清除部分已经过期的无效数据。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种分布式关系型数据库的数据处理方法,其特征在于,包括以下步骤:
根据业务需求为不同的组件定义不同的具备寻址标识的数据片区,当组件部署时新建和运行其对应数据片区,数据片区为对应组件提供数据存储服务;
所述数据片区的定义包括:
每个数据片区在部署前,利用相关开发工具,根据业务需求定义对应数据片区内部各聚合体的数据结构;
每个聚合体由一个根表格和多层级若干子表格组成一棵表格树,表格树中的每个表格都定义了数据片区相关信息;
数据片区的新建和注册:
根据业务需求在指定的容器里新建具有唯一标识的数据片区,在新建的数据片区里新建已经定义好的聚合体,并为新建聚合体建立初始值;
完成新建数据片区后,把新建的数据片区的标识和容器地址注册到数据库管理中心,以便数据库管理中心再把注册信息发给所有数据片区,其它数据片区根据数据片区的标识和容器地址访问新建的所述数据片区,使得数据片区之间数据相互传输;
创建数据库的操作指令,所述操作指令用于对所述聚合体进行新增、删除、修改、查询、数据输出、数据输入和数据恢复操作。
2.根据权利要求1所述的分布式关系型数据库的数据处理方法,其特征在于,根据数据片区对应的唯一的寻址标识,在数据片区之间单个或批量传输指定的聚合体数据;所述聚合体的数据传输方式包括:数据下载、数据上传、数据拉取和数据推送。
3.根据权利要求1所述的分布式关系型数据库的数据处理方法,其特征在于,还包括对数据库进行迁移:根据业务需求把指定的数据片区从当前容器迁移到指定的其它容器;同时把迁移后的容器标识注册到数据库管理中心该数据片区的最新容器,并通知给所有其它数据库片区。
4.根据权利要求1所述的分布式关系型数据库的数据处理方法,其特征在于,还包括数据库的删除:根据业务需求删除指定的数据片区,同时通知数据库管理中心把该数据片区相关信息删除,所有其它数据库片区都将删除该数据片区的相关信息。
5.根据权利要求1所述的分布式关系型数据库的数据处理方法,其特征在于,每个数据片区设定有多个备份数据片区,备份数据片区采用raft算法进行数据同步。
6.根据权利要求5所述的分布式关系型数据库的数据处理方法,其特征在于,对所述备份数据片区的数据同步操作包括:
每次对数据片区执行数据的操作指令时,同时向所有对应的备份数据片区发出操作,对应的备份数据片区并行执行数据的操作指令;
每新增或修改一组数据记录时则把该组数据记录的记录号状态通过raft算法同步到其它备份片区;
每个备份的数据片区在执行数据新增或修改之前,通过在raft的状态获取该数据片区的新记录号或同步顺序;
若其中一个备份数据片区数据操作完成即返回成功的信息;
若其中一个备份数据片区操作失败,根据所述raft的状态标识,控制数据片区不会被有效读取,以便避免数据错误。
7.根据权利要求1所述的分布式关系型数据库的数据处理方法,其特征在于,还包括对计数器字段的定义:在多用户场景,每个用户向对应字段写入增量数值或减量数值时,数据库自动计算总数,以便无需阻塞其他用户。
8.根据权利要求1所述的分布式关系型数据库的数据处理方法,其特征在于,所述聚合体中同一条数据记录每次修改都重新保存一份数据并记录其版本号;当实现事务回滚时,销毁当前版本,恢复前一个版本数据。
9.根据权利要求1所述的分布式关系型数据库的数据处理方法,其特征在于,所述数据片区的定义中,表格树中的每个表格都定义了数据片区相关信息,所述数据片区相关信息包括当前键值、父表键值、当前版本号、源数据片区、源键值、源版本号、状态标识、事务ID和特定业务字段。
10.根据权利要求1所述的分布式关系型数据库的数据处理方法,其特征在于,将所述数据片区同时部署在云端、边沿端和/或终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211237201.4A CN115329010B (zh) | 2022-10-11 | 2022-10-11 | 一种分布式关系型数据库的数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211237201.4A CN115329010B (zh) | 2022-10-11 | 2022-10-11 | 一种分布式关系型数据库的数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115329010A true CN115329010A (zh) | 2022-11-11 |
CN115329010B CN115329010B (zh) | 2023-06-27 |
Family
ID=83913616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211237201.4A Active CN115329010B (zh) | 2022-10-11 | 2022-10-11 | 一种分布式关系型数据库的数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115329010B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578652A (zh) * | 2023-07-13 | 2023-08-11 | 中国人民解放军国防科技大学 | 一种多表关联数据集回填系统和方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321360A (zh) * | 2019-07-08 | 2019-10-11 | 深圳市智慧郎数码科技有限公司 | 表格数据的处理方法及相关设备 |
CN111897820A (zh) * | 2020-08-04 | 2020-11-06 | 佛山市海协科技有限公司 | 一种应用于智慧城市的多源异构数据存储方法 |
CN113626444A (zh) * | 2021-08-26 | 2021-11-09 | 平安国际智慧城市科技股份有限公司 | 基于位图算法的表格查询方法、装置、设备及介质 |
CN114125446A (zh) * | 2020-06-22 | 2022-03-01 | 华为技术有限公司 | 图像编码方法、解码方法和装置 |
CN114286099A (zh) * | 2020-09-28 | 2022-04-05 | 华为技术有限公司 | 帧内预测方法及装置 |
-
2022
- 2022-10-11 CN CN202211237201.4A patent/CN115329010B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321360A (zh) * | 2019-07-08 | 2019-10-11 | 深圳市智慧郎数码科技有限公司 | 表格数据的处理方法及相关设备 |
CN114125446A (zh) * | 2020-06-22 | 2022-03-01 | 华为技术有限公司 | 图像编码方法、解码方法和装置 |
CN111897820A (zh) * | 2020-08-04 | 2020-11-06 | 佛山市海协科技有限公司 | 一种应用于智慧城市的多源异构数据存储方法 |
CN114286099A (zh) * | 2020-09-28 | 2022-04-05 | 华为技术有限公司 | 帧内预测方法及装置 |
CN113626444A (zh) * | 2021-08-26 | 2021-11-09 | 平安国际智慧城市科技股份有限公司 | 基于位图算法的表格查询方法、装置、设备及介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578652A (zh) * | 2023-07-13 | 2023-08-11 | 中国人民解放军国防科技大学 | 一种多表关联数据集回填系统和方法 |
CN116578652B (zh) * | 2023-07-13 | 2024-01-16 | 中国人民解放军国防科技大学 | 一种多表关联数据集回填系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115329010B (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2018359417B2 (en) | Methods and apparatus for efficiently implementing a fast-copyable database | |
Almeida et al. | Efficient state-based crdts by delta-mutation | |
US20190370362A1 (en) | Multi-protocol cloud storage for big data and analytics | |
US7627615B2 (en) | Copy-on-write versioning of documents | |
EP1696346B1 (en) | File system represented inside a database | |
US8655896B2 (en) | Apparatus and methods for organizing data items having time of life intervals | |
US6557012B1 (en) | System and method of refreshing and posting data between versions of a database table | |
US20120089566A1 (en) | Method for reorganizing or moving a database table | |
US20110035359A1 (en) | Database Backup and Restore with Integrated Index Reorganization | |
US20030135523A1 (en) | Method of using cache to determine the visibility to a remote database client of a plurality of database transactions | |
CN113986873B (zh) | 一种海量物联网数据模型化的处理、存储与共享方法 | |
CN110532241A (zh) | 利用MySQL Binlog进行不停机数据迁移方法 | |
CN112740198A (zh) | 用于在数据库中提早移除墓碑记录的系统和方法 | |
US20180210914A1 (en) | Consistent query of local indexes | |
WO2013144720A2 (en) | Improved performance for large versioned databases | |
US11176111B2 (en) | Distributed database management system with dynamically split B-tree indexes | |
CN108153804B (zh) | 一种对称分布式文件系统的元数据日志更新方法 | |
CN112148680B (zh) | 一种基于分布式图数据库的文件系统元数据管理方法 | |
CN115329010A (zh) | 一种分布式关系型数据库的数据处理方法 | |
CN111680017A (zh) | 一种数据同步的方法及装置 | |
US7958154B2 (en) | Apparatus, system, and method for command manager support for pluggable data formats | |
CN102402600A (zh) | 一种维护数据库复本一致性的异步归集方法 | |
US8452730B2 (en) | Archiving method and system | |
CN114860727A (zh) | 拉链表更新方法及装置 | |
US20220043799A1 (en) | Method, device, and computer program product for metadata comparison |
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 |