CN114942963A - 数据存储方法、装置、设备和存储介质 - Google Patents
数据存储方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114942963A CN114942963A CN202210435936.1A CN202210435936A CN114942963A CN 114942963 A CN114942963 A CN 114942963A CN 202210435936 A CN202210435936 A CN 202210435936A CN 114942963 A CN114942963 A CN 114942963A
- Authority
- CN
- China
- Prior art keywords
- sub
- metadata
- storage
- record
- data
- 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.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 97
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000012986 modification Methods 0.000 claims description 17
- 230000004048 modification Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000010276 construction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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
- 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/2365—Ensuring data consistency and integrity
-
- 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/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据存储方法、装置、设备和存储介质,该方法包括:获取元数据的存储区域,其中,存储区域包含有多个子存储区域,不同的子存储区域之间相互隔离,不同子存储区域用于存储不同版本的元数据;获取多个子存储区域对应存在第一关联关系的多个提交记录,其中,提交记录用于记录修改子存储区域中存储的元数据之后的提交信息;构建提交记录与数据存储结构之间的第二关联关系;根据子存储区域和提交记录之间的第一关联关系,以及提交记录和数据存储结构之间的第二关联关系,存储元数据。以保证存储元数据的数据一致性和处理效率,并且实现简单。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据存储方法、装置、设备和存储介质。
背景技术
目前,采用分布式版本控制***GIT作为版本管理工具,可以对文本文件进行版本管理。但是,对于结构化的元数据,GIT无法为其提供实时的存储和查询服务。
现有技术中还存在仅采用GIT提供版本管理服务,同时采用关系数据库为元数据提供实时的存储和查询服务的解决方案,但该方案仍存在缺陷,即处理元数据时的数据一致性和处理效率都难以保证,而且处理复杂度和用户体验也会受到影响。
发明内容
本发明实施例提供一种数据存储方法、装置、设备和存储介质,以保证存储元数据的数据一致性和处理效率,并且实现简单。
第一方面,本发明实施例提供一种数据存储方法,所述方法包括:
获取元数据的存储区域,其中,所述存储区域包含有多个子存储区域,不同的子存储区域之间相互隔离,不同子存储区域用于存储不同版本的元数据;
获取所述多个子存储区域对应存在第一关联关系的多个提交记录,其中,所述提交记录用于记录修改所述子存储区域中存储的元数据之后的提交信息;
构建所述提交记录与数据存储结构之间的第二关联关系;
根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,存储所述元数据。
第二方面,本发明实施例提供一种数据存储装置,所述装置包括:
第一获取模块,用于获取元数据的存储区域,其中,所述存储区域包含有多个子存储区域,不同的子存储区域之间相互隔离,不同子存储区域用于存储不同版本的元数据;
第二获取模块,用于获取所述多个子存储区域对应存在第一关联关系的多个提交记录,其中,所述提交记录用于记录修改所述子存储区域中存储的元数据之后的提交信息;
关系构建模块,用于构建所述提交记录与数据存储结构之间的第二关联关系;
数据存储模块,用于根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,存储所述元数据。
第三方面,本发明实施例提供一种电子设备,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现如第一方面所述的数据存储方法。
第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如第一方面所述的数据存储方法。
本发明实施例中,在对元数据进行存储时,先获取元数据的存储区域,以便于对元数据进行管理,该存储区域包含有多个子存储区域,不同的子存储区域之间相互隔离,不同子存储区域用于存储不同版本的元数据;获取多个子存储区域对应存在第一关联关系的多个提交记录,其中,提交记录用于记录修改子存储区域中存储的元数据之后的提交信息;构建提交记录与数据存储结构之间的第二关联关系;根据子存储区域和提交记录之间的第一关联关系,以及提交记录和数据存储结构之间的第二关联关系,存储元数据。
在上述方案中,不需要依赖诸如GIT等额外的版本管理工具,仅通过采用不同的相互隔离的子存储区域来存储不同版本的元数据,并且通过将与子存储区域存在第一关联关系的提交记录,与数据存储结构建立第二关联关系,进而可以根据子存储区域和提交记录之间的第一关联关系,以及提交记录和数据存储结构之间的第二关联关系,便可以存储元数据。可以保证存储元数据的数据一致性和处理效率,并且实现简单。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据存储方法的流程图;
图2为本发明实施例提供的一种哈希树结构的示意图;
图3为本发明实施例提供的一种数据存储方法的应用示意图;
图4为本发明实施例提供的一种可选的数据存储方法的流程图;
图5为本发明实施例提供的一种可选的合并两个子存储区域的示意图;
图6为本发明实施例提供的一种数据存储装置的结构示意图;
图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
先对本发明实施例中涉及到的术语或概念进行解释说明:
哈希树(Merkle Tree):是一个多叉树结构,其中每个节点都会包含一个哈希值,该哈希值是由该节点的所有子节点的哈希值混合计算出的,哈希树的根节点就是这个树的所有节点通过哈希运算得到的。
图数据库(graph database,GDB):在计算机科学中,图数据库是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
本发明实施例提供的数据存储方法可以由一电子设备来执行,实际应用中,该电子设备可以是服务器,也可以是诸如PC机等用户终端,该服务器可以是云端的物理服务器或虚拟服务器(虚拟机)。
图1为本发明实施例提供的一种数据存储方法的流程图,如图1所示,该方法包括如下步骤:
101、获取元数据的存储区域,其中,存储区域包含有多个子存储区域,不同的子存储区域之间相互隔离,不同子存储区域用于存储不同版本的元数据;
102、获取所述多个子存储区域对应存在第一关联关系的多个提交记录,其中,所述提交记录用于记录修改所述子存储区域中存储的元数据之后的提交信息;
103、构建所述提交记录与数据存储结构之间的第二关联关系;
104、根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,存储所述元数据。
本发明实施例中,元数据可以理解为是指描述数据的数据(data about data),主要是描述数据属性(property)的信息,例如,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
可选地,存储区域可以理解为是一种用于存储元数据的数据存储仓库(Repository)。例如,可以根据对元数据的使用需求将元数据划分为不同的数据类型,再根据元数据所属的数据类型将其存储到不同的存储区域之中,以便单独管理元数据。
另外,不同的存储区域之间是相互隔离的。例如,不同的存储区域中的子存储区域是相互隔离的,不同的存储区域中存储的元数据也是相互隔离的)。
如上所述,存储区域是可以包含有多个子存储区域的,不同的子存储区域之间也是相互隔离的,不同子存储区域用于存储不同版本的元数据。
可选地,上述子存储区域可以理解为是数据存储仓库中的存储分支(Branch)。在一个数据存储仓库中可以创建有多个子存储区域,一个数据存储仓库中至少有一个默认的主干子存储区域作为基线子存储区域,除了该主干子存储区域之外的所有其他新的子存储区域都从主干子存储区域中克隆或者复制出的,克隆或者复制得到的新的子存储区域中所保存的元数据,在未被修改之前可以保持和当前的主干子存储区域完全一致。
可选地,在本发明实施例中,在用户对子存储区域进行修改时,响应于用户对子存储区域的检测操作,返回该子存储区域中的存储内容,例如,包括该子存储区域的上一提交记录commit所对应的哈希值hash key,以及当前存储的用于数据索引的数据存储结构,例如,哈希树型结构。
可以理解的是,在读取该子存储区域中的存储内容之后,对子存储区域中的元数据进行修改,并且,子存储区域在每次提交都会创建一个新的提交记录,这样,这个子存储区域和这个新的提交记录是存在一个关联关系的,即第一关联关系。
并且,该新的提交记录用于记录修改所述子存储区域中存储的元数据之后的提交信息,例如,该新的提交记录中包括该子存储区域的上一提交记录所对应的哈希值,以及本次提交对应的数据索引的数据存储结构中根节点的哈希值。
仍需要说明的是,在本发明实施例中,上述提交如果是针对合并操作的提交,则该新的提交记录中还会记录有多个父提交记录所对应的哈希值。
作为一种可选地实施例,在生成与提交对应的提交记录之后,还可以建立提交记录与上一提交记录之间的提交记录关联关系,其中,上一提交记录为在对目标元数据进行修改前,与目标子存储区域存在第一关联关系的提交记录。
可选地,每次得到的新的提交记录中记录上一提交记录所对应的哈希值,进而建立提交记录与上一提交记录之间的提交记录关联关系。另外,每次得到的新的提交记录都会关联到一个数据存储结构的根节点。由于提交记录中的哈希值是由包含的所有属性混合运算出来的,所以,该哈希值是唯一的,对应的用于数据索引的数据存储结构的根节点的哈希值也是唯一不变的,可以基于提交记录和对应的数据存储结构的根节点之间的对应关系,构建提交记录与数据存储结构之间的第二关联关系,这个第二关联关系也是唯一不变的。
可选地,上述数据存储结构可以用于数据索引,例如,可以是一个哈希树结构,所有的哈希树结构的根节点都是唯一的,根节点的子节点又分为如下两种:树节点TreeNode,用于表示一个分支结构,可以包括多个子节点和多个数据节点Data Node。该数据节点不包含子节点,但是包含用于存储元数据的键值(value值)。
为了能够高效的进行数据存储,采用基于哈希树的数据结构实现了对元数据进行包装处理。TreeNode对应哈希树中的节点,每一个TreeNode都会包含一个hashKey;而TreeNode只是组织树形结构父子关系的节点,并不真正存储数据;任何一个TreeNode都能包含任意多个DataNode节点,DataNode节点不具有子节点,但是能够用value值来存储元数据。DataNode的hashKey是由自身的name和value混合计算出的;TreeNode的hashKey是由所有子节点(包括TreeNode和DataNode),以及自身的name混合计算出的。
在本发明实施例中,如上所述,每个树节点TreeNode均包含一个名称和一个哈希值。如图2所示的一种哈希树结构的示意图,例如,根节点TreeNode0包含一个名称(name:ROOT)和一个哈希值(hash(name,child.hashkey…))。
可选地,目标树节点为多个树节点中任一个,目标树节点的哈希值是由目标树节点下包含的子节点的哈希值和目标树节点的名称计算得到,因此也是唯一的。子节点中包括至少一个数据节点,每个数据节点的哈希值由数据节点的名称和键值计算得到。
仍如图2所示,例如,以上述目标树节点为根节点TreeNode0为例,则根节点TreeNode0下包含的子节点为TreeNode1、TreeNode2和Data Node0。例如,子节点TreeNode1包括数据节点Data Node1和Data Node2,子节点TreeNode2包括数据节点Data Node3和Data Node4,再例如,数据节点Data Node3的哈希值由Data Node3的名称data121和键值val ue121计算得到的,其他数据节点如图2所示例,不再具体赘述。
通过上述处理步骤,根据子存储区域和提交记录之间的第一关联关系,以及提交记录和数据存储结构之间的第二关联关系,将元数据抽象为哈希树结构,可以将元数据的存储查询以及版本管理进行整合,避免了数据一致性问题并可以大幅提升元数据的存储效率。再采用图数据库存储元数据,这种结合使用图数据库的数据存储的方式,大大降低网络和IO开销,可以实现秒级的数据存储和查询。
举例来说,本发明实施例所提供的上述数据存储方法,可以在如下图3所示的数据存储***中实现,该数据存储***的结构示意图中,存储区域(name:configData,id:679)包含有子存储区域(name:feature_xxx,lastCommitKey:y1az),与该子存储区域存在第一关联关系的提交记录为当前最新的提交记录Commit3(hashKey:y1az…,parent:ere2…)。该子存储区域的上一提交记录为提交记录Commit2(hashKey:ere2…,parent:as1f…),该子存储区域的再上一提交记录为提交记录Commit1(hashKey:as1f…,parent:0)。
以上的提交记录Commit1、Commit2、Commit3均关联有一个根节点TreeNode,例如,Commit1与TreeNode1(hashKey:icq5…)关联,Commit2与TreeNode2(hashKey:8yu1…)关联,Commit3与哈希树TreeNode3(hashKey:u91x…)关联,即构建得到第二关联关系。最后根据子存储区域和提交记录之间的第一关联关系,以及提交记录和数据存储结构之间的第二关联关系,采用图数据库最终存储元数据。
本发明实施例通过将元数据的存储和其版本管理相结合,既能够在存储中高效进行元数据的读取和修改,同时也能够建立起不同的子存储区域对应的元数据版本,并能够提供合并和解决冲突等版本化能力,这样在后续使用元数据的时候,能基于建立的不同的子存储区域进行元数据的修改,最终还能够合并到统一的基线版本中,同时也能提供不同版本间冲突的处理能力。
作为一种可选的实施例,本发明实施例还可以采用如下实现方式,构建提交记录和目标子存储区域之间的第一关联关系:响应于对目标元数据的读取操作,确定用于存储目标元数据的目标子存储区域;从目标子存储区域读取目标元数据,以对目标元数据进行修改;在提交修改后的目标元数据之后,生成与提交对应的提交记录;构建提交记录和目标子存储区域之间的第一关联关系。
可以理解的是,在本发明实施例中,在确定用于存储目标元数据的目标子存储区域,并读取该目标子存储区域中的目标元数据之后,对目标元数据进行修改,并在提交修改后的目标元数据之后执行提交,每次提交都会生成与提交对应的提交记录,进而可以构建提交记录和目标子存储区域之间的第一关联关系。
并且,该提交记录用于记录修改目标子存储区域中存储的目标元数据之后的提交信息,例如,包括该目标子存储区域的上一提交记录所对应的哈希值,以及本次提交对应的数据索引的数据存储结构中根节点的哈希值。
在确定了元数据的数据存储结构后,最终还需要将其映射到数据库中进行持久化存储,并提供高效的读取和提交服务。如果采用传统的关系数据库来作为存储数据库,其具备树形的数据结构的特点,将其映射到关系数据库的“平面”表结构后,不管是查询读取还是写入,都需要大量的循环递归操作,当树形的数据结构的深度比较深时,这种处理效率是无法被用户所接受的。
而由于树形的数据结构是图数据库的子集,图数据库刚好可以满足本发明实施例中的存储需求,在计算机科学中,图数据库(graph database,GDB)是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。该图数据库的关键概念是图,它直接将存储中的数据项,与数据节点和节点间表示关系的边的集合相关联。这些关系允许直接将存储区中的数据链接在一起,并且在许多情况下,可以通过一个操作进行检索。
由于图数据库将数据之间的关系作为优先级,因此,查询图数据库中的关系很快,因为它们永久存储在数据库本身中,还可以使用图数据库直观地显示关系,使其对于高度互连的数据非常有用。
为此,一种可选地实施例中,根据子存储区域和提交记录之间的第一关联关系,以及提交记录和数据存储结构之间的第二关联关系,存储元数据,还可以采用如下具体实施方式进行实现,例如,根据子存储区域和提交记录之间的第一关联关系,以及提交记录和数据存储结构之间的第二关联关系,确定图数据库中的边;将存储区域、子存储区域、提交记录和数据存储结构分别作为图数据库中的顶点;采用图数据库根据边和顶点存储元数据。
可以理解的是,在本发明实施例中,子存储区域和提交记录之间的第一关联关系,以及提交记录和数据存储结构之间的第二关联关系,均是单向的关联关系,因此可以被抽象是一个图的数据结构,进而为了能给高效的进行元数据的修改和查询,本发明实施例中使用图数据库来实现最终的数据存储,将存储区域、子存储区域、提交记录和数据存储结构分别作为图数据库中的顶点,这样就可以直接使用图数据库来表达一个完整的数据存储结构。
具体地,数据存储结构的每一个节点都可以被当作图数据库的一个顶点,通过使用图数据库,不用递归,就可以实现一次性完整的进行元数据的存储和查询,减少了大量的网络和IO操作,而且数据存储的效率大幅提升。
举例来说,当其中的一个树节点和自身所有的子节点都没有改变的情况下,可以不同的数据存储结构可以共用节点存储,降低空间占用当数据存储结构中的任何一个树节点改变后,都会导致所有祖先节点,包括根节点的改变,最终每一次修改和提交都能够映射至一个数据存储结构的根节点上。在两个数据存储结构进行比较时,如果一个树节点的哈希值相同,那么代表该树节点以及所包括所有的子节点都是相同的;当然如果两个数据存储结构的根节点的哈希值一样,说明两个数据存储结构就是完全一致的。
可选地,如果每次对某一版本的元数据的读取和提交都是顺序操作,是不会有冲突的发生的。但是如果对一个版本的元数据读取出多份并进行不同的修改,并先后提交修改后的元数据时,在前面的提交已经完成之后,后面的提交就有可能会发生冲突,这种冲突可以理解为是一种合并冲突。
作为一种可选地实施例,如图4所示,本发明实施例中的数据存储方法还包括如下实现方式:
401、响应于对至少两个子存储区域的合并操作,确定与至少两个子存储区域存在第一关联关系的至少两个提交记录;
402、根据至少两个提交记录确定是否在同一时间段内对数据存储结构中的同一目标树节点执行了相同的修改操作且修改结果不一致;
403、若是,则输出冲突提示信息,以提示多个子存储区域发生了合并冲突以及具体冲突内容;
404、若否,则合并至少两个子存储区域得到新的子存储区域。
如上所述,如果对一个版本的元数据读取出多份并进行不同的修改,并先后提交修改后的元数据时,其本质可以理解为是对先后提交修改后的元数据所对应的两个子存储区域的合并操作,在前面的提交已经完成之后,后面的提交就有可能会发生冲突,这种冲突可以理解为是一种合并冲突。
如图5所示,对于同一个Branch(name:master,IastCommitKey(即IastCommitHashKey):y1az…),同时读取出两份数据进行编辑Commit hashKey为yuxz…和7yz3…,Commit hashKey:yuxz…对应的Branch A先被提交成功,所以Branch(name:master)对应的IastCommitHashKey更新为u7ec…;而当hashKey:7yz3…对应的Branch B进行提交时,发现本次Commit对应的IastCommitHashKey:7yz3…和当前branch对应的IastCommitHashKey:u7ec…相比二者不同,则找出它们之间的最近共同祖先(LCA:lowestcommon ancestor)commit(HashKey:y1az…,parent:ere2),将两个提交记录关联的目标树节点的哈希值分别与共同公共祖先记录关联的目标树节点的哈希值进行比较,即对分别所关联的treeNode进行三方比对得到diffA和diffB,如果diffA和diifB在同一时间段内对数据存储结构中的同一目标树节点执行了相同的修改操作且修改结果不一致,则认为是冲突发生,需要人工介入处理,进而输出冲突提示信息,以提示多个子存储区域发生了合并冲突以及具体冲突内容;若否,则合并至少两个子存储区域得到新的子存储区域。
可选地,在输出冲突提示信息给用户之后,由用户自身决定合并内容后,附上合并后的数据,再次进行提交,以解决合并冲突问题。
通过本发明实施例,建立不同的子存储区域对元数据进行版本化更新,每次只保存修改的数据内容而不是全量,并能给完整的保存历史操作记录,以及解决多个子存储区域之间的冲突。
由上文描述可知,本发明实施例,通过融合对元数据的版本管理以及快速的存储和查询能力为一体,不存在将版本管理和实际存储分离后的一致性和效率问题,同时通过结构化的存储,更加方便用户在多个子存储区域对元数据进行修改时,进行可能的冲突的解决。另外将数据结构抽象为TreeData并使用图数据库作为实际存储,相比传统中的关系型数据库,能够一次性的读取和存储完整的数据结构,而不用反复递归操作,大大减少了网络和IO,数据处理的效率大幅提升。
以下将详细描述本发明的一个或多个实施例的数据存储装置。本领域技术人员可以理解,这些装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图6为本发明实施例提供的一种数据存储装置的结构示意图,如图6所示,该装置包括:第一获取模块11、第二获取模块12、关系构建模块13、数据存储模块14。
第一获取模块11,用于获取元数据的存储区域,其中,所述存储区域包含有多个子存储区域,不同的子存储区域之间相互隔离,不同子存储区域用于存储不同版本的元数据;
第二获取模块12,用于获取所述多个子存储区域对应存在第一关联关系的多个提交记录,其中,所述提交记录用于记录修改所述子存储区域中存储的元数据之后的提交信息;
关系构建模块13,用于构建所述提交记录与数据存储结构之间的第二关联关系;
数据存储模块14,用于根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,存储所述元数据。
可选地,所述第一获取模块11具体用于:获取所述元数据的数据类型;确定与所述数据类型对应的所述存储区域。
可选地,所述装置还包括:第一确定模块,用于响应于对目标元数据的读取操作,确定用于存储所述目标元数据的目标子存储区域;修改模块,用于从所述目标子存储区域读取所述目标元数据,以对所述目标元数据进行修改;生成模块,用于在提交修改后的所述目标元数据之后,生成与所述提交对应的所述提交记录;关系构建模块,用于构建所述提交记录和所述目标子存储区域之间的所述第一关联关系。
可选地,所述装置还包括:关系构建模块,用于构建所述提交记录与上一提交记录之间的提交记录关联关系,其中,所述上一提交记录为在对所述目标元数据进行修改前,与所述目标子存储区域存在所述第一关联关系的提交记录。
可选地,所述数据存储结构包括:多个树节点和多个数据节点,其中,每个树节点均包含一个名称和一个哈希值,目标树节点的哈希值是由所述目标树节点下包含的子节点的哈希值和所述目标树节点的名称计算得到,所述子节点中包括至少一个数据节点,每个数据节点的哈希值由所述数据节点的名称和键值计算得到,所述键值用于存储所述元数据;所述目标树节点为所述多个树节点中任一个。
可选地,所述数据存储模块14具体用于:根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,确定图数据库中的边;将所述存储区域、所述子存储区域、所述提交记录和所述数据存储结构分别作为所述图数据库中的顶点;采用所述图数据库根据所述边和所述顶点存储所述元数据。
可选地,所述装置还包括:第二确定模块,用于响应于对至少两个所述子存储区域的合并操作,确定与至少两个所述子存储区域存在所述第一关联关系的至少两个所述提交记录;以及根据至少两个所述提交记录确定是否在同一时间段内对数据存储结构中的同一目标树节点执行了相同的修改操作且修改结果不一致;提示模块,用于若是,则输出冲突提示信息,以提示所述多个子存储区域发生了合并冲突以及具体冲突内容;合并模块,用于若否,则合并至少两个所述子存储区域得到新的子存储区域。
可选地,所述第二确定模块具体用于:确定至少两个所述提交记录的共同公共祖先记录;
将至少两个所述提交记录关联的目标树节点的哈希值分别与所述共同公共祖先记录关联的目标树节点的哈希值进行比较,以确定是否在同一时间段内对数据存储结构中的同一目标树节点执行了相同的修改操作且修改结果不一致。
在一个可能的设计中,上述图6所示数据存储装置的结构可实现为一电子设备。如图7所示,该电子设备可以包括:处理器21、存储器22、通信接口23。其中,存储器22上存储有可执行代码,当所述可执行代码被处理器21执行时,使处理器21至少可以实现如前述实施例中提供的数据存储方法。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述实施例中提供的数据存储方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的网元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种数据存储方法,其特征在于,包括:
获取元数据的存储区域,其中,所述存储区域包含有多个子存储区域,不同的子存储区域之间相互隔离,不同子存储区域用于存储不同版本的元数据;
获取所述多个子存储区域对应存在第一关联关系的多个提交记录,其中,所述提交记录用于记录修改所述子存储区域中存储的元数据之后的提交信息;
构建所述提交记录与数据存储结构之间的第二关联关系;
根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,存储所述元数据。
2.根据权利要求1所述的方法,其特征在于,所述获取元数据的存储区域,包括:
获取所述元数据的数据类型;
确定与所述数据类型对应的所述存储区域。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于对目标元数据的读取操作,确定用于存储所述目标元数据的目标子存储区域;
从所述目标子存储区域读取所述目标元数据,以对所述目标元数据进行修改;
在提交修改后的所述目标元数据之后,生成与所述提交对应的所述提交记录;
构建所述提交记录和所述目标子存储区域之间的所述第一关联关系。
4.根据权利要求3所述的方法,其特征在于,在生成与所述提交对应的所述提交记录之后,所述方法还包括:
构建所述提交记录与上一提交记录之间的提交记录关联关系,其中,所述上一提交记录为在对所述目标元数据进行修改前,与所述目标子存储区域存在所述第一关联关系的提交记录。
5.根据权利要求1所述的方法,其特征在于,所述数据存储结构包括:
多个树节点和多个数据节点,其中,每个树节点均包含一个名称和一个哈希值,目标树节点的哈希值是由所述目标树节点下包含的子节点的哈希值和所述目标树节点的名称计算得到,所述子节点中包括至少一个数据节点,每个数据节点的哈希值由所述数据节点的名称和键值计算得到,所述键值用于存储所述元数据;所述目标树节点为所述多个树节点中任一个。
6.根据权利要求1所述的方法,其特征在于,所述根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,存储所述元数据,包括:
根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,确定图数据库中的边;
将所述存储区域、所述子存储区域、所述提交记录和所述数据存储结构分别作为所述图数据库中的顶点;
采用所述图数据库根据所述边和所述顶点存储所述元数据。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于对至少两个所述子存储区域的合并操作,确定与至少两个所述子存储区域存在所述第一关联关系的至少两个所述提交记录;
根据至少两个所述提交记录确定是否在同一时间段内对数据存储结构中的同一目标树节点执行了相同的修改操作且修改结果不一致;
若是,则输出冲突提示信息,以提示所述多个子存储区域发生了合并冲突以及具体冲突内容;
若否,则合并至少两个所述子存储区域得到新的子存储区域。
8.根据权利要求7所述的方法,其特征在于,所述根据至少两个所述提交记录确定是否在同一时间段内对数据存储结构中的同一目标树节点执行了相同的修改操作且修改结果不一致,包括:
确定至少两个所述提交记录的共同公共祖先记录;
将至少两个所述提交记录关联的目标树节点的哈希值分别与所述共同公共祖先记录关联的目标树节点的哈希值进行比较,以确定是否在同一时间段内对数据存储结构中的同一目标树节点执行了相同的修改操作且修改结果不一致。
9.一种数据存储装置,其特征在于,包括:
第一获取模块,用于获取元数据的存储区域,其中,所述存储区域包含有多个子存储区域,不同的子存储区域之间相互隔离,不同子存储区域用于存储不同版本的元数据;
第二获取模块,用于获取所述多个子存储区域对应存在第一关联关系的多个提交记录,其中,所述提交记录用于记录修改所述子存储区域中存储的元数据之后的提交信息;
关系构建模块,用于构建所述提交记录与数据存储结构之间的第二关联关系;
数据存储模块,用于根据所述子存储区域和所述提交记录之间的第一关联关系,以及所述提交记录和所述数据存储结构之间的第二关联关系,存储所述元数据。
10.一种电子设备,其特征在于,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至8中任一项所述的数据存储方法。
11.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至8中任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210435936.1A CN114942963A (zh) | 2022-04-24 | 2022-04-24 | 数据存储方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210435936.1A CN114942963A (zh) | 2022-04-24 | 2022-04-24 | 数据存储方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114942963A true CN114942963A (zh) | 2022-08-26 |
Family
ID=82907318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210435936.1A Pending CN114942963A (zh) | 2022-04-24 | 2022-04-24 | 数据存储方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114942963A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102016852A (zh) * | 2008-03-05 | 2011-04-13 | 美国日本电气实验室公司 | 内容可寻址存储***和方法 |
US20170277743A1 (en) * | 2016-03-28 | 2017-09-28 | Oracle International Corporation | Version control of records in an electronic database |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
CN112771511A (zh) * | 2019-02-22 | 2021-05-07 | 斯诺弗雷克公司 | 数据库***中的多层次元数据 |
-
2022
- 2022-04-24 CN CN202210435936.1A patent/CN114942963A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102016852A (zh) * | 2008-03-05 | 2011-04-13 | 美国日本电气实验室公司 | 内容可寻址存储***和方法 |
US20170277743A1 (en) * | 2016-03-28 | 2017-09-28 | Oracle International Corporation | Version control of records in an electronic database |
CN112771511A (zh) * | 2019-02-22 | 2021-05-07 | 斯诺弗雷克公司 | 数据库***中的多层次元数据 |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
阳万安;李彦;: "通用版本控制***的研究和设计", 计算机工程, no. 12, 20 June 2008 (2008-06-20), pages 1 - 11 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220342875A1 (en) | Data preparation context navigation | |
US20210174006A1 (en) | System and method for facilitating complex document drafting and management | |
CN110032604B (zh) | 数据存储装置、转译装置及数据库访问方法 | |
US9753960B1 (en) | System, method, and computer program for dynamically generating a visual representation of a subset of a graph for display, based on search criteria | |
US11341171B2 (en) | Method and apparatus for implementing a set of integrated data systems | |
CN113986873B (zh) | 一种海量物联网数据模型化的处理、存储与共享方法 | |
US20130006968A1 (en) | Data integration system | |
US7769719B2 (en) | File system dump/restore by node numbering | |
US8285760B1 (en) | System for organizing computer data | |
EP3362916B1 (en) | Signature-based cache optimization for data preparation | |
US8880463B2 (en) | Standardized framework for reporting archived legacy system data | |
US10296505B2 (en) | Framework for joining datasets | |
CN101645092B (zh) | 用于将x500数据模型映射到关系数据库上的方法 | |
CN111221791A (zh) | 一种多源异构数据导入数据湖的方法 | |
US11675769B2 (en) | On-demand, dynamic and optimized indexing in natural language processing | |
CN112148680B (zh) | 一种基于分布式图数据库的文件***元数据管理方法 | |
WO2014110940A1 (en) | A method, apparatus and system for storing, reading the directory index | |
CN111221785A (zh) | 一种多源异构数据的语义数据湖构建方法 | |
CN113590894A (zh) | 一种动态高效的遥感影像元数据入库检索方法 | |
CN114372174A (zh) | 一种xml文档分布式查询方法及*** | |
CN116756096B (zh) | 元数据处理方法、装置、电子设备及存储介质 | |
CN114942963A (zh) | 数据存储方法、装置、设备和存储介质 | |
US11074401B2 (en) | Merging delta object notation documents | |
US11023674B2 (en) | Generation and application of object notation deltas | |
Aljarallah | Comparative study of database modeling approaches |
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 |