CN118034608A - 基于b+树和wal的图形数据库读写性能优化方法 - Google Patents
基于b+树和wal的图形数据库读写性能优化方法 Download PDFInfo
- Publication number
- CN118034608A CN118034608A CN202410329930.5A CN202410329930A CN118034608A CN 118034608 A CN118034608 A CN 118034608A CN 202410329930 A CN202410329930 A CN 202410329930A CN 118034608 A CN118034608 A CN 118034608A
- Authority
- CN
- China
- Prior art keywords
- tree
- vertex
- super
- edge
- wal
- 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 33
- 238000005457 optimization Methods 0.000 title claims abstract description 11
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 6
- 230000003321 amplification Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
-
- 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/903—Querying
- G06F16/90335—Query processing
-
- 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/906—Clustering; Classification
-
- 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 Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于B+树和WAL的图形数据库读写性能优化方法,用于基于键值对即KV对构建的图形数据库,判定顶点是否为超级顶点;根据超级顶点同一边类型的出度,确定采用一级存储或多级存储;对采用以B+树进行多级存储的超级顶点,将同一边类型的多个KV对组成一个B+树,保存一个超级顶点的相同边类型的所有边;将顶点id和边类型、B+树的根结点作为一个kv对存储,即通过顶点id和边类型得到B+树的根结点信息;基于顶点的读取请求,对多级存储的超级顶点,根据顶点id和边类型,查询B+树叶子结点信息合并;对顶点的边写入请求,对多级存储的超级顶点,根据顶点id和边类型、边数据信息,查询B+树边所在叶子结点EdgePage的节点,先写WAL日志,同时更新该节点的内存值;在B+树拆分与合并过程中将内存值落盘;该方法基于B+树和WAL,通过同一边类型的多个kv对组成一个B+树实现保存一个超级顶点的相同边类型的所有边,能够提高查询或写入性能,能够实现读写性能的平衡性最好,实现读写性能最优。
Description
技术领域
本发明涉及一种基于B+树和WAL的图形数据库读写性能优化方法,属于数据库技术领域。
背景技术
图形数据库是用图形化的形式描述客观世界,其中包含顶点和边,顶点代表实体、边代表实体和实体之间的关系。
基于键值对KV构建的图形数据库,将顶点、边和它们之间的关系,用(key,value)的形式表示,建模简单直观。目前基于KV系统构建的图形数据库主要使用两种方式,如图1:
第一种,如图1的(a),一个KV对一条边,这种方式实现简单,粒度很细,适合写入场景。但是针对超级顶点,一跳或者多跳扩展查询时,读性能退化非常大,因为通过顶点vertex从多个分片中查询N多个边做合并操作。
第二种,如图1的(b),一个KV保存一个起点的所有边,实现较为简单,一次性读取,适合读取场景。但是针对超级顶点,写放大会变得很大,无法处理超级顶点写入问题。
综上,基于KV系统构建的图形数据库,超级顶点存在读取放大和写入放大的性能问题。上述问题是在基于B+树和WAL的图形数据库读写性能优化过程中应当予以考虑并解决的问题。
发明内容
本发明的目的是提供一种基于B+树和WAL的图形数据库读写性能优化方法解决现有技术中存在的超级顶点读取放大、查询性能较差,以及无法处理超级顶点写入,读写性能有待提高的问题。
本发明的技术解决方案是:
一种基于B+树和WAL的图形数据库读写性能优化方法,用于基于键值对即KV对构建的图形数据库,包括以下步骤,
S1、判定顶点是否为超级顶点,如是,进入下一步骤S2;否则,采用一级存储;
S2、根据超级顶点的同一边类型的出度,确定采用一级存储或B+树进行多级存储;
S3、对采用以B+树进行多级存储的超级顶点,将同一边类型的多个KV对组成一个B+树,保存一个超级顶点的相同边类型的所有边;
S4、将顶点id和边类型、B+树的根结点作为一个kv对存储,即通过顶点id和边类型得到B+树的根结点信息;
S5、基于顶点的读取请求,对多级存储的超级顶点,根据顶点id和边类型,查询B+树叶子结点信息合并;
S6、基于顶点的边写入请求,对多级存储的超级顶点,根据顶点id和边类型、边数据信息,查询B+树边所在叶子结点EdgePage的节点,先写WAL日志,同时更新该节点的内存值;在B+树拆分与合并过程中将内存值落盘。
进一步地,步骤S1中,根据超级顶点同一边类型的出度,确定采用一级存储或多级存储,具体为,
在超级顶点同一边类型的出度大于出度阈值Threshold_outdegree时,采用B+树进行多级存储;
在超级顶点同一边类型的出度不大于出度阈值Threshold_outdegree时,采用一级存储。
进一步地,步骤S3中,对采用以B+树进行多级存储的超级顶点,将同一边类型的多个KV对组成一个B+树,具体为,
S31、构建M阶B+树,初始化B+树为空;
S32、将超级顶点的同一边类型的所有边数据信息逐个添加到B+树中,并根据B+树的特性,在插入构建B+树的过程中进行分裂或合并、更新后,得到最终的B+树。
进一步地,步骤S32中,将超级顶点的同一边类型的所有边数据信息逐个添加到B+树中,具体为,对每个边数据信息,使用边数据信息的id从B+树顶点从上往下比较关键字值,找到待插入的叶子结点EdgePage,并插入边数据信息。
进一步地,步骤S1中,判定顶点是否为超级顶点,具体为,在顶点同类型边数量超过设定阈值时,为超级顶点;否则为普通顶点。
进一步地,步骤S2中,一级存储或以B+树进行多级存储间进行动态转化:
在叶子结点EdgePage的数量=1的时候,B+树退化成一级存储;
在叶子结点EdgePage的数量>1的时候,一级存储转化为B+树。
本发明的有益效果是:该种基于B+树和WAL的图形数据库读写性能优化方法,基于B+树和WAL,通过同一边类型的多个kv对组成一个B+树实现保存一个超级顶点的相同边类型的所有边,能够提高查询或写入性能,能够实现读写性能的平衡性最好,实现读写性能最优。
附图说明
图1是目前基于KV系统的图形数据库的构建方式的说明示意图,其中,(a)是一个KV对一条边的说明示意图,(b)是一个KV保存一个起点的所有边的说明示意图;
图2是本发明实施例基于B+树和WAL的图形数据库读写性能优化方法的流程示意图;
图3是实施例中构建的不带中间结点的B+树的说明示意图;
图4是实施例中构建的带中间结点的B+树的说明示意图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例提供一种基于B+树和WAL的图形数据库读写性能优化方法,用于基于键值对即KV对构建的图形数据库,包括以下步骤,如图2:
S1、判定顶点是否为超级顶点,如是,进入下一步骤S2;否则,采用一级存储。
步骤S1中,判定顶点是否为超级顶点,具体为,在顶点同类型边数量超过设定阈值时,为超级顶点;否则为普通顶点。普通顶点采用一级存储,顶点的同一个边类型的所有边是一个存储单元,针对某顶点扩展查询的时候,性能高。
S2、根据超级顶点的同一边类型的出度,确定采用一级存储或B+树进行多级存储;具体为,
在超级顶点同一边类型的出度大于出度阈值Threshold_outdegree(默认8192)时,采用B+树进行多级存储;
在超级顶点同一边类型的出度不大于出度阈值Threshold_outdegree时,采用一级存储,一个kv保存一个顶点所有边。
步骤S2中,一级存储或多级存储间可以进行动态转化:
在叶子结点EdgePage的数量=1的时候,B+树退化成一级存储;
在叶子结点EdgePage的数量>1的时候,一级存储转化为B+树。
步骤S2中,B+树的高度是由阶数M和边的总数量决定的,由B+树的定义可以计算得到高度。
S3、对采用以B+树进行多级存储的超级顶点,将同一边类型的多个KV对组成一个B+树,保存一个超级顶点的相同边类型的所有边。
步骤S3中,对采用以B+树进行多级存储的超级顶点,将同一边类型的多个KV对组成一个B+树,具体为:
S31、构建M阶B+树,M默认为256,初始化B+树为空;
S32、将超级顶点的同一边类型的所有边数据信息逐个添加到B+树中,并根据B+树的特性,在插入构建B+树的过程中进行分裂或合并、更新后,得到最终的B+树。
步骤S3中,如图3和图4,在得到的最终的B+树中,B+树的根结点就是MetaPage,MetaPage整体作为value存储,(点id,边type)->(Partkey1,Partkey2...,PartkeyN)其中,每个PartKey指向一个EdgePage或一个中结点;Partkey1,Partkey2...,PartkeyN指向N个EdgePage或N个中间结点;叶子结点EdgePage的存储和一级存储类似,(PartkeyN)->(Edgei,Edge i+1...,Edge m),其中,Edge i,Edge i+1...,Edge m表示叶子结点EdgePage中的边数据信息;MetaPage和叶子结点EdgePage整体组成B+树,通过CopyOnWrite实现读写并发。其中,B+树的特性:根结点包含[2-M]个指向中间结点或叶子结点的结点指针;每一个中间结点包含个指向中间结点或叶子结点的指针;每个叶子结点包含至少个边数据信息。
图3中是不带中间结点的B+树,虚线内部就是完整的B+树;外部的“顶点id+边类型”和B+树的顶点作为一个kv存储,即通过“顶点id+边类型”可以得到B+树的顶点信息,然后查询和修改就按照B+树的特性自上而下处理。B+树构建完之后,EdgePage就是叶子结点,顶点是MetaPage,当边数据量多于设定数量的时候,B+树在构建分裂过程中,会产生中间结点MetaPage1、MetaPage2...MetaPagei,如图4。
S4、将顶点id和边类型、B+树的根结点作为一个kv对存储,即通过顶点id和边类型得到B+树的根结点信息。
S5、基于顶点的读取请求,对多级存储的超级顶点,根据顶点id和边类型,查询B+树叶子结点信息合并。
S6、基于顶点的边写入请求,对多级存储的超级顶点,根据顶点id和边类型、边数据信息,查询B+树边所在叶子结点EdgePage的节点,先写WAL日志,同时更新该节点的内存值;在B+树拆分与合并过程中将内存值落盘。
该种基于B+树和WAL的图形数据库读写性能优化方法,基于B+树和写操作前记录日志WAL(Write-Ahead Logging,WAL),通过同一边类型的多个kv对组成一个B+树实现保存一个超级顶点的相同边类型的所有边,能够提高查询或写入性能,能够实现读写性能的平衡性最好,实现读写性能最优,能够解决一个kv对存储一条边这种结构存在的超级顶点读取放大问题,同时解决一个kv对存储超级顶点的所有边这种结构导致的写入放大、甚至无法写入问题。
其中,B+树是一种自平衡树数据结构,高度相对较低,对树的查询操作具有稳定的性能,查询操作复杂度O(logN);叶子节点包含数据项(通常是键-值对),而非叶子节点只包含键和指向子节点的指针,B+树用于存储和管理大量的数据。WAL是"Write-AheadLogging"的缩写,表示写操作前记录日志,用于确保数据的持久性和一致性;由于不必立即将数据写入数据库文件,WAL可以提高写操作的性能,WAL是确保数据安全的一种关键机制。
该种基于B+树和WAL的图形数据库读写性能优化方法,针对超级顶点,将一级存储结构拆分成B+树,写入的时候,只需要找到对应的一个存储节点写入即可,避免了对超大value节点写入的性能问题。由于B+树控制的复杂性,只允许单线程写入,为了提高写入性能,先写入WAL日志,更新内存节点值;待B+树分裂、合并的时候再刷入磁盘。由于B+树EdgePage包含N个边数据,所以读取性能优于“一个kv对一条边”的结构,大大减少了读取和合并的次数。
该种基于B+树和WAL的图形数据库读写性能优化方法,针对超级顶点,多个KV对组成一个B+树,保存一个顶点的相同边type的所有边,平衡读写性能问题。该方法,采用多级拆分的方式平衡整体读写性能:读性能优于“一个KV对一条边”的结构,次于“一个KV保存一个起点的所有边”的结构;写性能优于“一个KV保存一个起点的所有边”的结构,次于“一个KV对一条边”的结构。
该种基于B+树和WAL的图形数据库读写性能优化方法,防止并发修改导致B+树逻辑错误,限制每次只能是单线程写入。为了提高写入性能,每个B+树写入的时候只写入WAL日志,并修改内存中B+树节点值,在B+树分裂、合并的时候再刷到磁盘中。
针对普通顶点(顶点同类型边数量不超过阈值),因为采用的是一级存储“一个kv对存储顶点的所有边”,读写性能不变。
针对边数量达到千万的超级顶点:一个kv对存储一个顶点所有边的结构,无法处理超级顶点的写入问题。实施例的该种基于B+树和WAL的图形数据库读写性能优化方法与现有方法的读写性能对比结果如表1。
表1实施例方法与现有方法的读写性能对比结果
综合来看,针对超级顶点,实施例的基于B+树和WAL的构建图结构的方式,读写性能的平衡性最好,性能最优。
尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于B+树和WAL的图形数据库读写性能优化方法,用于基于键值对即KV对构建的图形数据库,其特征在于:包括以下步骤,
S1、判定顶点是否为超级顶点,如是,进入下一步骤S2;否则,采用一级存储;
S2、根据超级顶点的同一边类型的出度,确定采用一级存储或B+树进行多级存储;
S3、对采用以B+树进行多级存储的超级顶点,将同一边类型的多个KV对组成一个B+树,保存一个超级顶点的相同边类型的所有边;
S4、将顶点id和边类型、B+树的根结点作为一个kv对存储,即通过顶点id和边类型得到B+树的根结点信息;
S5、基于顶点的读取请求,对多级存储的超级顶点,根据顶点id和边类型,查询B+树叶子结点信息合并;
S6、基于顶点的边写入请求,对多级存储的超级顶点,根据顶点id和边类型、边数据信息,查询B+树边所在叶子结点EdgePage的节点,先写WAL日志,同时更新该节点的内存值;在B+树拆分与合并过程中将内存值落盘。
2.如权利要求1所述的基于B+树和WAL的图形数据库读写性能优化方法,其特征在于:步骤S1中,根据超级顶点同一边类型的出度,确定采用一级存储或多级存储,具体为,
在超级顶点同一边类型的出度大于出度阈值Threshold_outdegree时,采用B+树进行多级存储;
在超级顶点同一边类型的出度不大于出度阈值Threshold_outdegree时,采用一级存储。
3.如权利要求1所述的基于B+树和WAL的图形数据库读写性能优化方法,其特征在于:步骤S3中,对采用以B+树进行多级存储的超级顶点,将同一边类型的多个KV对组成一个B+树,具体为,
S31、构建M阶B+树,初始化B+树为空;
S32、将超级顶点的同一边类型的所有边数据信息逐个添加到B+树中,并根据B+树的特性,在插入构建B+树的过程中进行分裂或合并、更新后,得到最终的B+树。
4.如权利要求3所述的基于B+树和WAL的图形数据库读写性能优化方法,其特征在于:步骤S32中,将超级顶点的同一边类型的所有边数据信息逐个添加到B+树中,具体为,对每个边数据信息,使用边数据信息的id从B+树顶点从上往下比较关键字值,找到待插入的叶子结点EdgePage,并插入边数据信息。
5.如权利要求1-4所述的基于B+树和WAL的图形数据库读写性能优化方法,其特征在于:步骤S1中,判定顶点是否为超级顶点,具体为,在顶点同类型边数量超过设定阈值时,为超级顶点;否则为普通顶点。
6.如权利要求1-4所述的基于B+树和WAL的图形数据库读写性能优化方法,其特征在于:步骤S2中,一级存储或以B+树进行多级存储间进行动态转化:
在叶子结点EdgePage的数量=1的时候,B+树退化成一级存储;
在叶子结点EdgePage的数量>1的时候,一级存储转化为B+树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410329930.5A CN118034608A (zh) | 2024-03-21 | 2024-03-21 | 基于b+树和wal的图形数据库读写性能优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410329930.5A CN118034608A (zh) | 2024-03-21 | 2024-03-21 | 基于b+树和wal的图形数据库读写性能优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118034608A true CN118034608A (zh) | 2024-05-14 |
Family
ID=90999007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410329930.5A Pending CN118034608A (zh) | 2024-03-21 | 2024-03-21 | 基于b+树和wal的图形数据库读写性能优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118034608A (zh) |
-
2024
- 2024-03-21 CN CN202410329930.5A patent/CN118034608A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
CN105975587B (zh) | 一种高性能的内存数据库索引组织与访问方法 | |
CN103942342B (zh) | 一种内存数据库oltp&olap并发查询优化方法 | |
CA2279119C (en) | Heuristic-based conditional data indexing | |
CN105117415B (zh) | 一种优化的ssd数据更新方法 | |
US6910043B2 (en) | Compression of nodes in a trie structure | |
US20070124277A1 (en) | Index and Method for Extending and Querying Index | |
CN103678519A (zh) | 一种支持Hive DML增强的混合存储系统及其方法 | |
CN112395288B (zh) | 基于希尔伯特曲线的r树索引合并更新方法、装置及介质 | |
CN115718819A (zh) | 一种索引构建方法、数据读取方法及索引构建装置 | |
CN113688130B (zh) | 一种内存数据库存储引擎管理方法 | |
CN118535578A (zh) | 一种基于哈希和LSM Tree的混合索引方法及键值存储系统 | |
CN117472959A (zh) | 一种基于Gskiplist的区块链高效查询系统及动态构建方法 | |
CN118034608A (zh) | 基于b+树和wal的图形数据库读写性能优化方法 | |
CN116340276A (zh) | 一种键值存储的压缩合并方法及系统 | |
Achtert et al. | Online hierarchical clustering in a data warehouse environment | |
Zhang et al. | Optimizing adaptive radix trees for NVM-based hybrid memory architecture | |
Omiecinski | Concurrent file conversion between B+-tree and linear hash files | |
CN112434029B (zh) | 高效支持混合分布式交易和分析型查询的表存储结构构造方法 | |
CN117688211A (zh) | 一种图数据库的存储方法和装置 | |
CN118012874A (zh) | 一种基于区块链技术的农产品溯源系统链下扩容方法 | |
Srinivasan et al. | Robust and efficient algorithms for storage and retrieval of disk based data structures | |
CN117692123A (zh) | 一种适用于高性能区块链的自适应默克尔树及其操作方法 | |
CN117349477A (zh) | 一种基于持久化内存的图数据异构分层存储结构及其方法 | |
CN118484464A (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 |