CN113448964A - 一种基于图-kv的混合存储方法及装置 - Google Patents

一种基于图-kv的混合存储方法及装置 Download PDF

Info

Publication number
CN113448964A
CN113448964A CN202110731629.3A CN202110731629A CN113448964A CN 113448964 A CN113448964 A CN 113448964A CN 202110731629 A CN202110731629 A CN 202110731629A CN 113448964 A CN113448964 A CN 113448964A
Authority
CN
China
Prior art keywords
vertex
structure data
graph structure
edge
record
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
Application number
CN202110731629.3A
Other languages
English (en)
Other versions
CN113448964B (zh
Inventor
吕伟
程萍
唐俊
张睿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Shutian Mengtu Data Technology Co ltd
Original Assignee
Sichuan Shutian Mengtu Data Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Shutian Mengtu Data Technology Co ltd filed Critical Sichuan Shutian Mengtu Data Technology Co ltd
Priority to CN202110731629.3A priority Critical patent/CN113448964B/zh
Publication of CN113448964A publication Critical patent/CN113448964A/zh
Application granted granted Critical
Publication of CN113448964B publication Critical patent/CN113448964B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据处理领域,提供了一种基于图‑KV的混合存储方法及装置,包括VLOG、图结构数据存储和索引存储;所述VLOG用于存储value,其中,所述value为非图结构数据,所述value插入于所述VLOG后生成偏移量,所述偏移量与所述value对应的key作为非图结构数据的索引信息;所述图结构数据存储仅用于存储边和顶点的图结构数据,所述顶点和边分别包含唯一一个ID编号,所述顶点和边的ID编号与所述顶点和边的非图结构数据插入到VLOG中的value对应的key一一对应,所述ID编号与所述value对应的key作为图结构数据的索引信息;所述索引存储用于存储索引信息,本发明将图对象的图结构数据与非图结构数据分开存储,用户可以根据需求快速从VLOG中获取非图结构数据或从图结构数据存储中获取图结构数据。

Description

一种基于图-KV的混合存储方法及装置
【技术领域】
本发明涉及数据处理领域,具体涉及一种基于图-KV的混合存储方法及装置。
【背景技术】
存储引擎是数据库中底层的组件,也是数据库中最重要的一个模块。随着时代的发展,越来越多的数据源源不断地产生,信息的生产和存储规模变得越来越大,传统关系型数据库在大数据方面的表现并不够好,例如关系型数据库在查找人与人之间的关联关系时,往往需要联合多表查询,特别是在度数更高的时候,查询速度更是非常缓慢,甚至超时。
大数据时代到来,各种非关系型数据库(NoSQL)应运而生,NoSQL(Not only SQL)泛指非关系型数据库。随着Web 2.0网站的兴起、5G物联网的接入、大数据挖掘和分析需求的增长、社交网络的发展等,诸多应用场景暴露了传统数据库很多难以克服的问题,而非关系型数据库则由于其自身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
关系型数据库的缺点:
1.关系数据库无法满足对海量数据的高效率存储和访问的需求。
2.关系数据库无法满足对数据库的高可扩展性和高可用性的需求。
3.关系数据库无法存储和处理半结构化/非结构化数据。
4.关系数据库复杂的事务机制效率太低。
关系型数据库中的表需要存储格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,时间和空间的开销大。这样的结构可以便于表与表之间进行连接等操作。但从另一个角度来说,它也是关系型数据库性能瓶颈的一个因素。
NoSQL的优势:
1.灵活的可扩展性。
2.大数据量和高性能。
3.灵活的数据模型。
目前,已经有多种图数据的存取方法被提出。专利CN201911388011.0中的存储原理是:结合传统关系数据库和图数据库,利用传统关系型数据库的底层行记录结构,在行记录结构上进行扩展,内嵌了对于图结构的描述。在顶点的记录上内嵌了对该顶点关系的描述,而在关系的行记录上,内嵌了对起止顶点的描述。但该发明适合存储结构化的图数据,对于非结构化或半结构化的图数据支持并不友好。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明要解决的技术问题是:
现有技术是将图对象中的图结构数据和非图结构数据(即图结构数据中顶点和边的属性信息等)均以KV的形式放在一起进行存储,但是实际场景中的有些情况,只需要获取图结构数据,那么在获取图结构数据的时候会将图结构数据和非图结构数据均查询出来,这将极大占用内存,同时降低查询的效率。
本发明通过如下技术方案达到上述目的:
第一方面,本发明提供了一种基于图-KV的混合存储方法,包括VLOG、图结构数据存储和索引存储;
所述VLOG用于存储value,其中,所述value为非图结构数据,所述value插入于所述VLOG后生成偏移量,所述偏移量与所述value对应的key作为非图结构数据的索引信息;
所述图结构数据存储仅用于存储边和顶点的图结构数据,所述顶点和边分别包含唯一一个ID编号,所述顶点和边的ID编号与所述顶点和边的非图结构数据插入到VLOG中的value对应的key一一对应,所述ID编号与所述value对应的key作为图结构数据的索引信息;
所述索引存储用于存储索引信息。
优选的,在图-KV的混合存储方法中,接收到插入请求时,方法包括:
接收插入请求;
如果所述插入请求为边记录,将所述边记录作为value插入VLOG中生成偏移量,并返回所述边记录的偏移量,其中,所述边记录为边的非图结构数据;
根据所述边记录中起始顶点的key和终止顶点的key,从索引存储中查询,分别得到对应的起始顶点的ID编号和终止顶点的ID编号;
根据所述起始顶点的ID编号和终止顶点的ID编号,将所述边记录中的边插入图结构数据中,生成所述边的ID编号,并返回边的ID编号;
将所述边记录的偏移量和边记录的key作为非图结构数据的索引信息插入索引存储中,将所述边记录的key和边的ID编号作为图结构数据的索引信息插入索引存储中。
优选的,在图-KV的混合存储方法中,接收到插入请求时,方法包括:
接收插入请求;
如果所述插入请求为顶点记录,将所述顶点记录作为value插入VLOG中生成偏移量,并返回所述顶点记录的偏移量,其中,所述顶点记录为顶点的非图结构数据;
将所述顶点记录中的顶点插入图结构数据中,生成所述顶点的ID编号,并返回顶点的ID编号;
将所述顶点记录的偏移量和顶点记录的key作为非图结构数据的索引信息插入索引存储中,将所述顶点记录的key和顶点的ID编号作为图结构数据的索引信息插入索引存储中。
优选的,所述索引存储,具体包括:
将索引信息插入内存中活动的跳表中,若活动的跳表满足冻结条件,则将活动的跳表冻结,冻结的跳表只支持查询;
每冻结一次跳表将在后台任务队列中添加一个写入任务,后台线程不断处理后台任务队列中的写入任务,将冻结的跳表中的数据写入磁盘,每一次跳表落盘都将在未合并层生成一个新的索引文件。
优选的,还包括,每冻结一次跳表将在后台任务队列中添加一个合并任务,将未合并层中的索引文件与合并层中的索引文件进行合并,其中,所述合并层中只存在唯一一个索引文件。
优选的,在图-KV的混合存储方法中,接收到查询请求时,方法包括:
在活动的跳表中查询,若活动的跳表中未找到,则在内存中冻结的跳表中查询;
若内存中冻结的跳表中还未找到,则依次查询磁盘的未合并层中的各个索引文件;
若磁盘的未合并层中的各个索引文件中也未找到,则查询磁盘的合并层中的索引文件,此时,若还没有找到,则表示查询请求的索引信息并不存在。
优选的,若找到查询请求的索引信息,将索引信息返回,其中,返回的索引信息为不包含删除标志且为最新的索引信息。
优选的,将删除请求和更新请求均替换为插入请求。
优选的,所述根据所述起始顶点的ID编号和终止顶点的ID编号,将所述边记录中的边插入图结构数据中,生成所述边的ID编号,并返回边的ID编号;
根据所述起始顶点的ID编号在所述图结构数据中找到对应的起始顶点,将所述起始顶点的最后一个出边的ID编号更新为插入的边的ID编号,并更新起始顶点的上一个出边的ID编号;
根据所述终止顶点的ID编号在所述图结构数据中找到对应的终止顶点,将所述终止顶点的最后一个入边的ID编号更新为插入的边的ID编号,并更新终止顶点的上一个入边的ID编号。
第二方面,本发明还提供了一种基于图-KV的混合存储装置,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行权利要求1-9任一所述的图和KV混合存储方法。
与现有技术相比,本发明的有益效果是:
本发明将图对象的图结构数据与非图结构数据分开存储,所述VLOG用于存储非图结构数据,所述图结构数据存储仅用于存储边和顶点的图结构数据;当用户仅需获取图结构数据时,可以通过索引存储查询索引信息,然后根据索引信息从图结构数据存储中得到相应的图结构数据;当用户需要获取非图结构数据时,可以直接通过索引存储查询索引信息,然后根据索引信息从VLOG中获取相应的非图结构数据,这种方式将极大降低内存的占用量,同时提高查询效率,用户可以根据需求进行查询;进一步,本发明单独维护一个索引存储,即将索引信息插入于索引存储中,使得分盘存储成为可能,可以将索引存储放置于高性能的磁盘中,将VLOG放置于普通的磁盘中,在提高性能的同时还可以降低成本。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于图-KV的混合存储方法的VLOG的刷盘机制;
图2是本发明实施例提供的一种基于图-KV的混合存储方法的VLOG的刷盘机制;
图3是本发明实施例提供的一种基于图-KV的混合存储方法实施例中使用的图结构数据模型示意图;
图4是本发明实施例提供的一种基于图-KV的混合存储方法实施例中使用的向图结构数据模型中插入边的示意图;
图5是本发明实施例提供的一种基于图-KV的混合存储方法的插入方法结构示意图;
图6是本发明实施例提供的一种基于图-KV的混合存储方法实施例中使用的向图结构数据模型中插入顶点的示意图;
图7是本发明实施例提供的一种基于图-KV的混合存储方法的查询方法的结构示意图;
图8是本发明实施例提供的一种基于图-KV的混合存储方法中向图结构数据中插入边的流程图;
图9是本发明实施例提供的一种基于图-KV的混合存储方法中向图结构数据中插入顶点的流程图;
图10是本发明实施例提供的一种基于图-KV的混合存储方法中索引存储的结构示意图;
图11是本发明实施例提供的一种基于图-KV的混合存储方法中从索引存储中查询数据的流程图;
图12是本发明实施例提供的一种基于图-KV的混合存储方法中的图模型示意图;
图13是本发明实施例提供的一种基于图-KV的混合存储方法中图结构数据的图模型示意图;
图14是本发明实施例提供的一种基于图-KV的混合存储方法中在图结构数据中插入一条边之后表1变化后的图结构数据;
图15是本发明实施例提供的一种基于图-KV的混合存储方法中在图结构数据中插入一条边之后表2变化后的图结构数据;
图16是本发明实施例提供的一种基于图-KV的混合存储方法中在图结构数据中插入一条边之后表3变化后的图结构数据;
图17是本发明实施例提供的一种基于图-KV的混合存储方法中在图结构数据中插入一条边之后表4变化后的图结构数据;
图18是本发明实施例提供的一种基于图-KV的混合存储方法中在图结构数据中插入一条边之后表5变化后的图结构数据;
图19是本发明实施例提供的一种基于图-KV的混合存储方法中在图结构数据中插入一条边之后表6变化后的图结构数据;
图20是本发明实施例提供的一种基于图-KV的混合存储装置的结构示意图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
本发明实施例1提供了一种基于图-KV的混合存储方法,包括VLOG、图结构数据存储和索引存储;
如图1-2所示,VLOG的包括三个线程,具体为:缓冲区数据加载线程、缓冲区刷盘线程和检查点刷盘线程,其中,这三个线程同时进行。缓冲区数据加载线程:当所述VLOG接收一个非图结构数据(即value)的插入请求时,缓冲区数据加载线程判断缓冲区是否有足够的空间,若缓冲区有足够的空间大小时,申请空间并将所述非图结构数据以value的形式写入缓冲区,非图结构数据插入缓冲区后,将生成一偏移量,所述偏移量为非图结构数据在磁盘中的位置,将所述偏移量与value对应的key作为非图结构数据索引信息插入至所述索引存储中;若缓冲区没有足够的空间大小,则等待,将资源让给缓冲区刷盘线程和检查点刷盘线程,让缓冲区的非图结构数据和检查点刷入磁盘,直至可以在缓冲区中插入新的非图结构数据。缓冲区刷盘线程:监控缓冲区中等待刷入磁盘的非图结构数据的大小,当达到一次刷盘阈值或者到达缓冲区尾部(即满足刷盘条件)时,则进行刷盘操作,刷盘后回收标记数组;检查点刷盘线程:将每次刷入磁盘的检查点写入磁盘。其中,所述缓冲区即为内存。
实际场景中存在一种可实现的方式,具体为:
如图1-2所示,VLOG接收一个非图结构数据(即value)的插入请求,首先利用缓冲区数据加载线程向内存申请空间,并返回申请空间的起始位置,在内存中的标记数组中记录所述非图结构数据占用内存空间的起始位置和非图结构数据占用内存空间的大小,申请到空间之后,缓冲区数据加载线程向申请到的缓冲区中写入非图结构数据;所述缓冲区刷盘线程监视缓冲区中等待刷入磁盘的非图结构数据的大小,当达到一次刷盘阈值或者到达缓冲区尾部时,则进行刷盘操作,刷盘后回收标记数组空间;检查点刷盘线程:将每次刷入磁盘的检查点写入磁盘。
所述VLOG用于存储value,其中,所述value为非图结构数据,所述value插入于所述VLOG后生成偏移量,所述偏移量与所述value对应的key作为非图结构数据的索引信息;其中,非图结构数据包括:与图对象中的图结构数据相对应的非图结构数据和与图对象没有任何关系的数据(统称为非图结构数据),VLOG中的非图结构数据均以value的形式进行存储,与value对应的key和偏移量存储于索引存储中。
所述图结构数据存储仅用于存储边和顶点的图结构数据,所述顶点和边分别包含唯一一个ID编号,所述顶点和边的ID编号与所述顶点和边的非图结构数据插入到VLOG中的value对应的key一一对应,所述ID编号与所述value对应的key作为图结构数据的索引信息;
所述索引存储用于存储索引信息。
本实施例提供一种实际场景中可实现的方式,具体为:
假设本实施例中当前的图结构数据存储中的某一图结构数据如图3所示,所述图结构数据包含顶点数据模型和边数据模型,所述顶点数据模型的属性包括:顶点的ID编号、最后一个出边的ID编号和最后一个入边的ID编号;所述边数据模型包括:边的ID编号、边的起始顶点的ID编号、边的终止顶点的ID编号、起始顶点的上一个出边的ID编号和终止顶点的上一个入边的ID编号。由图XX可知,包括N1、N2、N3、N4四个顶点,L1、L2、L3、L4四个边,各个顶点与与边之间的关系如图3所示。
假设现在要插入一个边至当前的图结构数据中,如图3-5所示,所述VLOG接收边记录,假设边记录为["20216021700_abc","131xxxxx","189xxxxx",300,"长途"],此边记录为一则通话记录,其含义为"131xxxxx"(电话号码)对应的人向"189xxxxx"(电话号码)对应的人打电话,也就是在"131xxxxx"对应的人和"189xxxxx"对应的人之间建立一个关系(即边),此时将该边记录作为value插入VLOG中生成偏移量0x00,并返回该边记录对应的偏移量,该偏移量可以唯一指定该边记录在VLOG对应的磁盘中的位置,边记录中的"20216021700_abc"可以唯一标识该条记录,本实施例将"20216021700_abc"(即为通话单号)作为该边记录的value对应的key,将"20216021700_abc"和偏移量0x00作为该边记录["20216021700_abc","131xxxxx","189xxxxx",300,"长途"]在VLOG中的索引信息插入索引存储中;想要将边插入图结构数据中,需要先找到边对应的起始顶点和终止顶点的ID编号,由于本记录是"131xxxxx"对应的人和"189xxxxx"对应的人之间建立一个关系,因此需要找到"131xxxxx"和"189xxxxx"在图结构数据中的对应的顶点的ID编号,假设"131xxxxx"和"189xxxxx"分别为起始顶点的和终止顶点的key,则可根据"131xxxxx"和"189xxxxx"从索引存储中查询得到131xxxxx"(起始顶点的key)和"189xxxxx"(终止顶点的key)在图结构数据中对应的ID编号,假设查询到的起始顶点和终止顶点在图结构数据中的ID编号分别为N1和N4,(其中假设"131xxxxx"和"189xxxxx"已经作为key存储至索引存储中),找到起始顶点的ID编号和终止顶点的ID编号之后,就可以在图结构数据中插入边了,根据所述起始顶点的ID编号N1在所述图结构数据中找到对应的起始顶点,更新ID编号为N1的起始顶点的最后一个出边的ID编号,并将其更新为插入的边的ID编号L5(其中L5为全局指定且唯一),如果ID编号为N1的起始顶点的上一个出边的ID编号不为空,则更新起始顶点的上一个出边的ID编号为L4;根据所述终止顶点的ID编号N4在所述图结构数据中找到对应的终止顶点,更新ID编号为N4的终止顶点的最后一个入边的ID编号,并将其更新为插入的边的ID编号L5,如果ID编号为N4的终止顶点的上一个入边的ID编号不为空,则更新终止顶点的上一个入边的ID编号为L1,将"20216021700_abc"和边的ID编号L5作为图结构数据的索引信息插入索引存储中。当一个边插入到图结构数据之后,需要更新图结构数据的顶点数据模型和边数据模型,其中,本实施例仅仅是举例说明,并不用于限定本发明。
假设现在要插入一个顶点至当前的图结构数据中,如图3、图5和图6所示,所述VLOG接收顶点记录,假设顶点记录为["131xxxxx","张三","普通用户"],将该顶点记录value插入VLOG中生成偏移量0x01,并返回该顶点记录对应的偏移量0x01,该该偏移量可以唯一指定该顶点记录在VLOG对应的磁盘中的位置,顶点记录记录中的"131xxxxx"(电话号码)可以唯一标识该条记录,本实施例将"131xxxxx"作为该顶点记录的value对应的key,将"131xxxxx"和偏移量0x01作为该顶点记录["131xxxxx","张三","普通用户"]在VLOG中的索引信息插入索引存储中;然后将该顶点记录插入图结构数据中生成一个顶点的ID编号N5,将"131xxxxx"和顶底的ID编号N5作为图结构数据的索引信息插入索引存储中。当一个边插入到图结构数据之后,只需更新图结构数据的顶点数据模型。若接收一条与图对象无关的非图结构数据的KV记录的插入请求时,只需将该条KV记录作为value插入VLOG中,返回偏移量,然后将该条KV记录的key和偏移量作为索引信息插入索引存储中。
假设现在需要查询ID编号为N3的顶点的所有关系时(即与该顶点相连接的所有边,此时只需要查询图结构数据就可以得到,而不需查询VLOG中的非图结构数据),如图3和图7所示,根据给出的key(如电话号码,身份证等唯一标识信息)在索引存储中找到与key对应的顶点的ID编号N3,根据顶点数据模型中找出该顶点的ID编号N3对应的最后一个出边的ID编号L2,然后根据边数据模型找到ID编号为L2的边的起始顶点N3的上一个出边的ID编号L1,通过多次循环遍历找出ID编号为N3的顶点的所有出边,入边关系同理,根据此种方式便可以得到顶点N3对应的所有关系的ID编号,但是此时顶点对应的所有关系仅仅以ID编号的形式呈现给用户,若用户需要将获取的顶点N3对应的所有关系的ID编号以key的形式呈现,则可以根据ID编号与key的对应关系,从索引存储中进行查询,从而得到ID编号为N3的顶点的所有关系对应的key(包括顶点N3的key和与顶点N3相关联的所有关系的ID编号对应的key),并以key的形式将ID编号为N3的顶点的所有关系呈现给用户。如需查询ID编号为N3的顶点的非图结构数据,可以通过key和key对应的偏移量从VLOG中查询得到。在获取图对象的数据时,通常情况下,认为获取图结构数据的访问次数多余非图结构数据,所以单独查询图结构数据存储同传统存储相比可以有效减少内存的使用,或者同等内存占用时会取得更好的缓存效果(这里的传统存储指那些存储、读取、解析等操作都必须加载完整一行数据的)。
在图-KV的混合存储方法中,接收到插入请求时,方法包括:
假设本实施例中当前的图结构数据存储中的某一图结构数据如图3,所述图结构数据包含顶点数据模型和边数据模型,所述顶点数据模型的属性包括:顶点的ID编号、最后一个出边的ID编号和最后一个入边的ID编号;所述边数据模型包括:边的ID编号、边的起始顶点的ID编号、边的终止顶点的ID编号、起始顶点的上一个出边的ID编号和终止顶点的上一个入边的ID编号。由图XX可知,包括N1、N2、N3、N4四个顶点,L1、L2、L3、L4四个边,各个顶点与边之间的关系如图3所示。
如图8所示,步骤101,接收插入请求;步骤102,如果所述插入请求为边记录,将所述边记录作为value插入VLOG中生成偏移量,并返回所述边记录的偏移量,其中,所述边记录为边的非图结构数据;步骤103,根据所述边记录中起始顶点的key和终止顶点的key,从索引存储中查询,分别得到对应的起始顶点的ID编号和终止顶点的ID编号;步骤104,根据所述起始顶点的ID编号和终止顶点的ID编号,将所述边记录中的边插入图结构数据中,生成所述边的ID编号,并返回边的ID编号;;步骤105,将所述边记录的偏移量和边记录的key作为非图结构数据的索引信息插入索引存储中,将所述边记录的key和边的ID编号作为图结构数据的索引信息插入索引存储中。
假设现在要插入一个边至当前的图结构数据中,如图3-5所示,所述VLOG接收边记录,假设边记录为["20216021700_abc","131xxxxx","189xxxxx",300,"长途"],此边记录为一则通话记录,其含义为"131xxxxx"(电话号码)对应的人向"189xxxxx"(电话号码)对应的人打电话,也就是在"131xxxxx"对应的人和"189xxxxx"对应的人之间建立一个关系(即边),此时将该边记录作为value插入VLOG中生成偏移量0x00,并返回该边记录对应的偏移量,该偏移量可以唯一指定该边记录在VLOG对应的磁盘中的位置,边记录中的"20216021700_abc"可以唯一标识该条记录,本实施例将"20216021700_abc"(即为通话单号)作为该边记录的value对应的key,将"20216021700_abc"和偏移量0x00作为该边记录["20216021700_abc","131xxxxx","189xxxxx",300,"长途"]在VLOG中的索引信息插入索引存储中;想要将边插入图结构数据中,需要先找到边对应的起始顶点和终止顶点的ID编号,由于本记录是"131xxxxx"对应的人和"189xxxxx"对应的人之间建立一个关系,因此需要找到"131xxxxx"和"189xxxxx"在图结构数据中的对应的顶点的ID编号,假设"131xxxxx"和"189xxxxx"分别为起始顶点的和终止顶点的key,则可根据"131xxxxx"和"189xxxxx"从索引存储中查询得到131xxxxx"(起始顶点的key)和"189xxxxx"(终止顶点的key)在图结构数据中对应的ID编号,假设查询到的起始顶点和终止顶点在图结构数据中的ID编号分别为N1和N4,(其中假设"131xxxxx"和"189xxxxx"已经作为key存储至索引存储中),找到起始顶点的ID编号和终止顶点的ID编号之后,就可以在图结构数据中插入边了,根据所述起始顶点的ID编号N1在所述图结构数据中找到对应的起始顶点,更新ID编号为N1的起始顶点的最后一个出边的ID编号,并将其更新为插入的边的ID编号L5(其中L5为全局指定且唯一),如果ID编号为N1的起始顶点的上一个出边的ID编号不为空,则更新起始顶点的上一个出边的ID编号为L4;根据所述终止顶点的ID编号N4在所述图结构数据中找到对应的终止顶点,更新ID编号为N4的终止顶点的最后一个入边的ID编号,并将其更新为插入的边的ID编号L5,如果ID编号为N4的终止顶点的上一个入边的ID编号不为空,则更新终止顶点的上一个入边的ID编号为L1,将"20216021700_abc"和边的ID编号L5作为图结构数据的索引信息插入索引存储中。当一个边插入到图结构数据之后,需要更新图结构数据的顶点数据模型和边数据模型,其中,本实施例仅仅是举例说明,并不用于限定本发明。
在图-KV的混合存储方法中,接收到插入请求时,方法包括:
如图9所述,步骤201,接收插入请求;步骤202,如果所述插入请求为顶点记录,将所述顶点记录作为value插入VLOG中生成偏移量,并返回所述顶点记录的偏移量,其中,所述顶点记录为顶点的非图结构数据;步骤203,将所述顶点记录中的顶点插入图结构数据中,生成所述顶点的ID编号,并返回顶点的ID编号;步骤204,将所述顶点记录的偏移量和顶点记录的key作为非图结构数据的索引信息插入索引存储中,将所述顶点记录的key和顶点的ID编号作为图结构数据的索引信息插入索引存储中。
假设现在要插入一个顶点至当前的图结构数据中,如图3、图5和图6所示,所述VLOG接收顶点记录,假设顶点记录为["131xxxxx","张三","普通用户"],将该顶点记录value插入VLOG中生成偏移量0x01,并返回该顶点记录对应的偏移量0x01,该该偏移量可以唯一指定该顶点记录在VLOG对应的磁盘中的位置,顶点记录记录中的"131xxxxx"(电话号码)可以唯一标识该条记录,本实施例将"131xxxxx"作为该顶点记录的value对应的key,将"131xxxxx"和偏移量0x01作为该顶点记录["131xxxxx","张三","普通用户"]在VLOG中的索引信息插入索引存储中;然后将该顶点记录插入图结构数据中生成一个顶点的ID编号N5,将"131xxxxx"和顶底的ID编号N5作为图结构数据的索引信息插入索引存储中。当一个边插入到图结构数据之后,只需更新图结构数据的顶点数据模型。若接收一条与图对象无关的非图结构数据的KV记录的插入请求时,只需将该条KV记录作为value插入VLOG中,返回偏移量,然后将该条KV记录的key和偏移量作为索引信息插入索引存储中。
所述索引存储,具体包括:如图10所示,将索引信息插入内存中活动的跳表中,若活动的跳表满足冻结条件,则将活动的跳表冻结,冻结的跳表只支持查询;每冻结一次跳表将在后台任务队列中添加一个写入任务,后台线程不断处理后台任务队列中的写入任务,将冻结的跳表中的数据写入磁盘,每一次跳表落盘都将在未合并层生成一个新的索引文件。
所有索引信息的插入都是在活动的跳表上进行的,活动的跳表在满足冻结条件时,会被冻结从而替换成冻结的跳表,冻结后的跳表不再允许插入,变为只读,其中活动跳表冻结的条件具体可以为:人为设定定时触发冻结操作、活动的跳表达到内存阈值或者手动触发冻结操作等,具体触发冻结操作的条件不唯一,可以根据需求自行设置。每一次冻结一个跳表都将在后台任务队列中添加一个写入任务,后台线程不断处理后台任务队列中的写入任务,将冻结的跳表中的数据以B+树的结构写入磁盘,每一次跳表落盘都将在未合并层生成一个新的索引文件,本实施例假设未合并层中的索引文件为Level 0。
如图10所示,还包括,每冻结一次跳表将在后台任务队列中添加一个合并任务,将未合并层中的索引文件与合并层中的索引文件进行合并,其中,所述合并层中只存在唯一一个索引文件。
每一次跳表的冻结操作,都将向后台任务队列添加一个合并任务,合并任务将不断获取后台任务队列中的任务,将未合并层中的索引文件Level 0和合并层中的索引文件进行合并,假设合并层中的索引文件为Level 1,且只存在唯一一个Level 1索引文件。
在图和KV混合存储方法中,接收到查询请求时,方法包括:
如图11所示,步骤301,在活动的跳表中查询;步骤302,若活动的跳表中未找到,则在内存中冻结的跳表中查询;步骤303,若内存中冻结的跳表中还未找到,则依次查询磁盘的未合并层中的各个索引文件;步骤304,若磁盘的未合并层中的各个索引文件中也未找到,则查询磁盘的合并层中的索引文件,此时;步骤305,若还没有找到,则表示查询请求的索引信息并不存在。
当接收到一个查询请求时,若想查询图结构数据存储中的图结构数据,根据key在索引存储中查询与key相对应的ID编号,然后从图结构数据中获取与该ID编号对应的图结构数据。若相查询非图结构数据,根据key在索引存储中查询与key相对应的偏移量,然后从VLOG中获取偏移量对应的非图结构数据。
在索引存储中查询时,先在最新的跳表中查询(即活动的跳表中查询),若活动的跳表中未找到,则在内存中冻结的跳表中查询;若内存中冻结的跳表中还未找到,则依次查询磁盘的未合并层中的各个索引文件Level 0,使用布隆过滤加速排除不存在key的索引文件,若从磁盘的未合并层中的各个索引文件Level 0中也未找到,则查询磁盘的合并层中的索引文件Level 1,若在索引文件Level 1中还没有找到,则表示不存在。
若找到查询请求的索引信息,将索引信息返回,其中,返回的索引信息为不包含删除标志且为最新的索引信息。
如果找到,则还要根据索引信息的标志字段是否包含删除标志来决定是否返回记录,若包含删除标志则表示已经删除,此时不返回索引信息;否则根据日记序号(Logsequence number简写为:LSN)最新的索引信息定位到对应的记录并返回最新的索引信息。
将删除请求和更新请求均替换为插入请求。此处将删除请求和更新请求均替换为插入请求针对VLOG中非图结构数据的操作而言。
对于KV记录(即非图结构数据,在VLOG中以value的形式进行存储)而言,记录更新之后,后续查询索引存储时能够获取最新的索引信息,则意味着更新操作成功。删除操作完成之后,后续查询结果为空,则表示删除成功。本发明将更新和删除操作替换为等价的插入操作,只需要插入最新的KV记录即可,并不会在旧的非图结构数据上修改。在查询索引存储时,理论上一个key对应很多条非图结构数据,但是索引存储只会返回LSN最新的那条索引信息。这也是本发明支持数据闪回功能的原因,在查询时,加上时间戳或者LSN就可以查询得到任意时间节点的非图结构数据。
由于本发明中没有删除VLOG中的旧数据,所以VLOG中保存了所有版本的信息。为了防止VLOG中存储资源的快速耗尽,将通过可配置的方式,限制VLOG中非图结构数据的存储保留时间。后台任务将定期的对所有非图结构数据进行遍历,判断旧版本的非图结构数据是否超过配置的时间,超过时间的失效非图结构数据将被物理删除。
所述根据所述起始顶点的ID编号和终止顶点的ID编号,将所述边记录中的边插入图结构数据中,生成所述边的ID编号,并返回边的ID编号;根据所述起始顶点的ID编号在所述图结构数据中找到对应的起始顶点,将所述起始顶点的最后一个出边的ID编号更新为插入的边的ID编号,并更新起始顶点的上一个出边的ID编号;根据所述终止顶点的ID编号在所述图结构数据中找到对应的终止顶点,将所述终止顶点的最后一个入边的ID编号更新为插入的边的ID编号,并更新终止顶点的上一个入边的ID编号。
假设现在要插入一个边至当前的图结构数据中,如图3-5所示,所述VLOG接收边记录,假设边记录为["20216021700_abc","131xxxxx","189xxxxx",300,"长途"],此边记录为一则通话记录,其含义为"131xxxxx"(电话号码)对应的人向"189xxxxx"(电话号码)对应的人打电话,也就是在"131xxxxx"对应的人和"189xxxxx"对应的人之间建立一个关系(即边),此时将该边记录作为value插入VLOG中生成偏移量0x00,并返回该边记录对应的偏移量,该偏移量可以唯一指定该边记录在VLOG对应的磁盘中的位置,边记录中的"20216021700_abc"可以唯一标识该条记录,本实施例将"20216021700_abc"(即为通话单号)作为该边记录的value对应的key,将"20216021700_abc"和偏移量0x00作为该边记录["20216021700_abc","131xxxxx","189xxxxx",300,"长途"]在VLOG中的索引信息插入索引存储中;想要将边插入图结构数据中,需要先找到边对应的起始顶点和终止顶点的ID编号,由于本记录是"131xxxxx"对应的人和"189xxxxx"对应的人之间建立一个关系,因此需要找到"131xxxxx"和"189xxxxx"在图结构数据中的对应的顶点的ID编号,假设"131xxxxx"和"189xxxxx"分别为起始顶点的和终止顶点的key,则可根据"131xxxxx"和"189xxxxx"从索引存储中查询得到131xxxxx"(起始顶点的key)和"189xxxxx"(终止顶点的key)在图结构数据中对应的ID编号,假设查询到的起始顶点和终止顶点在图结构数据中的ID编号分别为N1和N4,(其中假设"131xxxxx"和"189xxxxx"已经作为key存储至索引存储中),找到起始顶点的ID编号和终止顶点的ID编号之后,就可以在图结构数据中插入边了,根据所述起始顶点的ID编号N1在所述图结构数据中找到对应的起始顶点,更新ID编号为N1的起始顶点的最后一个出边的ID编号,并将其更新为插入的边的ID编号L5(其中L5为全局指定且唯一),如果ID编号为N1的起始顶点的上一个出边的ID编号不为空,则更新起始顶点的上一个出边的ID编号为L4;根据所述终止顶点的ID编号N4在所述图结构数据中找到对应的终止顶点,更新ID编号为N4的终止顶点的最后一个入边的ID编号,并将其更新为插入的边的ID编号L5,如果ID编号为N4的终止顶点的上一个入边的ID编号不为空,则更新终止顶点的上一个入边的ID编号为L1,将"20216021700_abc"和边的ID编号L5作为图结构数据的索引信息插入索引存储中。当一个边插入到图结构数据之后,需要更新图结构数据的顶点数据模型和边数据模型,其中,本实施例仅仅是举例说明,并不用于限定本发明。
实施例2
为了便于用户根据自身的需求快速从图结构数据存储中查询一类顶点和一类边的,本实施例在实施例1的基础上给同一类顶点标记相同的标签,给同一类边标记相同的关系,即标签是一类顶点的集合,关系是一类边的集合,如图12所示,其中的顶点在实际场景中的意义为xx公司、王五、张三和李四;其中xx公司为公司,将其标记为一类标签;王五、张三和李四为人名,将其标记为一类标签;xx公司给张三和李四转账,其中xx公司与张三和李四的关系为转账,因此,将xx公司与张三和李四的关系标记为一类关系;李四给张三和王五通话,其中,李四与张三和王五的关系为通话,因此将李四与张三和王五的关系标记为一类关系。xx公司、王五、张三和李四在图结构数据存储中表现的形式如图13所示,其中,顶点N1表示xx公司,其标签为L1(L1表示公司名的集合),顶点N2、N3和N4分别表示张三、李四和王五,其标签为L2(L2表示人名的集合);边M1表示李四给王五通话,边M2表示李四给张三通话,边M3表示xx公司给李四转账,边M4表示xx公司给张三转账,由于李四给王五通话和李四给张三通话其关系都是通话关系,因此将李四给王五通话和李四给张三通话的通话关系标记为R2(即表示通话的关系的集合),xx公司给李四转账和xx公司给张三转账其关系都是转账关系,因此将xx公司给李四转账和xx公司给张三转账的转账关系标记为R1,假设按照图13构造的图结构数据为:
表1:
Figure BDA0003139404550000161
表2:
Figure BDA0003139404550000162
如要查找标签中ID为1的所有顶点时(即LI对应得到所有顶点),取得表1标签项的第1行,其中标签-顶点数组索引为1。在表2标签-顶点项中找第1行,取得顶点ID值1(即顶点N1),由于索引到上一个标签-顶点记录ID为NULL,查询终止,得到标签1的所有顶点为N1,即L1对应的所有顶点为N1。
如要查找标签中ID为2的所有顶点时(即L2对应的所有顶点),取得表1标签项的第2行,其中标签-顶点数组索引为4,在标签-顶点项中找第4行,取得顶点ID值4(即N4),该行的索引到上一个标签-顶点记录ID为3(即N3);在标签-顶点项中找第3行,取得顶点ID值3(即N3),在该行索引到上一个标签-顶点记录ID为2;在标签-顶点项中找第2行,取得顶点ID值2(即N2),在该行索引到上一个标签-顶点记录ID为NULL;查询终止,得到标签2的所有顶点为N4、N3、N2,即L2对应的所有顶点为N4,N3,N2。
表3:
Figure BDA0003139404550000171
表4:
Figure BDA0003139404550000172
如果要查找关系1的所有边(即R1对应的所有边)。取得表3关系项第1行(即R1),其中最后一条边ID为4。在表4中查找边项第4行,取得边ID为4(即M4),该行同关系类型的上一条边为3(即M3);继续查找边第3行,边ID为3(即M3),该行同关系类型的上一条边为NULL;查找结束,得到关系类型为1的所有边是M4、M3,即R1对应的所有顶点为M4、M3。同理,还可查找到R1对应的所有顶点。
表5:
Figure BDA0003139404550000181
表6:
Figure BDA0003139404550000182
Figure BDA0003139404550000191
如果要查找顶点1(即N1)所有的R1出边(对应实际意义的图,描述是“xx公司向谁转账了?”)。查找表5顶点项第1行(即表示查找顶点N1),得到出边类型的顶点-关系索引为4。在表6顶点-关系项中查找第4行,得到关系ID为1,即R1,上一个边ID是4;在表4边中查找第4行,得到终点2(即N2),起始顶点的上一条同关系类型的出边为3(即M3);在表4边中查找第3行,得到终点3,起始顶点的上一条同关系类型的出边为NULL;查找终止,得到顶点1所有R1出边为M2,M3。
关于标签和顶点的非图结构数据在VLOG中的存储。具体可以为,标签1(即L1)在VLOG中存放的内容可能是[“公司”,列:[“名称”,“成立时间”],列类型:[VARCHAR,INT]];标签2(即L2)在VLOG中的存放的内容可能是[“人”,列:[“姓名”,“年龄”],列类型:[VARCHAR,INT]]。顶点1(即N1)在VLOG中存放的可能是[“xxx公司”,2008];顶点2(即N2)在VLOG中存放的可能是[“张三”,30],对于一个顶点的非图结构数据在VLOG中的value,需要其标签信息才能正确理解其实际意义,仅仅是获取到一个[VARCHAR,INT]是无法得到实际场景的意义的,如判断其到底是公司还是人的。
假设在图12的基础上加入一条边,表示“xx公司”给“王五”转账一笔。非图结构数据的存放于VLOG中。在图结构数据存储中,相当于是在L1-N1到L2-N4添加一条边,边类型为R1(表示转账)。表1-表6的变化后的表分别如图14-图19所示,图14-19中加粗的为在表1-表6基础上变化的部分:
如图14-19所示,在顶点-关系中新增了ID为7的数据,表示顶点4的入边关系1(即R1)。具体可以理解为“王五”新增了收到转账的边。按照方向、标签细分,使得场景更加细化,例如“转账”细分成了“发起转账”和“收到转账”,“通话”细分成了“拨打”和“接听”。我们就能更加准确的处理“王五收到过谁的转账”、“李四给谁打过电话”等问题,减少其他数据的加载,以更少的内存处理查询。(传统数据库,若无索引需要扫通话表;若建立了索引就需要加载索引到内存、查询索引得到通话单号、扫通话单号得到所有接听方。相较于传统数据库,资源利用有效提升)。
实施例3
在上述实施例1提供的基于图-KV的混合存储方法的基础上,本发明还提供了一种可用于实现上述方法的基于图-KV的混合存储装置,如图20所示,是本发明实施例的装置架构示意图。本实施例的基于图-KV的混合存储装置包括一个或多个处理器21以及存储器22。其中,图20中以一个处理器21为例。
所述处理器21和所述存储器22可以通过总线或者其他方式连接,图20中以通过总线连接为例。
所述存储器22作为一种基于图-KV的混合存储方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的基于图-KV的混合存储方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行基于图-KV的混合存储装置的各种功能应用以及数据处理,即实现实施例1的基于图-KV的混合存储方法。
所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的基于图-KV的混合存储装置,例如,执行以上描述的图8-9,图11所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于图-KV的混合存储方法,其特征在于,包括VLOG、图结构数据存储和索引存储;
所述VLOG用于存储value,其中,所述value为非图结构数据,所述value插入于所述VLOG后生成偏移量,所述偏移量与所述value对应的key作为非图结构数据的索引信息;
所述图结构数据存储仅用于存储边和顶点的图结构数据,所述顶点和边分别包含唯一一个ID编号,所述顶点和边的ID编号与所述顶点和边的非图结构数据插入到VLOG中的value对应的key一一对应,所述ID编号与所述value对应的key作为图结构数据的索引信息;
所述索引存储用于存储索引信息。
2.根据权利要求1所述的基于图-KV的混合存储方法,其特征在于,在图-KV的混合存储方法中,接收到插入请求时,方法包括:
接收插入请求;
如果所述插入请求为边记录,将所述边记录作为value插入VLOG中生成偏移量,并返回所述边记录的偏移量,其中,所述边记录为边的非图结构数据;
根据所述边记录中起始顶点的key和终止顶点的key,从索引存储中查询,分别得到对应的起始顶点的ID编号和终止顶点的ID编号;
根据所述起始顶点的ID编号和终止顶点的ID编号,将所述边记录中的边插入图结构数据中,生成所述边的ID编号,并返回边的ID编号;
将所述边记录的偏移量和边记录的key作为非图结构数据的索引信息插入索引存储中,将所述边记录的key和边的ID编号作为图结构数据的索引信息插入索引存储中。
3.根据权利要求1所述的基于图-KV的混合存储方法,其特征在于,在图-KV的混合存储方法中,接收到插入请求时,方法包括:
接收插入请求;
如果所述插入请求为顶点记录,将所述顶点记录作为value插入VLOG中生成偏移量,并返回所述顶点记录的偏移量,其中,所述顶点记录为顶点的非图结构数据;
将所述顶点记录中的顶点插入图结构数据中,生成所述顶点的ID编号,并返回顶点的ID编号;
将所述顶点记录的偏移量和顶点记录的key作为非图结构数据的索引信息插入索引存储中,将所述顶点记录的key和顶点的ID编号作为图结构数据的索引信息插入索引存储中。
4.根据权利要求1-3任一所述的基于图-KV的混合存储方法,其特征在于,所述索引存储,具体包括:
将索引信息插入内存中活动的跳表中,若活动的跳表满足冻结条件,则将活动的跳表冻结,冻结的跳表只支持查询;
每冻结一次跳表将在后台任务队列中添加一个写入任务,后台线程不断处理后台任务队列中的写入任务,将冻结的跳表中的数据写入磁盘,每一次跳表落盘都将在未合并层生成一个新的索引文件。
5.根据权利要求4所述的基于图-KV的混合存储方法,其特征在于,还包括,每冻结一次跳表将在后台任务队列中添加一个合并任务,将未合并层中的索引文件与合并层中的索引文件进行合并,其中,所述合并层中只存在唯一一个索引文件。
6.根据权利要求5所述的基于图-KV的混合存储方法,其特征在于,在图-KV的混合存储方法中,接收到查询请求时,方法包括:
在活动的跳表中查询,若活动的跳表中未找到,则在内存中冻结的跳表中查询;
若内存中冻结的跳表中还未找到,则依次查询磁盘的未合并层中的各个索引文件;
若磁盘的未合并层中的各个索引文件中也未找到,则查询磁盘的合并层中的索引文件,此时,若还没有找到,则表示查询请求的索引信息并不存在。
7.根据权利要求6所述的基于图-KV的混合存储方法,其特征在于,若找到查询请求的索引信息,将索引信息返回,其中,返回的索引信息为不包含删除标志且为最新的索引信息。
8.根据权利要求2-3任一所述的基于图-KV的混合存储方法,其特征在于,将删除请求和更新请求均替换为插入请求。
9.根据权利要求2所述的基于图-KV的混合存储方法,其特征在于,所述根据所述起始顶点的ID编号和终止顶点的ID编号,将所述边记录中的边插入图结构数据中,生成所述边的ID编号,并返回边的ID编号,具体为:
根据所述起始顶点的ID编号在所述图结构数据中找到对应的起始顶点,将所述起始顶点的最后一个出边的ID编号更新为插入的边的ID编号,并更新起始顶点的上一个出边的ID编号;
根据所述终止顶点的ID编号在所述图结构数据中找到对应的终止顶点,将所述终止顶点的最后一个入边的ID编号更新为插入的边的ID编号,并更新终止顶点的上一个入边的ID编号。
10.一种基于图-KV的混合存储装置,其特征在于,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行权利要求1-9任一所述的图和KV混合存储方法。
CN202110731629.3A 2021-06-29 2021-06-29 一种基于图-kv的混合存储方法及装置 Active CN113448964B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110731629.3A CN113448964B (zh) 2021-06-29 2021-06-29 一种基于图-kv的混合存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110731629.3A CN113448964B (zh) 2021-06-29 2021-06-29 一种基于图-kv的混合存储方法及装置

Publications (2)

Publication Number Publication Date
CN113448964A true CN113448964A (zh) 2021-09-28
CN113448964B CN113448964B (zh) 2022-10-21

Family

ID=77814235

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110731629.3A Active CN113448964B (zh) 2021-06-29 2021-06-29 一种基于图-kv的混合存储方法及装置

Country Status (1)

Country Link
CN (1) CN113448964B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023083234A1 (zh) * 2021-11-11 2023-05-19 支付宝(杭州)信息技术有限公司 图状态数据管理
CN116578741A (zh) * 2023-07-12 2023-08-11 南京奥看信息科技有限公司 视图混合存储方法、装置及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170228468A1 (en) * 2016-02-05 2017-08-10 Bitnine Co., Ltd. Data searching method of database, apparatus and computer program for the same
CN107291807A (zh) * 2017-05-16 2017-10-24 中国科学院计算机网络信息中心 一种基于图遍历的sparql查询优化方法
US20170308621A1 (en) * 2016-04-25 2017-10-26 Oracle International Corporation Hash-based efficient secondary indexing for graph data stored in non-relational data stores
CN109522428A (zh) * 2018-09-17 2019-03-26 华中科技大学 一种基于索引定位的图计算系统的外存访问方法
CN109726305A (zh) * 2018-12-30 2019-05-07 中国电子科技集团公司信息科学研究院 一种基于图结构的复杂关系数据存储及检索方法
CN111190904A (zh) * 2019-12-30 2020-05-22 四川蜀天梦图数据科技有限公司 一种图-关系数据库混合存储的方法和装置
CN112148680A (zh) * 2020-09-27 2020-12-29 极道科技(北京)有限公司 一种基于分布式图数据库的文件系统元数据管理方法
US20210157850A1 (en) * 2019-11-22 2021-05-27 International Business Machines Corporation Augmenting relational database engines with graph query capability
CN112860953A (zh) * 2021-01-27 2021-05-28 国家计算机网络与信息安全管理中心 图数据库的数据导入方法、装置、设备及存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170228468A1 (en) * 2016-02-05 2017-08-10 Bitnine Co., Ltd. Data searching method of database, apparatus and computer program for the same
US20170308621A1 (en) * 2016-04-25 2017-10-26 Oracle International Corporation Hash-based efficient secondary indexing for graph data stored in non-relational data stores
CN107291807A (zh) * 2017-05-16 2017-10-24 中国科学院计算机网络信息中心 一种基于图遍历的sparql查询优化方法
CN109522428A (zh) * 2018-09-17 2019-03-26 华中科技大学 一种基于索引定位的图计算系统的外存访问方法
CN109726305A (zh) * 2018-12-30 2019-05-07 中国电子科技集团公司信息科学研究院 一种基于图结构的复杂关系数据存储及检索方法
US20210157850A1 (en) * 2019-11-22 2021-05-27 International Business Machines Corporation Augmenting relational database engines with graph query capability
CN111190904A (zh) * 2019-12-30 2020-05-22 四川蜀天梦图数据科技有限公司 一种图-关系数据库混合存储的方法和装置
CN112148680A (zh) * 2020-09-27 2020-12-29 极道科技(北京)有限公司 一种基于分布式图数据库的文件系统元数据管理方法
CN112860953A (zh) * 2021-01-27 2021-05-28 国家计算机网络与信息安全管理中心 图数据库的数据导入方法、装置、设备及存储介质

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
H.R.VYAWAHARE 等: ""A Hybrid Database Approach Using Graph and Relational Database"", 《HTTPS://IEEEXPLORE.IEEE.ORG/STAMP/STAMP.JSP?TP=&ARNUMBER=8509057》 *
TONGLIN LI 等: ""GRAPH/Z: A Key-Value Store Based Scalable Graph Processing System"", 《HTTPS://IEEEXPLORE.IEEE.ORG/DOCUMENT/7307637/》 *
张子超: ""历史图数据的存储与计算方法研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
段慧芳等: "基于路径索引的密集邻域图数据查询方法研究", 《计算机应用研究》 *
毛旺: ""分布式图存储系统关键技术设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
马文龙等: "Key-Value型NoSQL本地存储系统研究", 《计算机学报》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023083234A1 (zh) * 2021-11-11 2023-05-19 支付宝(杭州)信息技术有限公司 图状态数据管理
CN116578741A (zh) * 2023-07-12 2023-08-11 南京奥看信息科技有限公司 视图混合存储方法、装置及系统
CN116578741B (zh) * 2023-07-12 2023-10-20 南京奥看信息科技有限公司 视图混合存储方法、装置及系统

Also Published As

Publication number Publication date
CN113448964B (zh) 2022-10-21

Similar Documents

Publication Publication Date Title
CN107247808B (zh) 一种分布式NewSQL数据库系统及图片数据查询方法
CN113448964B (zh) 一种基于图-kv的混合存储方法及装置
US8924365B2 (en) System and method for range search over distributive storage systems
CN109255055B (zh) 一种基于分组关联表的图数据存取方法和装置
US11275759B2 (en) Data storage method and apparatus, server, and storage medium
WO2019105420A1 (zh) 数据查询
CN111190904B (zh) 一种图-关系数据库混合存储的方法和装置
US20150046413A1 (en) Delta store giving row-level versioning semantics to a non-row-level versioning underlying store
CN112286941B (zh) 一种基于Binlog+HBase+Hive的大数据同步方法和装置
US20160253382A1 (en) System and method for improving a query response rate by managing a column-based store in a row-based database
CN103595797B (zh) 一种分布式存储系统中的缓存方法
CN104850572A (zh) HBase非主键索引构建与查询方法及其系统
CN109284273B (zh) 一种采用后缀数组索引的海量小文件查询方法及系统
US9940353B2 (en) Relationship serialization and reconstruction for entities
CN104778270A (zh) 一种用于多文件的存储方法
CN110347852A (zh) 嵌入横向扩展键值存储系统的文件系统及文件管理方法
CN113901279B (zh) 一种图数据库的检索方法和装置
CN105740383A (zh) 一种大数据平台下数据库与缓存的数据一致性方法及系统
CN115935020A (zh) 一种图数据存储方法和装置
CN114610708A (zh) 一种向量数据处理方法及装置、电子设备及存储介质
CN109871338B (zh) 一种数据存储方法、装置及计算机设备
US10558636B2 (en) Index page with latch-free access
CN111752941B (zh) 一种数据存储、访问方法、装置、服务器及存储介质
US20160203197A1 (en) Method and System for Automatic Management of Dynamically Allocated Memory in a Computing Unit
CN109213760B (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