CN117271513A - 数据处理方法、数据查询方法及装置 - Google Patents

数据处理方法、数据查询方法及装置 Download PDF

Info

Publication number
CN117271513A
CN117271513A CN202311213927.9A CN202311213927A CN117271513A CN 117271513 A CN117271513 A CN 117271513A CN 202311213927 A CN202311213927 A CN 202311213927A CN 117271513 A CN117271513 A CN 117271513A
Authority
CN
China
Prior art keywords
data
sstable
leaf node
leaf
data stored
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
Application number
CN202311213927.9A
Other languages
English (en)
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.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase 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 Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202311213927.9A priority Critical patent/CN117271513A/zh
Publication of CN117271513A publication Critical patent/CN117271513A/zh
Pending legal-status Critical Current

Links

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
    • G06F16/2246Trees, e.g. B+trees
    • 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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

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)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书一个或多个实施例提供一种数据处理方法、数据查询方法及装置,涉及数据库技术领域。该方法应用于基于日志结构合并LSM树的数据库,数据库包括有序字符串表SSTable,SSTable存储有聚合数据。本说明书提供的方案,能够响应于针对目标数据的合并操作,将目标数据合并至SSTable;根据合并至SSTable的目标数据,更新SSTable中存储的聚合数据。本说明提供的方案,可以使数据库基于LSM树的多版本数据存储能力,在发生数据合并时,更新SSTable中存储的聚合数据,期间不会产生额外的资源开销;并在发生数据查询时,自动感知聚合数据的有效性,从而能够加速数据查询过程,并输出正确的查询结果。

Description

数据处理方法、数据查询方法及装置
技术领域
本说明书一个或多个实施例涉及数据库技术领域,尤其涉及一种数据处理方法、数据查询方法及装置。
背景技术
聚合数据是针对数据库中的海量数据执行计算或统计操作,生成的单个结果。例如,可以计算数据库中某一列数据的最大值,将其预先存储为聚合数据。在数据查询过程中,通过调用预先存储的聚合数据,可以减少需要查询的数据量,从而提高数据库的查询性能和响应速度。
相关技术中,随着数据库中数据操纵语句(Data Manipulation Language,DML)的执行,数据库中预先构建的聚合数据需要频繁更新,并在更新过程中占用额外的系统资源,且无法自动判断聚合数据的有效性。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据处理方法、数据查询方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种数据处理方法,应用于基于日志结构合并LSM树的数据库,数据库包括有序字符串表SSTable,SSTable存储有聚合数据,方法包括:
响应于针对目标数据的合并操作,将目标数据合并至SSTable;
根据合并至SSTable的目标数据,更新SSTable中存储的聚合数据。
根据本说明书一个或多个实施例的第二方面,提出了一种数据查询方法,应用于基于LSM树的数据库,数据库包括SSTable,SSTable存储有聚合数据,方法包括:
响应于针对指定数据的查询指令,校验聚合数据的有效性;
根据聚合数据中的有效聚合数据,查询指定数据。
根据本说明书一个或多个实施例的第三方面,提出了一种数据处理装置,应用于基于LSM树的数据库,数据库包括SSTable,SSTable存储有聚合数据,包括:
合并模块,用于响应于针对目标数据的合并操作,将目标数据合并至SSTable;
更新模块,用于根据合并至SSTable的目标数据,更新SSTable中存储的聚合数据。
根据本说明书一个或多个实施例的第四方面,提出了一种数据查询装置,应用于基于LSM树的数据库,数据库包括SSTable,SSTable存储有聚合数据,包括:
校验模块,用于响应于针对指定数据的查询指令,校验聚合数据的有效性;
查询模块,用于根据聚合数据中的有效聚合数据,查询指定数据。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器通过运行可执行指令以实现如第一方面的方法和/或如第二方面的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面方法的步骤和/或第二方面方法的步骤。
本说明书提供的方法,可应用于基于LSM树的数据库,通过将聚合数据存储至LSM树中的SSTable,可以使数据库基于LSM树的多版本数据存储能力,在LSM树中发生数据合并时,更新SSTable中存储的聚合数据,期间不会产生额外的资源开销;并在LSM树中发生数据查询时,自动感知聚合数据的有效性,从而能够加速数据查询过程,并输出正确的查询结果。
附图说明
图1是一示例性实施例提供的一种基于LSM树的数据库结构示意图。
图2是一示例性实施例提供的一种数据处理方法的流程示意图。
图3是一示例性实施例提供的一种树状存储结构的结构示意图。
图4是一示例性实施例提供的一种数据查询方法的流程示意图。
图5是一示例性实施例提供的一种设备的结构示意图。
图6是一示例性实施例提供的一种数据处理装置的结构示意图。
图7是一示例性实施例提供的一种数据查询装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
聚合数据是针对数据库中的海量数据执行计算或统计操作,生成的单个结果。例如,可以计算数据库中某一列数据的最大值,将其预先存储为聚合数据。在数据查询过程中,通过调用预先存储的聚合数据,可以减少需要查询的数据量,从而提高数据库的查询性能和响应速度。
相关技术中,可以通过物化视图的方式将聚合数据预先存储为一个视图表,来对数据库中的查询进行加速。然而,物化视图的配置过程较为复杂,需要对数据库计算引擎进行大量的相关适配,并通过相应的数据库接口与视图表进行交互。同时,物化视图在存储时需要占用大量存储空间,且每次更新需要占用大量的系统资源。此外,在查询过程中,物化视图只能服务于特定的查询,而无法适配于即席查询(Ad-Hoc),且在查询过程中也无法自动判断聚合数据的有效性,可能导致数据库的查询输出错误结果。
有鉴于此,本说明书实施例通过将聚合数据存储于LSM树中的SSTable,可以使数据库基于LSM树的多版本数据存储能力,快速完成聚合数据的更新,并在查询过程中自动判断聚合数据的有效性。
具体而言,本公开首先提供了一种数据处理方法,该方法可以响应于针对目标数据的合并操作,将目标数据合并至SSTable;根据合并至SSTable的目标数据,更新SSTable中存储的聚合数据。由SSTable中的聚合数据更新发生在LSM树中发生数据合并时,因此不会使每次数据库中的数据变化均触发聚合数据更新,从而提升了数据库的相应速度,并不会为数据更新指令及数据插入指令等DML语句的执行带来额外的资源开销。
此外,本公开还提供了一种该数据查询方法,该方法可以响应于针对指定数据的查询指令,校验聚合数据的有效性;从而根据聚合数据中的有效聚合数据,查询指定数据。由于聚合数据存储于LSM树中的SSTable,本公开提供的数据查询方法可以自动感知聚合数据的有效性,从而能够加速数据查询过程,并输出正确的查询结果。
为便于理解,下面将结合图1,首先对本说明书实施例的应用场景进行介绍。
本说明书提供的方案,应用于基于日志结构合并(Log Structured Merge,LSM)树的数据库。
图1是一示例性实施例提供的一种基于LSM树的数据库结构示意图。如图1所示,LSM树可以包括内存表(Memory Table,Memtable)和有序字符串表(Sorted String Table,SSTable)。
其中,Memtable是LSM树中的内存数据结构。由于Memtable存储在内存中,因此Memtable中的数据读写操作可以高效地进行。当数据库中的写操作发生时,待写入的数据首先被写入到Memtable中,以保持快速的写入性能。然而,由于内存容量受限,当Memtable的大小达到一定阈值时,Memtable中存储的数据将被合并(compaction)至硬盘上的SSTable中,以便释放内存中的存储空间用于新的数据写入。
SSTable是LSM树中的硬盘数据结构,用于持久化数据。示例性地,SSTable可以分为转储SSTable以及基线SSTable。示例性地,当Memtable中的数据被合并至硬盘时,这些数据被写入的SSTable即为转储SSTable。当多个转储SSTable积累到一定数量或大小时,它们可以被合并为更大的SSTable文件,以减少硬盘空间的占用和优化读取性能。依次类推,基线SSTable是进行合并操作之后生成的最下层SSTable文件,包含了合并过程中更新的数据以及数据库中之前存储的所有数据。
在一些实施例中,当数据库中的数据较少时,转储SSTable与基线SSTable可以是同一SSTable。也就是说,当Memtable中的数据被合并至硬盘时,用于接收这些数据的SSTable即为最底层的SSTable,即基线SSTable。
应当理解的是,尽管图1中未出示,但转储SSTable的数量可以是一个,也可以是多个。多个转储SSTable也可以形成多层次的存储结构,例如,可以将转储SSTable分为第一层转储SSTable和第二层转储SSTable,多个第一层转储SSTable中的数据可以合并至一个第二层转储SSTable,多个第二层转储SSTable中的数据可以合并至一个基线SSTable,本说明书实施例对此不做限定。
接下来,将结合以上应用场景对本说明书的示例性实施方式进行详细说明。
首先,本说明书实施例提供了一种数据处理方法,该方法可以由任意电子设备执行。
图2是一示例性实施例提供的一种数据处理方法的流程示意图,该数据处理方法应用于基于LSM树的数据库,该数据库包括SSTable。其中,SSTable中存储有聚合数据。
如图2所示,本说明书实施例提供的数据处理方法包括如下步骤。
S201,响应于针对目标数据的合并操作,将目标数据合并至SSTable。
需要说明的是,参照以上对于应用场景的描述可知,数据合并操作可能发生在Memtable与转储SSTable之间,可能发生在上下层转储SSTable之间,也可能发生在转储SSTable与基线SSTable之间。
也就是说,本说明实施例中的目标数据,可以是Memtable中存储的基础数据,也可以是转储SSTable中存储的基础数据,而本说明书实施例中的SSTable,可以是转储SSTable,也可以是基线SSTable。
可以理解的是,本说明书实施例中的目标数据为被合并的表中存储的基础数据,而SSTable为用于接收被合并的基础数据的SSTable。例如,当数据库将Memtable中存储的基础数据合并至转储SSTable时,目标数据为Memtable中存储的基础数据,而SSTable为转储SSTable。本说明书实施例对此不做赘述。
其中,如无特殊说明,本说明书中的基础数据均用于指示数据库中存储的未经聚合的数据。通过对数据库中存储的大量基础数据进行聚合,即可得到聚合数据。
而本说明书中的聚合数据可以是任意类型的聚合数据,例如,可以是基础数据的行数(COUNT)、基础数据的总和(SUM)、基础数据的平均值(AVG)、基础数据的最大值(MAX)、基础数据的最小值(MIN)等。
可以理解的是,根据实际需求的不同,本说明书实施例中可以为数据库表中一列或几列基础数据配置聚合数据,也可以为数据库表中全部列的基础数据分别配置聚合数据,本公开实施例对此不做限定。
此外,针对每一列基础数据,可以配置一种类型的聚合数据,也可以配置多种类型的聚合数据。为便于聚合数据的调用,当配置有多种类型的聚合数据时,可以在聚合数据的存储过程中为聚合数据添加类型标签,从而使数据库能够快速准确的调用相应类型的聚合数据。
示例性地,针对数据库中的商品价格表而言,基础数据可能是数据中存储的若干条商品名称及商品价格,而聚合数据可能是其中价格最高的商品名称及对应的商品价格,也可能是商品价目表中商品的总数量。
在一些实施例中,SSTable中配置有树状存储结构(例如,B+树存储结构),树状存储结构包括叶子节点以及非叶子节点。其中,叶子节点可以存储基础数据,非叶子节点可以存储聚合数据。非叶子节点中存储的聚合数据可以示出其后代叶子节点中存储的基础数据的聚合结果。
在一些实施例中,非叶子节点包括第一非叶子节点和第二非叶子节点,其中,第一非叶子节点为叶子节点的父节点,第二非叶子节点为第一非叶子节点的祖先节点。
每个第一非叶子节点中存储的聚合数据可以通过聚合该第一非叶子节点的子节点中存储的基础数据获得;每个第二非叶子节点中存储的聚合数据通过聚合该第二非叶子节点的子节点中存储的聚合数据获得。
应当理解的是,在树状存储结构中,第一非叶子节点和第二非叶子节点数量可以是一个,也可以是多个。其中,第二非叶子节点可能是第一非叶子节点的父节点,也可能是第一非叶子节点的父节点的父节点。也就是说,第二非叶子节点可以使第一非叶子节点的任意祖先节点。
值得注意的是,在计算每个非叶子节点中存储的数据时,仅需输入该非叶子节点的子节点中存储的数据即可,而无需考虑该非叶子节点的全部后代节点。由此,可提高聚合数据的计算效率。
在一些实施例中,叶子节点的数量可以是多个,每个叶子节点用于存储不同主键范围的基础数据,且每个叶子节点中存储的基础数据按照其主键有序排列,以便在调用聚合数据时快速判断聚合数据的有效性。
相应地,在将目标数据合并至SSTable时,可以根据目标数据的主键,将目标数据合并至相应的叶子节点中,以使目标数据与该叶子节点中存储的基础数据按照主键顺序有序排列。
需要说明的是,每个叶子节点中存储的基础数据的数量,可以根据实际应用场景确定。各个叶子节点中存储的基础数据的数量可以相同,也可以不同,本说明书实施例对此不做限定。例如,针对频繁发生更新的基础数据而言,可以适当降低存储这些基础数据的叶子节点的基础数据容量,从而避免对相应的聚合数据进行频繁更新,且能够降低聚合数据调用时的失效范围。而针对较为固定的基础数据而言,可以适当提高存储这些基础数据的叶子节点的基础数据容量,从而使一个聚合数据能够表征尽可能多的基础数据的特征,减少查询时需要遍历的数据量。
此外,结合前述应用场景可知,SSTable可以分为转储SSTable和基线SSTable,在本说明书实施例中,转储SSTable和基线SSTable中均可配置有上述树状存储结构。
示例性地,图3是一示例性实施例提供的一种树状存储结构的结构示意图。如图3所示,该树状存储结构中包括叶子节点C1、C2、C3和C4,第一非叶子节点B1、B2,以及第二非叶子节点A1。其中,图3中的连接线示出了这些节点之间的父子关系,例如,第一非叶子节点B1是叶子节点C1和C2共同的父节点,第一非叶子节点B2是叶子节点C3和C4共同的父节点,而第二非叶子节点A1是第一非叶子节点B1和B2共同的父节点。
在图3示出的叶子节点中,每个叶子节点均存储有数据库中的基础数据。例如,叶子节点C1可以存储有主键范围在1~400的基础数据。叶子节点C2可以存储有主键范围在401~800的基础数据,本说明书实施例对此不作赘述。
在图3示出的第一非叶子节点中,每个第一非叶子节点中存储的聚合数据通过聚合其子节点中存储的基础数据获得。例如,第一非叶子节点B1中存储的聚合数据为叶子节点C1和C2中存储的基础数据的聚合结果。第一非叶子节点B2中存储聚合数据为叶子节点C3和C4中存储的基础数据的聚合结果。
而对于图3中示出的第二非叶子节点A1,该第二非叶子节点A1中存储的聚合数据通过聚合其子节点中存储的聚合数据获得。也就是说,第二非叶子节点A1中存储的聚合数据为第一非叶子节点B1和B2中存储的聚合数据的聚合结果。
示例性地,假设SSTable中存储的基础数据为商品价格数据。这些商品价格数据可以根据数据的主键,被分配至相应的叶子节点进行存储。在一些应用场景中,需要经常查询这些商品的平均价格,从而关注商品价格的变动。
请继续参照图3,此时,聚合数据即为商品的平均价格。叶子节点C1、C2、C3和C4中分别存储有商品价格数据。第一非叶子节点B1中存储有叶子节点C1和C2中存储的商品价格数据的平均值(即聚合数据),例如,该平均值为110。第一非叶子节点B2中存储有叶子节点C3和C4中存储的商品价格数据的平均值,例如,该平均值为130。而第二非叶子节点A1中则存储有第一非叶子节点B1和第一非叶子节点B2中存储的聚合数据的平均值,即(110+130)÷2=120。
由此,当用户希望查询叶子节点C1和C2中存储的商品价格平均值时,可以直接调用第一非叶子节点B1中存储的聚合数据。而当用户希望查询叶子节点C1、C2、C3和C4中存储的商品价格平均值时,可以直接调用第二非叶子节点A1中存储的聚合数据。从而使本说明书提供的方案,能够通过维护聚合数据,满足用户不同的查询需求,提升数据库对于用户查询的响应速度。
S202,根据合并至SSTable的目标数据,更新SSTable中存储的聚合数据。
示例性地,可以针对SSTable中每个合并有目标数据的叶子节点,分别进行如下处理:
根据合并至该叶子节点的目标数据,更新该叶子节点的祖先节点中存储的聚合数据。
可以理解的是,在SSTable中配置的树状存储结构中,由于下一层节点的聚合结果实际上是上一层节点的输入,因此在计算每一层第二非叶子节点中存储的聚合数据时,仅需调用其下一层节点中存储的聚合数据即可,而无需遍历其全部后代节点中存储的基础数据及聚合数据。因此,本说明书实施例可以快速的更新树状存储结构中每个节点中存储的聚合数据,无需占用大量的内存开销,且不会影响数据库的读写性能。
此外,在本说明书实施例中,由于聚合数据的更新过程可以发生在LSM树后台的合并操作中,因此可以通过合并操作中批量处理的方式也使得聚合数据的计算更高效。并且基于树状存储结构中各节点之间的关系,可以使得未合并有目标数据的叶子节点中存储的聚合数据得以被重用,同时,若非叶子节点的全部子节点中存储的聚合数据均未发生变更,则该非叶子节点中存储的聚合数据也可以被重用。由此,本公开实施例可以大幅降低了聚合数据的计算量,更高效的维护聚合数据。
此外,由于聚合数据仅存储于SSTable中,结合前述应用场景可知,在LSM树中发生数据写入时,数据直接写入的是Memtable,只有当进行数据合并操作时,才会将Memtable中的存储的基础数据合并至SSTable。因此,对数据的更新或插入并不会导致聚合数据的频繁更新,故不会对数据库中DML语句的执行效率产生影响。
基于同一发明构思,本公开实施例中还提供了一种数据查询方法,如下面的实施例。由于该方法实施例解决问题的原理与上述数据处理方法实施例相似,因此该方法实施例的实施可以参见上述方法实施例的实施,重复之处不再赘述。
需要说明的是,与上述数据处理方法实施例相似,该数据查询方法同样应用于基于LSM树的数据库,该数据库包括SSTable。其中,SSTable中存储有聚合数据。
本说明书实施例中的SSTable中同样配置有树状存储结构,树状存储结构包括叶子节点以及非叶子节点。其中,叶子节点可以存储基础数据,非叶子节点可以存储聚合数据。非叶子节点中存储的聚合数据可以示出其后代叶子节点中存储的基础数据的聚合结果。
在一些实施例中,非叶子节点包括第一非叶子节点和第二非叶子节点,其中,第一非叶子节点为叶子节点的父节点,第二非叶子节点为第一非叶子节点的祖先节点。
每个第一非叶子节点中存储的聚合数据可以通过聚合该第一非叶子节点的子节点中存储的基础数据获得;每个第二非叶子节点中存储的聚合数据通过聚合该第二非叶子节点的子节点中存储的聚合数据获得。
在一些实施例中,叶子节点的数量可以是多个,每个叶子节点用于存储不同主键范围的基础数据,且每个叶子节点中存储的基础数据按照其主键有序排列,以便在查询聚合数据时快速判断聚合数据的有效性。
具体地,由于本说明书实施例中SSTable中配置的树状存储结构与上述数据处理方法实施例相似,因此对于树状存储结构的描述可以参照上述数据处理方法实施例中的描述,本说明书实施例对此不再赘述。
图4示出本公开实施例中一种数据查询方法的流程示意图,该方法可以由任意电子设备执行。如图4所示,本公开实施例中提供的数据查询方法包括如下步骤。
S401,响应于针对指定数据的查询指令,校验聚合数据的有效性。
需要说明的是,在接收到指定数据的查询指令后,LSM树可以首先通过迭代器,对SSTable(包括转储SSTable和基线SSTable)和Memtable中存储的基础数据进行归并。
示例性地,可以按照主键从小到大的顺序,通过设置多个迭代器,同时从SSTable和Memtable中迭代出其存储的基础数据。如果有相同主键的基础数据,则需要根据数据的新旧将其合并。
对于基线SSTable而言,假设目前基线sstable迭代的主键为RowKey1,其他所有迭代器(例如,转储SSTable的迭代器、Memtable的迭代器)中即将迭代到的最小的主键是RowKey2,那么主键区间[RowKey1,RowKey2)内的所有基础数据对应的聚合数据均为有效聚合数据,可以在数据查询时直接调用。
也就是说,若第一叶子节点中存储有主键与第一目标主键和/或第二目标主键相同的基础数据,则该第一叶子节点的祖先节点中存储的聚合数据无效。其中,第一叶子节点为基线SSTable中的叶子节点,第一目标主键为Memtable中存储的基础数据的主键,第二目标主键为转储SSTable中存储的基础数据的主键。
而对于转储SSTable而言,若第二叶子节点中存储有主键与第一目标主键相同的基础数据,则该第二叶子节点的祖先节点中存储的聚合数据无效。其中,第二叶子节点为转储SSTable中的叶子节点,第一目标主键为Memtable中存储的基础数据的主键。
此外,若第二叶子节点中存储有主键落入目标主键范围的基础数据,则该第二叶子节点的祖先节点中存储的聚合数据无效。其中,目标主键范围为基线SSTable的叶子节点存储的基础数据的主键范围。
也就是说,对于转储SSTable而言,只有当其上存储的聚合数据的聚合对象全部为基线SSTable中不存在的数据时,该聚合数据才为有效聚合数据。
S402,根据聚合数据中的有效聚合数据,查询指定数据。
需要说明的是,在校验完成聚合数据的有效性后,可以通过迭代器在SSTable中迭代出有效的聚合数据,从而结合有效的聚合数据与归并后的基础数据,完成指定数据的查询。
示例性地,对于商品价格表而言,若归并后得到的基础数据包括编号1至编号1000的共1000个商品的价格数据。其中,编号1至编号800的商品价格数据在归并过程中未发生变化,那么这些商品的聚合数据为有效聚合数据。此时,若期望查询编号1至编号1000的共1000个商品的最高价格,可以直接调用编号1至编号800的商品的价格最大值聚合数据,并将其与编号801至编号1000的商品进行比较即可,从而大幅降低了查询过程中需要遍历的数据数量。
本说明书实施例提供的数据查询方法,可以在查询过程中自动判断聚合数据的有效性,并结合有效的聚合数据完成指定数据的查询,从而在保证查询准确性的前提下,提升了数据查询效率。
图5是一示例性实施例提供的一种设备的结构示意图。请参考图5,在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图6,图6提供了一种数据处理装置600,可以应用于如图5所示的设备中,以实现本说明书的技术方案。示例性地,该数据处理装置600可应用于基于LSM树的数据库,该数据库包括SSTable,该SSTable存储有聚合数据,该数据处理装置600可以包括:
合并模块601,用于响应于针对目标数据的合并操作,将目标数据合并至SSTable。
更新模块602,用于根据合并至SSTable的目标数据,更新SSTable中存储的聚合数据。
在一些实施例中,SSTable中配置有树状存储结构,树状存储结构包括叶子节点以及非叶子节点。其中,叶子节点用于存储基础数据,非叶子节点用于存储聚合数据,聚合数据用于示出基础数据的聚合结果。
在一些实施例中,叶子节点的数量为多个,每个叶子节点用于存储不同主键范围的基础数据。
在一些实施例中,非叶子节点包括第一非叶子节点和第二非叶子节点,其中,第一非叶子节点为叶子节点的父节点,第二非叶子节点为第一非叶子节点的祖先节点。每个第一非叶子节点中存储的聚合数据通过聚合该第一非叶子节点的子节点中存储的基础数据获得,每个第二非叶子节点中存储的聚合数据通过聚合该第二非叶子节点的子节点中存储的聚合数据获得。
在一些实施例中,合并模块601具体用于,根据目标数据的主键,将目标数据合并至相应的叶子节点中,以使目标数据与该叶子节点中存储的基础数据按照主键顺序有序排列。
在一些实施例中,更新模块602具体用于,针对每个合并有目标数据的叶子节点,分别进行如下处理:根据合并至该叶子节点的目标数据,更新该叶子节点的祖先节点中存储的聚合数据。
在一些实施例中,数据库还包括内存表Memtable。SSTable为转储SSTable或基线SSTable,目标数据为Memtable中存储的基础数据或转储SSTable中存储的基础数据。
请参考图7,图7提供了一种数据查询装置700,可以应用于如图5所示的设备中,以实现本说明书的技术方案。示例性地,该数据查询装置700可应用于基于LSM树的数据库,该数据库包括SSTable,该SSTable存储有聚合数据,该数据查询装置700可以包括:
校验模块701,用于响应于针对指定数据的查询指令,校验聚合数据的有效性。
查询模块702,用于根据聚合数据中的有效聚合数据,查询指定数据。
在一些实施例中,所述SSTable中配置有树状存储结构,所述树状存储结构包括叶子节点以及非叶子节点。其中,所述叶子节点用于存储基础数据,所述非叶子节点用于存储聚合数据,所述聚合数据用于示出所述基础数据的聚合结果。
在一些实施例中,叶子节点的数量为多个,每个叶子节点用于存储不同主键范围的基础数据。
在一些实施例中,非叶子节点包括第一非叶子节点和第二非叶子节点,其中,第一非叶子节点为叶子节点的父节点,第二非叶子节点为第一非叶子节点的祖先节点。每个第一非叶子节点中存储的聚合数据通过聚合该第一非叶子节点的子节点中存储的基础数据获得,每个第二非叶子节点中存储的聚合数据通过聚合该第二非叶子节点的子节点中存储的聚合数据获得。
在一些实施例中,SSTable包括转储SSTable和基线SSTable,数据库还包括Memtable。校验模块701具体用于,若第一叶子节点中存储有主键与第一目标主键和/或第二目标主键相同的基础数据,则该第一叶子节点的祖先节点中存储的聚合数据无效。其中,第一叶子节点为基线SSTable中的叶子节点,第一目标主键为Memtable中存储的基础数据的主键,第二目标主键为转储SSTable中存储的基础数据的主键。
在一些实施例中,SSTable包括转储SSTable,数据库还包括Memtable。校验模块701具体用于,若第二叶子节点中存储有主键与第一目标主键相同的基础数据,则该第二叶子节点的祖先节点中存储的聚合数据无效。其中,第二叶子节点为转储SSTable中的叶子节点,第一目标主键为Memtable中存储的基础数据的主键。
在一些实施例中,SSTable包括转储SSTable和基线SSTable。校验模块701具体用于,若第二叶子节点中存储有主键落入目标主键范围的基础数据,则该第二叶子节点的祖先节点中存储的聚合数据无效。其中,第二叶子节点为转储SSTable中的叶子节点,目标主键范围为基线SSTable的叶子节点存储的基础数据的主键范围。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (18)

1.一种数据处理方法,应用于基于日志结构合并LSM树的数据库,所述数据库包括有序字符串表SSTable,所述SSTable存储有聚合数据,所述方法包括:
响应于针对目标数据的合并操作,将所述目标数据合并至所述SSTable;
根据合并至所述SSTable的所述目标数据,更新所述SSTable中存储的聚合数据。
2.根据权利要求1所述的方法,所述SSTable中配置有树状存储结构,所述树状存储结构包括叶子节点以及非叶子节点;
其中,所述叶子节点用于存储基础数据,所述非叶子节点用于存储聚合数据,所述聚合数据用于示出所述基础数据的聚合结果。
3.根据权利要求2所述的方法,所述叶子节点的数量为多个,每个叶子节点用于存储不同主键范围的基础数据。
4.根据权利要求2所述的方法,所述非叶子节点包括第一非叶子节点和第二非叶子节点,其中,第一非叶子节点为叶子节点的父节点,第二非叶子节点为第一非叶子节点的祖先节点;
每个第一非叶子节点中存储的聚合数据通过聚合该第一非叶子节点的子节点中存储的基础数据获得;
每个第二非叶子节点中存储的聚合数据通过聚合该第二非叶子节点的子节点中存储的聚合数据获得。
5.根据权利要求3所述的方法,所述将所述目标数据合并至所述SSTable,包括:
根据所述目标数据的主键,将所述目标数据合并至相应的叶子节点中,以使所述目标数据与该叶子节点中存储的基础数据按照主键顺序有序排列。
6.根据权利要求5所述的方法,所述根据合并至所述SSTable的所述目标数据,更新所述SSTable中存储的聚合数据,包括:
针对每个合并有目标数据的叶子节点,分别进行如下处理:
根据合并至该叶子节点的目标数据,更新该叶子节点的祖先节点中存储的聚合数据。
7.根据权利要求1所述的方法,所述数据库还包括内存表Memtable;
所述SSTable为转储SSTable或基线SSTable,所述目标数据为Memtable中存储的基础数据或转储SSTable中存储的基础数据。
8.一种数据查询方法,应用于基于LSM树的数据库,所述数据库包括SSTable,所述SSTable存储有聚合数据,所述方法包括:
响应于针对指定数据的查询指令,校验所述聚合数据的有效性;
根据所述聚合数据中的有效聚合数据,查询所述指定数据。
9.根据权利要求8所述的方法,所述SSTable中配置有树状存储结构,所述树状存储结构包括叶子节点以及非叶子节点;
其中,所述叶子节点用于存储基础数据,所述非叶子节点用于存储聚合数据,所述聚合数据用于示出所述基础数据的聚合结果。
10.根据权利要求9所述的方法,所述叶子节点的数量为多个,每个叶子节点用于存储不同主键范围的基础数据。
11.根据权利要求9所述的方法,所述非叶子节点包括第一非叶子节点和第二非叶子节点,其中,第一非叶子节点为叶子节点的父节点,第二非叶子节点为第一非叶子节点的祖先节点;
每个第一非叶子节点中存储的聚合数据通过聚合该第一非叶子节点的子节点中存储的基础数据获得;
每个第二非叶子节点中存储的聚合数据通过聚合该第二非叶子节点的子节点中存储的聚合数据获得。
12.根据权利要求9所述的方法,所述SSTable包括转储SSTable和基线SSTable,所述数据库还包括Memtable;
所述校验所述聚合数据的有效性,包括:
若第一叶子节点中存储有主键与第一目标主键和/或第二目标主键相同的基础数据,则该第一叶子节点的祖先节点中存储的聚合数据无效;
其中,所述第一叶子节点为所述基线SSTable中的叶子节点,所述第一目标主键为所述Memtable中存储的基础数据的主键,所述第二目标主键为所述转储SSTable中存储的基础数据的主键。
13.根据权利要求9所述的方法,所述SSTable包括转储SSTable,所述数据库还包括Memtable;
所述校验所述聚合数据的有效性,包括:
若第二叶子节点中存储有主键与第一目标主键相同的基础数据,则该第二叶子节点的祖先节点中存储的聚合数据无效;
其中,所述第二叶子节点为所述转储SSTable中的叶子节点,所述第一目标主键为所述Memtable中存储的基础数据的主键。
14.根据权利要求10所述的方法,所述SSTable包括转储SSTable和基线SSTable;
所述校验所述聚合数据的有效性,包括:
若第二叶子节点中存储有主键落入目标主键范围的基础数据,则该第二叶子节点的祖先节点中存储的聚合数据无效;
其中,所述第二叶子节点为所述转储SSTable中的叶子节点,所述目标主键范围为所述基线SSTable的叶子节点存储的基础数据的主键范围。
15.一种数据处理装置,应用于基于LSM树的数据库,所述数据库包括SSTable,所述SSTable存储有聚合数据,包括:
合并模块,用于响应于针对目标数据的合并操作,将所述目标数据合并至所述SSTable;
更新模块,用于根据合并至所述SSTable的所述目标数据,更新所述SSTable中存储的聚合数据。
16.一种数据查询装置,应用于基于LSM树的数据库,所述数据库包括SSTable,所述SSTable存储有聚合数据,包括:
校验模块,用于响应于针对指定数据的查询指令,校验所述聚合数据的有效性;
查询模块,用于根据所述聚合数据中的有效聚合数据,查询所述指定数据。
17.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至7中任一项所述的方法和/或如权利要求8至14中任一项所述的方法。
18.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至7中任一项所述方法的步骤和/或如权利要求8至14中任一项所述的方法的步骤。
CN202311213927.9A 2023-09-19 2023-09-19 数据处理方法、数据查询方法及装置 Pending CN117271513A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311213927.9A CN117271513A (zh) 2023-09-19 2023-09-19 数据处理方法、数据查询方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311213927.9A CN117271513A (zh) 2023-09-19 2023-09-19 数据处理方法、数据查询方法及装置

Publications (1)

Publication Number Publication Date
CN117271513A true CN117271513A (zh) 2023-12-22

Family

ID=89213684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311213927.9A Pending CN117271513A (zh) 2023-09-19 2023-09-19 数据处理方法、数据查询方法及装置

Country Status (1)

Country Link
CN (1) CN117271513A (zh)

Similar Documents

Publication Publication Date Title
US7734615B2 (en) Performance data for query optimization of database partitions
CN111898139B (zh) 数据读写方法及装置、电子设备
US9953102B2 (en) Creating NoSQL database index for semi-structured data
CN110032598B (zh) 字段更新方法及装置、电子设备
WO2015195830A2 (en) Data query method and apparatus
CN107491487A (zh) 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质
CN112181902B (zh) 数据库的存储方法、装置及电子设备
US20220414155A1 (en) Database management method and apparatus based on lookup table
US9164978B2 (en) Identifying objects within a multidimensional array
CN110442571A (zh) 一种数据处理方法、装置及计算机存储介质
CN103500188A (zh) 一种数据表生成的方法和系统
CN104166649A (zh) 一种用于搜索引擎的缓存方法和设备
CN109460406A (zh) 一种数据处理方法及装置
CN117271513A (zh) 数据处理方法、数据查询方法及装置
CN113849482A (zh) 一种数据迁移方法、装置及电子设备
US9824105B2 (en) Adaptive probabilistic indexing with skip lists
CN104239576A (zh) 查找HBase表列值中所有行的方法和装置
US11704365B2 (en) Graph storage in a database
CN110019987B (zh) 一种基于决策树的日志匹配方法和装置
CN117520349A (zh) 索引表创建方法、数据查询方法及装置
CN116383255A (zh) 聚合查询方法、系统、设备及存储介质
CN115794960A (zh) 关系型数据库的管理方法及装置
CN116541397A (zh) 状态数据查询方法及装置
CN117688033A (zh) 数据处理方法及装置、电子设备及存储介质
CN117763008A (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