CN112035554B - 一种结构化数据版本管理方法与系统 - Google Patents
一种结构化数据版本管理方法与系统 Download PDFInfo
- Publication number
- CN112035554B CN112035554B CN202010992620.3A CN202010992620A CN112035554B CN 112035554 B CN112035554 B CN 112035554B CN 202010992620 A CN202010992620 A CN 202010992620A CN 112035554 B CN112035554 B CN 112035554B
- Authority
- CN
- China
- Prior art keywords
- data
- version
- head
- sha256
- node
- 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
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/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种结构化数据版本管理方法,包括以下步骤:建立以ID为头结点的倒排索引;当需要写入数据时,先获取头部版本号head,然后将head+1生成新版本号重新赋予head,再将新版本的数据插入到倒排索引头部;当获取最新数据时,只需要定位到目标ID索引节点,再获取首节点的数据即可;当需要获取历史版本时,则指针向后继续移动,一种结构化数据版本管理系统,包括数据版本储存和索引模块,数据版本生成写入模块和数据版本快速访问模块,将历史版本数据从原业务系统中剥离存储于更加易于管理、访问的外部非结构化数据库中,同时兼顾对历史数据版本的索引,最新版本的快速获取,通过独立版本存储与访问服务为业务系统降低数据版本管理的代价。
Description
技术领域
本发明涉及信息技术领域,具体为一种结构化数据版本管理方法与系统。
背景技术
在信息技术领域,数据留痕与多版本共存是一个刚性需求,现在主流的做法是在原系统的数据库表结构中增加一个版本字段,将原来的更新操作转换为插入操作,每次更新版本号加1生成一个新的版本号,然后在系统中插入一条新的记录,亦或有些软件开发人员为了方便,直接使用时间戳作为版本号。此解决方案在数据量较少,且版本留存较少的情况下,性能与易用性上还可以,但在数据版本更新频繁,留痕要求严格的情况下,因每一个版本的获取均需要进行全表扫描或联合键扫描,会对原数据集造成巨大的数据压力,甚至影响到系统的正常访问。
数据历史版本的留存主要是为了解决数据的修改溯源问题,而不是一个高频需求,因此混合在一起的数据版本存储方案在扩展性、承载量及性能上都是一种不太理想的方案。
基于此,本发明设计了一种结构化数据版本管理方法与系统,以解决上述提到的如何建立易于存取的快速版本存储结构与索引结构、如何建立高效的数据写入机制和如何建立数据任意历史版本的快速获取问题。
发明内容
本发明的目的在于提供一种结构化数据版本管理方法与系统,本发明的方法是将历史版本数据从原业务系统中剥离出来,以一种特殊的方式存储于更加易于管理、访问的外部非结构化数据库中,同时兼顾对历史数据版本的索引,最新版本的快速获取等诉求。同时,通过本发明的方法,可以在不改变现有系统数据存储结构、引擎、介质的情况下,通过独立版本存储与访问服务为业务系统提供数据版本管理服务,极大地降低数据版本管理的代价。
为实现上述目的,本发明提供如下技术方案:一种结构化数据版本管理方法与系统,包括以下步骤:
S1:建立以ID为头结点的倒排索引,所述倒排索引使用链表结构,每个索引链上的第一个节点为最新版本的数据,后续节点上版本依次降低;
S2:根据写入的ID在倒排索引的ID中找到数据ID所在位置;
S3:获取数据所在位置中的Version与SHA256;
S4:计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较;
S5:若相同则忽略,不同则进入下一步;
S6:插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部;
S7:需要获取最新数据时,从ID中找到数据ID所在位置;
S8:定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步;
S9:当需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
优选的,所述倒排索引链表的长度可根据版本的数量进行限制。
优选的,所述数据版本的结构包括数据ID、当前最新的数据版本号Version、最新数据入版本库的时间戳TS、当前最新数据的数据指纹。
优选的,所述当前最新数据的数据指纹通过SHA256方式进行计算,所述SHA256的计算方法:将所有数据按字段排序后用“+”隔开,计算SHA256值,若数据为复杂嵌套数据,则下级数据结构中的字段也要进行一次排序,排序规则遵循Alpha Beta。
一种结构化数据版本管理系统,包括
数据版本储存和索引模块,用于建立以ID为头结点的倒排索引,所述倒排索引使用链表结构,每个索引链上的第一个节点为最新版本的数据,后续节点上版本依次降低;
数据版本生成写入模块,用于据写入的ID在倒排索引的ID中找到数据ID所在位置,获取数据所在位置中的Version与SHA256,计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较,若相同则忽略,不同则为插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部;
数据版本快速访问模块,用于获取最新数据时,从ID中找到数据ID所在位置,定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步,需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
优选的,所述数据版本生成写入模块包括
查找模块一,用于根据写入的ID在倒排索引的ID中找到数据ID所在位置;
获取模块一,用于获取数据所在位置中的Version与SHA256;
计算比较模块,用于计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较;
判断模块,用于判断计算比较模块比较结果,若相同则忽略,不同则为插入新版本数据;
倒排模块,用于对插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部。
优选的,所述数据版本快速访问模块包括
查找模块二,用于获取最新数据时,从ID中找到数据ID所在位置;
获取模块二,用于定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步;
获取模块三,用于需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
与现有技术相比,本发明的有益效果是:
1、本发明提出的基于ID为头节点的倒排索引链式数据版本存储与索引结构,对任意版本的数据存储,复杂度低,在性能和扩展性方面都可以解决目前主流方案存在的核心问题;
2、本发明提出的方法与系统,完全与业务系统无关,在使用上完全独立,只需要调用数据版本写入与读取接口即可完成版本数据的获取与存储,无须关心内部存储结构,极大的降低了使用和引入成本,避免了大量版本产生时可能对业务系统造成的冲击,更有效可靠;
3、本发明提出的方法与系统,在数据获取方面,因可以快速定位到目标版本,读取与获取速度、效率比现有主流方案更佳,无须解包,直达数据位置,直接取之。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法流程图;
图2为本发明数据版本储存和索引模块结构图;
图3为本发明数据版本生成写入模块结构图;
图4为本发明系统原理框图;
图5为本发明数据版本生成写入模块原理框图;
图6为本发明数据版本快速访问模块原理框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1
请参阅图1-3,本发明提供一种技术方案:一种结构化数据版本管理方法与系统,包括以下步骤:
S1:建立以ID为头结点的倒排索引,倒排索引使用链表结构,每个索引链上的第一个节点为最新版本的数据,后续节点上版本依次降低;
S2:根据写入的ID在倒排索引的ID中找到数据ID所在位置;
S3:获取数据所在位置中的Version与SHA256;
S4:计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较;
S5:若相同则忽略,不同则进入下一步;
S6:插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部;
S7:需要获取最新数据时,从ID中找到数据ID所在位置;
S8:定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步;
S9:当需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
其中,倒排索引链表的长度可根据版本的数量进行限制,如果需要控制版本的数量,可以在实现时限制倒排索引链表的长度。
其中,数据版本的结构包括数据ID、当前最新的数据版本号Version、最新数据入版本库的时间戳TS、当前最新数据的数据指纹。当前最新数据的数据指纹通过SHA256方式进行计算,SHA256的计算方法:将所有数据按字段排序后用“+”隔开,计算SHA256值,若数据为复杂嵌套数据,则下级数据结构中的字段也要进行一次排序,排序规则遵循Alpha Beta。
实施例2
请参阅图4-6,本发明提供一种技术方案:一种结构化数据版本管理系统,包括
数据版本储存和索引模块,用于建立以ID为头结点的倒排索引,倒排索引使用链表结构,每个索引链上的第一个节点为最新版本的数据,后续节点上版本依次降低;
数据版本生成写入模块,用于据写入的ID在倒排索引的ID中找到数据ID所在位置,获取数据所在位置中的Version与SHA256,计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较,若相同则忽略,不同则为插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部;
数据版本快速访问模块,用于获取最新数据时,从ID中找到数据ID所在位置,定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步,需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
其中,数据版本生成写入模块包括
查找模块一,用于根据写入的ID在倒排索引的ID中找到数据ID所在位置;
获取模块一,用于获取数据所在位置中的Version与SHA256;
计算比较模块,用于计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较;
判断模块,用于判断计算比较模块比较结果,若相同则忽略,不同则为插入新版本数据;
倒排模块,用于对插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部。
其中,数据版本快速访问模块包括
查找模块二,用于获取最新数据时,从ID中找到数据ID所在位置;
获取模块二,用于定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步;
获取模块三,用于需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (7)
1.一种结构化数据版本管理方法与系统,其特征在于:包括以下步骤:
S1:建立以ID为头结点的倒排索引,所述倒排索引使用链表结构,每个索引链上的第一个节点为最新版本的数据,后续节点上版本依次降低;
S2:根据写入的ID在倒排索引的ID中找到数据ID所在位置;
S3:获取数据所在位置中的Version与SHA256;
S4:计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较;
S5:若相同则忽略,不同则进入下一步;
S6:插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部;
S7:需要获取最新数据时,从ID中找到数据ID所在位置;
S8:定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步;
S9:当需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
2.根据权利要求1所述的一种结构化数据版本管理方法与系统,其特征在于:所述倒排索引链表的长度可根据版本的数量进行限制。
3.根据权利要求1所述的一种结构化数据版本管理方法与系统,其特征在于:所述数据版本的结构包括数据ID、当前最新的数据版本号Version、最新数据入版本库的时间戳TS、当前最新数据的数据指纹。
4.根据权利要求3所述的一种结构化数据版本管理方法与系统,其特征在于:所述当前最新数据的数据指纹通过SHA256方式进行计算,所述SHA256的计算方法:将所有数据按字段排序后用“+”隔开,计算SHA256值,若数据为复杂嵌套数据,则下级数据结构中的字段也要进行一次排序,排序规则遵循Alpha Beta。
5.一种结构化数据版本管理系统,其特征在于:包括
数据版本储存和索引模块,用于建立以ID为头结点的倒排索引,所述倒排索引使用链表结构,每个索引链上的第一个节点为最新版本的数据,后续节点上版本依次降低;
数据版本生成写入模块,用于据写入的ID在倒排索引的ID中找到数据ID所在位置,获取数据所在位置中的Version与SHA256,计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较,若相同则忽略,不同则为插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部;
数据版本快速访问模块,用于获取最新数据时,从ID中找到数据ID所在位置,定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步,需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
6.根据权利要求5所述的一种结构化数据版本管理系统,其特征在于:所述数据版本生成写入模块包括
查找模块一,用于根据写入的ID在倒排索引的ID中找到数据ID所在位置;
获取模块一,用于获取数据所在位置中的Version与SHA256;
计算比较模块,用于计算当前数据的SHA256,并与版本库中当前最新版本的SHA256进行比较;
判断模块,用于判断计算比较模块比较结果,若相同则忽略,不同则为插入新版本数据;
倒排模块,用于对插入新版本数据,先获取头部数据版本N作为head,然后将头部数据版本N+1作为生成新数据版本,并重新赋予head,再将新数据版本插入到倒排索引头部。
7.根据权利要求5所述的一种结构化数据版本管理系统,其特征在于:所述数据版本快速访问模块包括
查找模块二,用于获取最新数据时,从ID中找到数据ID所在位置;
获取模块二,用于定位数据所在目标数据ID的索引版本节点,直接获取首节点的数据,指针只需要移动一步;
获取模块三,用于需要获取历史版本数据时,则指针从首节点的数据向后继续移动至目标版本数据,取出目标数据版本的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992620.3A CN112035554B (zh) | 2020-09-21 | 2020-09-21 | 一种结构化数据版本管理方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010992620.3A CN112035554B (zh) | 2020-09-21 | 2020-09-21 | 一种结构化数据版本管理方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035554A CN112035554A (zh) | 2020-12-04 |
CN112035554B true CN112035554B (zh) | 2023-09-26 |
Family
ID=73574362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010992620.3A Active CN112035554B (zh) | 2020-09-21 | 2020-09-21 | 一种结构化数据版本管理方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035554B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183915A (zh) * | 2015-10-14 | 2015-12-23 | 江苏师范大学 | 减少索引维护开销的多版本管理方法 |
CN106294768A (zh) * | 2016-08-11 | 2017-01-04 | 深圳市宜搜科技发展有限公司 | 信息搜索方法及信息搜索引擎 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102385506A (zh) * | 2010-08-30 | 2012-03-21 | 鸿富锦精密工业(深圳)有限公司 | 用户数据版本转换系统及其用户数据版本转换方法 |
-
2020
- 2020-09-21 CN CN202010992620.3A patent/CN112035554B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183915A (zh) * | 2015-10-14 | 2015-12-23 | 江苏师范大学 | 减少索引维护开销的多版本管理方法 |
CN106294768A (zh) * | 2016-08-11 | 2017-01-04 | 深圳市宜搜科技发展有限公司 | 信息搜索方法及信息搜索引擎 |
Non-Patent Citations (1)
Title |
---|
夏英,彭大芹,葛君伟.动态多版本并行控制技术在主存数据库中的实现.计算机应用研究.2002,(05),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112035554A (zh) | 2020-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200272610A1 (en) | Method, apparatus, device and medium for storing and querying data | |
CN102929936B (zh) | 日志记录方法、日志查询方法及系统 | |
CN111190904B (zh) | 一种图-关系数据库混合存储的方法和装置 | |
WO2015010509A1 (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
Ramesh et al. | Data modelling for discrete time series data using Cassandra and MongoDB | |
CN108984626B (zh) | 一种数据处理方法、装置及服务器 | |
CN115470284A (zh) | 一种多源异构数据源导入Janusgraph图数据库的方法和装置 | |
CN109189759A (zh) | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 | |
CN112035554B (zh) | 一种结构化数据版本管理方法与系统 | |
CN109213760A (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN115470235A (zh) | 一种数据处理方法、装置以及设备 | |
CN111752941B (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN116881243A (zh) | 基于时间序列数据特征的学习型索引方法及系统 | |
CN103116652A (zh) | 一种基于拉链信息的索引存储管理方法 | |
CN110262755A (zh) | 一种嵌入式系统的文件存储方法 | |
CN109241098B (zh) | 一种分布式数据库的查询优化方法 | |
CN110263108A (zh) | 一种基于道路网的关键词Skyline模糊查询方法及系统 | |
CN115470223A (zh) | 一种基于两层时间标识的数据湖数据增量消费方法 | |
CN114936045B (zh) | Mcal的io驱动模块自动配置方法及系统、存储介质 | |
CN113742307A (zh) | 一种基于值日志系统的二级索引的存储和查询方法及系统 | |
CN113127660A (zh) | 一种时序图形数据库存储方法及装置 | |
CN112463837A (zh) | 一种关系型数据库数据存储查询方法 | |
CN109977160A (zh) | 数据操作方法、装置、设备和存储介质 | |
CN117193674B (zh) | 一种提升物联网设备海量数据存取效能的方法及装置 | |
CN115982096B (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 |