CN113961713A - 基于层次编码的图数据结构表示、存储、查询方法及装置 - Google Patents
基于层次编码的图数据结构表示、存储、查询方法及装置 Download PDFInfo
- Publication number
- CN113961713A CN113961713A CN202111153488.8A CN202111153488A CN113961713A CN 113961713 A CN113961713 A CN 113961713A CN 202111153488 A CN202111153488 A CN 202111153488A CN 113961713 A CN113961713 A CN 113961713A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- global
- coding
- code
- 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
- 238000000034 method Methods 0.000 title claims abstract description 56
- 125000002015 acyclic group Chemical group 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 6
- 230000001174 ascending effect Effects 0.000 claims description 5
- 235000008694 Humulus lupulus Nutrition 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 3
- 230000001133 acceleration Effects 0.000 abstract description 2
- 238000005457 optimization Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
-
- 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- 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/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/374—Thesaurus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Animal Behavior & Ethology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于层次编码的图数据结构表示、存储、查询方法及装置,其结构表示表示方法包括依据一有向无环子图中根节点的数量,计算根节点的编码位数m0,并基于编码位数m0,生成各根节点的全局编码;依据各根节点的t跳子节点数量,计算t跳子节点的编码位数mt,并基于编码位数mt与相应的根节点编码或t‑1跳子节点编码,生成各t跳子节点的全局编码;基于各节点的全局编码,表示所述有向无环子图的结构。本发明实现了对无环子图上典型查询的加速。
Description
技术领域
本发明涉及图、图数据库、图数据查询、查询优化等领域,尤其涉及提供一种基于层次编码的图数据结构表示、存储、查询方法及装置。
背景技术
自然世界中关联关系普遍存在于实体之间,图模型面向关联关系对数据建模,能够突出表示实体间关系。因此,图模型广泛应用于社交网络、金融反欺诈等多个领域。在大数据时代,图数据的规模越来越大,节点数普遍达到了亿级,关系数普遍达到十亿甚至百亿级。对如此大规模的图数据管理和查询,即使是最优秀的图数据库,其效率也难以令人满意。在很多场景中,存在大量的针对无环子图以及对无环子图的查询。发明人从这一背景出发,提供了一种基于层次编码表示图数据结构的方法,并基于此方法给出了图数据存储优化方法及查询优化方法。
对本发明中所使用的部分专业名词解释如下:
图模型:使用顶点和边描述实体间关系,使用属性扩展描述实体特性。
图数据库:以图模型组织、管理数据,支持对图数据的结构查询和属性过滤等相关操作,支持对数据的增删改查。
出边:从一个节点出发,指向某个其他节点的边,称之为该节点的出边。
入边:指向一个节点的边,称之为该节点的入边。
连通图:对于图中任意两个节点,存在从一个节点到另一个节点的路径,则称该图为连通图。在一个包含n个节点的连通图中,至少存在(n-1)条关系。图数据库中所保存的全部数据可以看作是一个图,这个图中可能存在多个连通图,每个连通图之间不存在关联关系。这些连通图可以称之为连通子图。
无环图:对于一个连通图,从其中任意一个节点出发,在节点间关系上沿着同一个方向前进,都无法再次回到该节点,则称该图为无环图。无环图的概念多用于有向图中。
子节点:在无环图中,从一个节点出发,所有可抵达的节点,都称之为该节点的子节点。
直接子节点:所有直接与某个节点相关联的子节点,称之为该节点的直接子节点。
父节点:在无环图中,所有经由关系可抵达某一个具体节点的节点,称之为该节点的父节点。
直接父节点:所有直接与某个节点相关联的父节点,称之为该节点的直接父节点。
根节点:在无环图中,不存在入边的节点,称之为根节点。
叶子节点:在无环图中,不存在出边的节点,称之为叶子节点。
字典序:在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序。
发明内容
为了提升图数据库对数据查询的效率,本发明提供一种基于层次编码的图数据结构表示、存储、查询方法及装置,通过对图数据进行全局编码,对数据库存储的节点数据进行优化存储及查询。
本发明的技术方案包括:
一种基于层次编码的图数据结构表示方法,其步骤包括:
1)依据一有向无环子图中根节点的数量,计算根节点的编码位数m0,并基于编码位数m0,生成各根节点的全局编码;
2)依据各根节点的t跳子节点数量,计算t跳子节点的编码位数mt,并基于编码位数mt与相应的根节点编码或t-1跳子节点编码,生成各t跳子节点的全局编码;
3)基于各节点的全局编码,表示所述有向无环子图的结构。
进一步地,通过以下步骤计算根节点编码位数m0:
1)依据根节点的数量N0,计算参数v0=log2N0;
2)对参数v0向上取整,得到参数v′ 0;
进一步地,所述全局编码为二进制编码。
进一步地,t跳子节点全局编码的格式包括:x0-x1-…-xt,其中x0为相应根节点的全局编码,xt为t跳集合内编码,-表示分隔符。
一种基于层次编码的图数据存储方法,将通过上述任一方法得到的各节点全局编码及相应的节点id,输入一表格。
进一步地,各节点的全局编码在所述表格中的排序方法包括:字典序升序。
一种基于层次编码的图数据中指定跳数子节点查询方法,其步骤包括:
1)利用上述任一方法,在所述表格中获取目标节点全局编码;
2)根据目标节点全局编码与指定跳数,在所述表格中进行查询,得到目标节点的指定跳数子节点。
一种基于层次编码的图数据中指定跳数父节点查询方法,其步骤包括:
1)利用上述任一方法,在所述表格中获取目标节点全局编码;
2)根据目标节点全局编码与指定跳数,在所述表格中进行查询,得到目标节点的指定跳数父节点。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行以上所述方法。
一种电子装置,包括存储器和处理器,其中存储器存储执行以上所述方法的程序。
与现有技术相比,本发明有利于实现对无环子图上典型查询的加速。
附图说明
图1方法流程图。
图2某无环图的示意图。
图3无环图的层次编码表。
具体实施方式
为使本发明的上述方案和有益效果更明显易懂,下文通过实施例,并配合附图作详细说明如下。
本发明的图数据结构表示、存储、查询方法及装置,如图1所示,主要包括:找出数据库中的无环子图,计算无环子图中节点的层次编码,将层次编码存储在缓存中,利用层级编码的缓存响应图查询。
实施例1
一种对无环图中节点的层次编码方法:本方法旨在通过编码实现对图中特殊结构的降维表示。若图数据库中的一部分满足此定义,则该部分可以视为此图数据库中的一个无环子图。对于一个无环子图,可以使用如下的编码方式,描述其中的节点之间关系:
(1)在一个有向无环子图中,找到全部没有入边的节点(即根节点)。将这些节点的集合记做L1。
(2)令L1中数据规模的以2为底的对数值v=log2size(L1),并对v向上取整,令 使用m位二进制编码,按顺序为集合中的节点编号。如:若L1中包含1个节点,则m=1,则该节点编码为“0”。若L1中包含3个节点,则v=2,三个节点的二进制编码分别为:00,01,10。
(3)将L1中所有节点的子节点的集合记做L2。
(4)使用(2)中所述的方法计算L2中每个节点在本集合内部的编码。对于每个节点,其全局编码为:“父节点编码-本集合内编码”对于L2中的某个节点“node”,假设其按照(2)的方法计算得到的本集合内部编码为010,其父节点编码为0,则其全局编码为“0-010”
(5)重复(3)中步骤,在当前节点集合Lx的基础上找到节点集合L(x+1)。
(6)使用(4)中所述方法,为L(x+1)中的节点计算全局编码。
(7)重复(5)、(6)直至当前子图中的所有节点都被分配了全局编码。
这个全局编码具有全局唯一性,且能够标识每个节点在无环图中所处于的层级位置,因此称之为“层级编码”。其中,所述层级编码被“-”分为一系列字段,并且一个节点具有几个字段,则称该节点在无环子图中的第几层。例如层级编码“0-01-010-11”被分为4个字段,“0”为字段1,“11”为字段4。该层级编码被分为4个字段,因此该节点在无环子图中的第4层。
实施例2
为了能够充分利用发明内容1所述的层级编码加速查询,本发明提出了一种对图数据存储的改进方法,对该方法说明如下:
(1)对于一个无环子图,按照发明内容1所述方法为每个节点计算其“层级编码”。
(2)将每个节点的层级编码视作该节点的一项特殊属性。这个特殊属性不同于用户数据,属于数据库管理的元数据范畴。
(3)对于该无环子图构建一个表,该表包括两列,第一列为表中每个节点的“层级编码”,第二列为表中每个节点的id。保存该表与无环子图的对应关系,用于后续查找。
(4)对该表按照第一列排序,排序依据为:字典序升序。
(5)将该表按排序后结果存储于数据库,以备查询使用。
(6)该表名称为“层级编码表”。
实施例3
在无环子图中,从某个节点出发的图查询可以分为四种:
1.某节点的全部子节点;
2.某节点的全部父节点;
3.某节点的不超过指定跳数的子节点;
4.某节点的不超过指定跳数的父节点。
基于实施例1、2,本发明提出一种利用层级编码加速上述4种查询的优化方法。
(1)前缀匹配:对于两个层级编码a和b,假设a的长度小于b,且a的每一位都与b上对应的位置相等,则称a是b的前缀匹配。如:a的层级编码为0-01,b的编码为0-01-010,则a是b的前缀匹配。
(2)对于查询类型1:以该节点的层级编码a为前缀,搜索所有以a为前缀的层级编码,将这些层级编码的集合记做R。R中所有层级编码所对应的节点即为目标节点的子节点。
(1)对于(2)中的前缀搜索方法:在层级编码表中找到a的位置。从a开始向下逐行扫描,对于每一个以a为前缀的编码,都将其加入R中。当出现首个不以a为前缀的编码,则搜索停止。因为层级编码表按字典序升序排列,因此后边剩余的编码也都将不以a为前缀。
(2)对于查询类型2:对于该节点的层级编码a,在层级编码表中搜索,将所有是a的前缀匹配的层级编码记做集合R。R中所有层级编码所对应的节点即为该目标节点的父节点。
(3)对于(4)的搜索方法:在层级编码表的第一条记录开始匹配,将每一个是a的前缀的层级编码都加入R中。当匹配到a所在的行时,停止检索。因为层级编码表按字典序升序排列,因此a后边的编码都不可能是a的前缀。
(4)对于查询类型3:假设搜索2跳以内的字节点。对于该节点的层级编码a,假设a的字段数为n,搜索所有层级为(n+1)~(n+2)的层级编码,在这些编码中,将所有以a为前缀的层级编码的集合记做R。R中所有层级编码所对应的节点即为该目标节点的2跳内子节点。
(5)对于(6)的搜索方法:参照(5)中所述的搜索方法,但将搜索的停止条件设置为:首次出现层级超过(n+2)的层级编码或不以a为前缀的层级编码。
(6)对于查询类型4:假设搜索2跳以内的父节点。对于该节点的层级编码a,假设a的字段数为n,搜索所有层级为(n-2)~(n-1)的层级编码,在这些编码中,将所有是a的前缀匹配的层级编码记做集合R。R中所有层级编码所对应的节点即为该目标节点的2跳内父节点。
(7)对于(8)中的搜索方法:参照(7)中的搜索方法,但将搜索的起始位置设置为:首个层级为(n-2)的层级编码。
基于上述内容,现以示意图为例,说明层次编码方法的具体流程:
以图2为例,图中每个椭圆形代表一个节点。椭圆形内部的数字含义为:“节点ID,层级编码”。其中节点id是数据本身的性质,层级编码是根据本发明中所述的层级编码方法得到的。
计算层级编码方法的流程如下:
1.找到子图中的根节点L1。符合条件的仅有节点id为1的节点。因此L1={1}
2.计算m和v的值。v=0,m=1,则L1中节点的层次编码为1位,该节点的层级编码为0.
3.找到1的子节点,将其集合记做L2,则L2={2,3,6}.
4.L2中包含3个节点,因此m=2。则L2中三个节点在本集合内部的编码为两位,具体值分别为:00,01,10.
5.因为L2中三个节点的直接父节点的层级编码为0,因此三者的全局层级编码分别为0-00,0-01,0-10。
6.找到L2中全部节点的直接子节点,将他们的集合记为L3,则L3={4,5,7,8,9,10,11,12}。L3中一共包含8个节点,因此对于L3中的节点,v=3其在本集合内部的编码为3位,分别为:000,001,010,011,100,101,110,111。
7.将每个节点的直接父节点的层级编码作为前缀,与其自身在本集合内部的编码拼接得到全局层级编码。L3中的全局层级编码分别为:0-00-000,0-00-001,0-00-010,0-00-011,0-00-100,0-01-110,0-01-111,0-10-101。
8.构建如图3所示的层级编码表。
利用层级编码进行图查询的示例如下:
1.搜索节点2的全部子节点:
(1)在层级编码表中找到节点2的层级编码0-00.
(2)将迭代器置于层级编码为0-00所在的行,逐行读取层级编码,并进行前缀匹配,将匹配到的结果加入到结果集R中。
(3)当迭代器前进到层级编码0-01所在的行时,出现了首个前缀不为0-00的层级编码,本次查找到此结束。
(4)将结果集R返回。
2.搜索节点2的全部父节点:
(1)在层级编码表中找到节点2的层级编码0-00.
(2)将迭代器置于层级编码表的第一行,逐行读取层级编码,并进行前缀匹配,将所有是0-00前缀的层级编码所对应的节点加入到结果集R中。
(3)当迭代器前进到0-00所在的行时,将不会出现一个是0-00前缀的层级编码,本次查找到此结束。
(4)将结果集R返回。
以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (10)
1.一种基于层次编码的图数据结构表示方法,其步骤包括:
1)依据一有向无环子图中根节点的数量,计算根节点的编码位数m0,并基于编码位数m0,生成各根节点的全局编码;
2)依据各根节点的t跳子节点数量,计算t跳子节点的编码位数mt,并基于编码位数mt与相应的根节点编码或t-1跳子节点编码,生成各t跳子节点的全局编码;
3)基于各节点的全局编码,表示所述有向无环子图的结构。
3.如权利要求1所述的方法,其特征在于,所述全局编码为二进制编码。
4.如权利要求1所述的方法,其特征在于,t跳子节点全局编码的格式包括:x0-x1-…-xt,其中x0为相应根节点的全局编码,xt为t跳集合内编码,-表示分隔符。
5.一种基于层次编码的图数据存储方法,将通过权利要求1-4中任一方法得到的各节点全局编码及相应的节点id,输入一表格。
6.如权利要求5所述的方法,其特征在于,各节点的全局编码在所述表格中的排序方法包括:字典序升序。
7.一种基于层次编码的图数据中指定跳数子节点查询方法,其步骤包括:
1)利用权利要求5-6中任一方法,在所述表格中获取目标节点全局编码;
2)根据目标节点全局编码与指定跳数,在所述表格中进行查询,得到目标节点的指定跳数子节点。
8.一种基于层次编码的图数据中指定跳数父节点查询方法,其步骤包括:
1)利用权利要求5-6中任一方法,在所述表格中获取目标节点全局编码;
2)根据目标节点全局编码与指定跳数,在所述表格中进行查询,得到目标节点的指定跳数父节点。
9.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-8中任一所述方法。
10.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-8中任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111153488.8A CN113961713A (zh) | 2021-09-29 | 2021-09-29 | 基于层次编码的图数据结构表示、存储、查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111153488.8A CN113961713A (zh) | 2021-09-29 | 2021-09-29 | 基于层次编码的图数据结构表示、存储、查询方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961713A true CN113961713A (zh) | 2022-01-21 |
Family
ID=79463206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111153488.8A Pending CN113961713A (zh) | 2021-09-29 | 2021-09-29 | 基于层次编码的图数据结构表示、存储、查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961713A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
CN103279544A (zh) * | 2013-06-05 | 2013-09-04 | 中国电子科技集团公司第十五研究所 | 树型结构数据在关系型数据库中的存储和查询方法及装置 |
CN107092659A (zh) * | 2017-03-28 | 2017-08-25 | 成都优易数据有限公司 | 一种通用的树形结构存储解析方法 |
CN110263043A (zh) * | 2019-06-24 | 2019-09-20 | 苏州睿威博科技有限公司 | 数据存储方法、数据查询方法、装置及存储介质 |
CN110704430A (zh) * | 2019-09-17 | 2020-01-17 | 江苏苏宁物流有限公司 | 通用树结构数据查询方法及装置 |
-
2021
- 2021-09-29 CN CN202111153488.8A patent/CN113961713A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102867059A (zh) * | 2012-09-19 | 2013-01-09 | 浪潮(北京)电子信息产业有限公司 | 一种树形结构中数据的处理方法和系统 |
CN103279544A (zh) * | 2013-06-05 | 2013-09-04 | 中国电子科技集团公司第十五研究所 | 树型结构数据在关系型数据库中的存储和查询方法及装置 |
CN107092659A (zh) * | 2017-03-28 | 2017-08-25 | 成都优易数据有限公司 | 一种通用的树形结构存储解析方法 |
CN110263043A (zh) * | 2019-06-24 | 2019-09-20 | 苏州睿威博科技有限公司 | 数据存储方法、数据查询方法、装置及存储介质 |
CN110704430A (zh) * | 2019-09-17 | 2020-01-17 | 江苏苏宁物流有限公司 | 通用树结构数据查询方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7493352B2 (en) | System and method for relational representation of hierarchical data | |
CN107153647B (zh) | 进行数据压缩的方法、装置、系统和计算机程序产品 | |
Lin | Binary search algorithm | |
Hon et al. | Space-efficient frameworks for top-k string retrieval | |
US20140082021A1 (en) | Hierarchical ordering of strings | |
KR20100116595A (ko) | 근사 문자열 매칭을 위한 아카이브를 관리하는 방법 및 시스템 | |
JP2005525625A (ja) | データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法 | |
WO2021072874A1 (zh) | 基于双数组的位置查询方法、装置、计算机设备及存储介质 | |
CN106874425B (zh) | 基于Storm的实时关键词近似搜索算法 | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN112100361B (zh) | 一种基于ac自动机的字符串多模模糊匹配方法 | |
CN103365992A (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
Navarro | Document listing on repetitive collections with guaranteed performance | |
Belazzougui | Succinct dictionary matching with no slowdown | |
CN115840751B (zh) | 一种新型树状数据的编码方法 | |
CN113961713A (zh) | 基于层次编码的图数据结构表示、存储、查询方法及装置 | |
CN115577147A (zh) | 可视化情报图谱检索方法、装置、电子设备及存储介质 | |
CN113961568A (zh) | 基于区块链的链式数据结构的区块快速查找方法 | |
CN115617981A (zh) | 一种面向社交网络短文本的信息层次摘要提取方法 | |
CN114385624A (zh) | 编码方法、编码查找方法、装置、电子设备及存储介质 | |
Chubak et al. | Efficient indexing and querying over syntactically annotated trees | |
JPH10240741A (ja) | 木構造型データの管理方法 | |
CN110928998B (zh) | 一种基于等价类代表元索引和存储的拉丁方搜索引擎 | |
JP3719089B2 (ja) | 文書処理装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220121 |
|
RJ01 | Rejection of invention patent application after publication |