CN115543993A - 数据处理方法、装置、电子设备及存储介质 - Google Patents

数据处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115543993A
CN115543993A CN202110736258.8A CN202110736258A CN115543993A CN 115543993 A CN115543993 A CN 115543993A CN 202110736258 A CN202110736258 A CN 202110736258A CN 115543993 A CN115543993 A CN 115543993A
Authority
CN
China
Prior art keywords
key
index
data
key value
value
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
CN202110736258.8A
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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202110736258.8A priority Critical patent/CN115543993A/zh
Publication of CN115543993A publication Critical patent/CN115543993A/zh
Pending legal-status Critical Current

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
    • 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/24Querying
    • G06F16/242Query formulation
    • 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/2455Query execution

Landscapes

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

Abstract

本申请公开了一种数据处理方法、装置、电子设备及存储介质,其中,数据处理方法包括:生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引;其中,每个索引包括第一键、第二键和至少一个第三键;所述第一键表征对应的第一数据;所述第二键表征对应的第一数据的标识;所述至少两个第一数据对应的索引在所述存储引擎中按照所述至少一个第三键的键值排序;在所述存储引擎中查找出第一查询条件对应的至少一个第一索引;所述至少一个第一索引中每个第一索引的第三键的键值均与所述第一查询条件中指示的第三键的键值相匹配;返回查询结果;所述查询结果包括所述至少一个第一索引中每个第一索引的第二键的键值。

Description

数据处理方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
数据索引技术,是在数据系统中建立索引,帮助用户快速定位存储数据的技术。相关技术中,为在原生数据系统内部实现数据索引,需要对每个数据系统进行对应的开发,开发效率低下。
发明内容
有鉴于此,本申请实施例提供一种数据处理方法、装置、电子设备及存储介质,以至少解决相关技术为在原生数据系统内部实现数据索引,存在的开发效率低下的问题。
本申请实施例的技术方案是这样实现的:
本申请实施例提供了一种数据处理方法,所述方法包括:
生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引;其中,每个索引包括第一键、第二键和至少一个第三键;所述第一键表征对应的第一数据;所述第二键表征对应的第一数据的标识;所述至少两个第一数据对应的索引在所述存储引擎中按照所述至少一个第三键的键值排序;在所述存储引擎中查找出第一查询条件对应的至少一个第一索引;所述至少一个第一索引中每个第一索引的第三键的键值均与所述第一查询条件中指示的第三键的键值相匹配;
返回查询结果;所述查询结果包括所述至少一个第一索引中每个第一索引的第二键的键值。
其中,上述方案中,所述至少一个第三键,包括以下至少之一:
表征存储对应第一数据的数据表的键;
表征对应第一数据的逻辑分区的键;
表征对应第一数据的属性的键。
上述方案中,所述第一键的键值格式和第二键的键值格式相同;在所述第一键和所述第二键之间设置有分隔符。
上述方案中,在所述生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引之前,所述方法还包括:
将所述至少两个第一数据进行转义处理,得到对应的第一键的键值。
上述方案中,在所述存储引擎中查找出第一查询条件对应的至少一个第一索引时,所述方法包括:
若确定出一个第一索引,在所述存储引擎中定位至确定出的第一索引的上一条索引或下一条索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值相匹配的情况下,将定位至的索引确定为一个第一索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值不匹配的情况下,结束查找。
上述方案中,所述第一查询条件还用于指示第一键的键值;所述将定位至的索引确定为一个第一索引,包括:
在定位至的索引的第一键的键值与所述第一查询条件中指示的第一键的键值相匹配的情况下,确定定位至的索引为一个第一索引。
上述方案中,在所述生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引之前,所述方法还包括:
对对应的第一数据按照设定规则进行处理,得到所述第一键的键值。
上述方案中,所述对对应的第一数据按照设定规则进行处理,得到所述第一键的键值,包括:
将对应的第一数据中的每个字符进行倒序处理,得到所述第一键的键值;
和/或,
基于对应第一数据中至少两个字符,得到所述第一键的键值。
本申请实施例还提供了一种数据处理装置,包括:
生成单元,用于生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引;其中,每个索引包括第一键、第二键和至少一个第三键;所述第一键表征对应的第一数据;所述第二键表征对应的第一数据的标识;所述至少两个第一数据对应的索引在所述存储引擎中按照所述至少一个第三键的键值排序;
查找单元,用于在所述存储引擎中查找出第一查询条件对应的至少一个第一索引;所述至少一个第一索引中每个第一索引的第三键的键值均与所述第一查询条件中指示的第三键的键值相匹配;
结果单元,用于返回查询结果;所述查询结果包括所述至少一个第一索引中每个第一索引的第二键的键值。
本申请实施例还提供了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行上述数据处理方法的步骤。
本申请实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
在本申请实施例中,生成并在数据系统内部的存储引擎中存储至少两个第一数据中每个第一数据对应的索引,其中,每个索引包括第一键、第二键和至少一个第三键,并且至少两个第一数据对应的索引按照对应的至少一个第三键的键值在存储引擎中排序;在查找数据时,在存储引擎中查找出对应的第三键的键值与第一查询条件中指示的第三键的键值相匹配的至少一个第一索引,并将至少一个第一索引中每个第一索引的第二键的键值作为查询结果返回。这样,便可以实现在数据系统内部实现数据查询。上述数据处理方案能够普遍适用于各类数据系统,在进行数据索引时无需访问外部索引系统,也不需要针对不同的原生数据系统进行不同数据索引功能的开发,从而提高了数据系统的开发效率。
附图说明
图1为本申请实施例提供的一种数据处理方法的流程示意图;
图2为本申请实施例提供的一种索引的设定的格式的示意图;
图3为本申请实施例提供的一种索引排序的示意图;
图4为本申请实施例提供的一种索引查找的示意图;
图5为本申请应用实施例提供的一种索引的示意图;
图6为本申请应用实施例提供的又一种索引的示意图;
图7为本申请应用实施例提供的另一种索引的示意图;
图8为本申请实施例提供的一种数据处理装置的结构示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
随着大数据时代的到来,存储系统承载了海量的数据。然而用户很难在海量的数据中定位目标数据。例如,对象和文件是两种最常用的非结构化数据的数据存储形式,每次在数据系统中的亿级对象和千万级文件中进行遍历查找,需要长达数十分钟到数小时的时间。对用户有效的使用数据造成了很大负担。
数据索引技术,是在数据系统中建立索引,帮助用户快速定位存储数据的技术,用户遍历查找文件时,不需要遍历所有的数据,从而大量减少了查找的时间,提高了数据可用性。相关技术中,将索引系统存放在原生数据系统中的方案,例如MySql的存储引擎Innodb的二级索引基于原生存储结构实现了Hash、B树等索引功能,因为索引系统直接涉及存储结构,为在原生数据系统内部实现数据索引,需要对每个数据系统进行对应的开发,开发效率低下。
基于此,在本申请的各种实施例中,生成并在数据系统内部的存储引擎中存储至少两个第一数据中每个第一数据对应的索引,其中,每个索引包括第一键、第二键和至少一个第三键,并且至少两个第一数据对应的索引按照对应的至少一个第三键的键值在存储引擎中排序;在查找数据时,在存储引擎中查找出对应的第三键的键值与第一查询条件中指示的第三键的键值相匹配的至少一个第一索引,并将至少一个第一索引中每个第一索引的第二键的键值作为查询结果返回。这样,便可以实现在数据系统内部实现数据查询。上述数据处理方案能够普遍适用于各类数据系统,在进行数据索引时无需访问外部索引系统,也不需要针对不同的原生数据系统进行不同数据索引功能的开发,从而提高了数据系统的开发效率。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为本申请实施例提供的数据处理方法的实现流程示意图,执行主体可以是电子设备。如图1示出的,数据处理方法包括:
步骤101:生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引。
其中,每个索引包括第一键、第二键和至少一个第三键;所述第一键表征对应的第一数据;所述第二键表征对应的第一数据的标识;所述至少两个第一数据对应的索引在所述存储引擎中按照所述至少一个第三键的键值排序。
在本实施例中,由电子设备生成并在数据系统内部的存储引擎中存储至少两个第一数据中每个第一数据对应的索引,索引有设定的格式,每个索引包括第一键、第二键和至少一个第三键,至少两个第一数据对应的索引按照对应的至少一个第三键的键值在存储引擎中排序。第一键表征对应的第一数据本身。第二键表征索引指向的第一数据的标识,可以是指向第一数据的唯一标识符,这里的标识符可以用于指示第一数据的存储位置,例如文件系统中的索引节点inode或结构化查询语言数据库(SQL,Structured Query Languageserver database)的主键等。这里,存储引擎可以是KV键值存储引擎,也可以是RocksDB,一种基于日志结构合并(LSM,Log-Structured Merge)树实现的单机KV键值存储引擎,支持Put、Get等点查找接口以及迭代器提供的连续查找接口,存储引擎可以设置于数据系统内部。
在一实施例中,所述第一键的键值格式和第二键的键值格式相同;在所述第一键和所述第二键之间设置有分隔符。
这里,第一键的键值格式和第二键的键值格式相同,可以为字节bytes,在第一键和第二键之间设置有分隔符,分隔符可以使用ASCII码值为0至31的字符,即不可打印字符中一位来表示的特殊字符,这里的特殊字符可以被称为INDEX SPLITTER。这样,可以将每个索引的bytes格式的第一键和第二键区分开来。
在一实施例中,在所述生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引之前,所述方法还包括:
将所述至少两个第一数据进行转义处理,得到对应的第一键的键值。
在生成并在数据系统内部的存储引擎中存储至少两个第一数据中每个第一数据对应的索引之前,将每个第一数据进行转义处理,得到每个第一数据对应的第一键的键值。这里,转义可以通过定义在特定字母前加“\”来表示不能显示的ASCII字符,如\0、\t、\n等实现。
这样,在第一键的键值包括任意的二进制数据(可打印字符和不可打印字符)时,可以将每个索引的bytes格式的第一键和第二键区分开来。
在一实施例中,所述至少一个第三键,包括以下至少之一:
表征存储对应第一数据的数据表的键;
表征对应第一数据的逻辑分区的键;
表征对应第一数据的属性的键。
至少一个第三键,可以是以下任一种组合:仅包括表征存储对应第一数据的数据表的键;仅包括表征对应第一数据的逻辑分区的键;仅包括表征对应第一数据的属性的键;包括表征存储对应第一数据的数据表的键和表征对应第一数据的逻辑分区的键;包括表征存储对应第一数据的数据表的键和表征对应第一数据的属性的键;包括表征对应第一数据的逻辑分区的键和表征对应第一数据的属性的键;包括表征存储对应第一数据的数据表的键、表征对应第一数据的逻辑分区的键和表征对应第一数据的属性的键。这里,每个键可以表征为一个字段。这样,通过设定格式,实现索引在存储引擎中的连续存储,可以提高查找到符合查找条件的索引的效率。
如图2所示出的一种索引的设定的格式的示意图,一个索引包括一个第一键、一个第二键和三个第三键,按照设定格式排列。如下表示出了各键的键名、字段名称、字段类型、解释:
Figure BDA0003141702740000071
如图3所示出的,索引按照对应的第三键的键值排序的示意图,按照第三键1的键值为region_1、region_2、region_3等进行排列,在第三键1的键值为region_1的索引中,按照第三键2的键值进行排列,再进一步按照第三键3的键值为name、owner进行排列。这里,还可以更进一步根据第一键的键值进行排列。这样,同一个Region中,在存储引擎中存储的具有相同Column、Field的索引在字典序上是连续的。通过索引在存储引擎中的连续存储,可以提高查找到符合查找条件的索引的效率。
步骤102:在所述存储引擎中查找出第一查询条件对应的至少一个第一索引。
其中,所述至少一个第一索引中每个第一索引的第三键的键值均与所述第一查询条件中指示的第三键的键值相匹配。
基于第一查询条件指示的第三键的键值,在存储引擎中进行查找,查找出至少一个第一索引,这里,查找出的第一索引对应的第三键的键值与第一查询条件与第一查询条件中指示的第三键的键值相匹配。第一查询条件可以设置为仅包括待查找索引对应的至少一个第三键的键值,可以设置为既包括待查找索引对应的至少一个第三键的键值,也包括待查找索引对应的部分或全部的第一键的键值。
例如,第一查询条件可以设置为第三键的键值为region_1、mds、owner。第一查询条件也可以设置为第三键的键值为region_1、mds、owner,第一键的键值为root。
步骤103:返回查询结果。
其中,所述查询结果包括所述至少一个第一索引中每个第一索引的第二键的键值。
基于在存储引擎中查找出第一查询条件对应的至少一个第一索引,返回包括至少一个第一索引中每个第一索引的第二键的键值的查询结果。
生成并在数据系统内部的存储引擎中存储至少两个第一数据中每个第一数据对应的索引,其中,每个索引包括第一键、第二键和至少一个第三键,并且至少两个第一数据对应的索引按照对应的至少一个第三键的键值在存储引擎中排序;在查找数据时,在存储引擎中查找出对应的第三键的键值与第一查询条件中指示的第三键的键值相匹配的至少一个第一索引,并将至少一个第一索引中每个第一索引的第二键的键值作为查询结果返回。这样,便可以实现在数据系统内部实现数据查询。上述数据处理方案能够普遍适用于各类数据系统,在进行数据索引时无需访问外部索引系统,也不需要针对不同的原生数据系统进行不同数据索引功能的开发,从而提高了数据系统的开发效率。
在一实施例中,在所述存储引擎中查找出第一查询条件对应的至少一个第一索引时,所述方法包括:
若确定出一个第一索引,在所述存储引擎中定位至确定出的第一索引的上一条索引或下一条索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值相匹配的情况下,将定位至的索引确定为一个第一索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值不匹配的情况下,结束查找。
基于第一查询条件中指示的第三键的键值,在存储引擎中进行查找,若确定出一个第一索引,在存储引擎中定位至确定出的第一索引的上一条索引或下一条索引。在定位至的索引的第三键的键值与第一查询条件中指示的第三键的键值相匹配的情况下,将此时定位至的索引也确定为一个第一索引,并继续在存储引擎中定位至最近一次确定出的第一索引的上一条索引或下一条索引。在定位至的索引的第三键的键值与第一查询条件中指示的第三键的键值不相匹配的情况下,结束查找。这里,可以在结束查找后返回查询结果。当上一次定位时是定位第一索引的上一条索引,则此次也是定位第一索引的上一条索引;当上一次定位时是定位第一索引的下一条索引,则此次也是定位第一索引的下一条索引。这样,通过顺序查找在存储引擎中顺序存储的索引,可以提高查找到符合条件的索引的查找效率。
实际应用中,用户需要查找region_1下file数据表中为name类型的所有数据,可以通过迭代器定位数据,确定第一索引。如图4所示出的索引查找示意图,将第一查询条件设定为第三键的键值为region_1、file、name,即索引的是在region_1下file数据表中为name类型的数据。通过迭代器定位到第一个索引,并继续在存储引擎中定位至最近一次确定出的第一索引的下一条索引(即第二个索引),判断第二个索引是否满足第一查询条件,由于第二个索引也满足第一查询条件,将第二个索引确定为第一索引,并在存储引擎中定位至最近一次确定出的第一索引的下一条索引(即第三个索引),判断第三个索引是否满足第一查询条件,直到定位至第六航索引时,由于第六个索引不满足第一查询条件,结束查找。
在一实施例中,所述第一查询条件还用于指示第一键的键值;所述将定位至的索引确定为一个第一索引,包括:
在定位至的索引的第一键的键值与所述第一查询条件中指示的第一键的键值相匹配的情况下,确定定位至的索引为一个第一索引。
在定位至的索引的第三键的键值与第一查询条件中指示的第三键的键值相匹配的情况下,判断定位至的索引的第一键的键值与第一查询条件中指示的第一键的键值是否相匹配,在匹配的情况下,确定定位至的索引为一个第一索引。这样,原生数据系统可以实现基于被索引数据在存储引擎中查找索引的功能。
实际应用中,用户需要查找属于root用户的所有数据,可以通过迭代器定位数据,确定第一索引。如图4所示出的索引查找示意图,将第一查询条件设定为第三键的键值为region_1、file、owner,和第一键的键值为root。通过迭代器定位到第六个索引,并继续在存储引擎中定位至最近一次确定出的第一索引的下一条索引(即第七个索引),判断第七个索引是否满足第一查询条件,由于第七个索引也满足第一查询条件,将第七个索引确定为第一索引,并在存储引擎中定位至最近一次确定出的第一索引的下一条索引(即第八个索引),判断第八个索引是否满足第一查询条件,由于第八个索引不满足第一查询条件,结束查找。
在一实施例中,在所述生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引之前,所述方法还包括:
对对应的第一数据按照设定规则进行处理,得到所述第一键的键值。
在生成并在数据系统内部的存储引擎中存储至少两个第一数据中每个第一数据对应的索引之前,对对应的第一数据按照设定规则进行处理,得到第一键的键值。这样,通过对第一数据的处理,使原生数据系统支持多种查找索引方式,使原生数据系统的索引查找能够普遍适用于各种索引场景,从而提高了数据系统的开发效率。
在一实施例中,所述对对应的第一数据按照设定规则进行处理,得到所述第一键的键值,包括:
将对应的第一数据中的每个字符进行倒序处理,得到所述第一键的键值;
和/或,
基于对应的第一数据中至少两个字符,得到所述第一键的键值。
这里,对应第一数据中至少两个字符,可以是连续的至少两个字符,也可以是最后一位字符和第一位字符,如“life4”的“4l”。对对应第一数据按照设定规则进行处理的方式,可以是将对应第一数据中的每个字符进行倒序处理,可以是基于对应第一数据中至少两个字符,也可以是两种方式的结合。这样,通过对第一数据的处理,使原生数据系统支持多种查找索引方式,使原生数据系统的索引查找能够普遍适用于各种索引场景,提高了数据系统的开发效率。
如图5至图7所示出的索引的示意图。
图5示出了一种将第一数据进行倒序处理的示意图,如“life4”处理为“4efil”,可以支持从最后一位开始查找le4结尾文件,查找的时候可以以“4ef”为第一查询条件,会匹配到第四个索引。这样,利用存储引擎的索引可以实现反向索引功能。
图6示出了一种将第一数据进行轮排索引处理的示意图,如“life4”处理为“file4$”、“ile4$f”、“le4$fi”“e4$fil”“4$file”,字符串多长就有多少个对应的处理结果,$字符为分隔符用来表示结尾,查找的时候以“ile”为第一查询条件,会匹配到第二个索引。这样,利用存储引擎的索引可以模糊查找类似“ile”这种中间字段,实现轮排索引功能。
图7示出了一种将第一数据进行k-gram处理的示意图,如“life4”处理为“fil”、“ile”、“le4”“e4$f”“4$fi”,$字符为分隔符用来表示结尾,查找的时候以“ile”为第一查询条件,会匹配到第二个索引,在查找到索引结果之后需要对结果进行再次过滤。这样,利用存储引擎的索引可以模糊查找类似“ile”这种中间字段,且相较于轮排索引可以节约存储空间,实现k-gram索引功能。
下面结合应用实施例对本申请再作进一步的详细描述。
目前,在现有的数据系统中实现索引方案,可以根据索引存放的位置分为原生实现数据索引和外部实现数据索引两种:
(1)原生实现数据索引:通过在原生数据系统中实现了可用的索引功能。比如说MySql的数据引擎Innodb的二级索引基于原生存储结构实现了Hash、B树等索引功能。因为索引系统直接涉及存储结构,为实现原生数据系统的原生实现数据索引,需要对每个数据系统进行对应的开发,开发效率低下。同时,支持的查找方式有限。
(2)外部实现数据索引:在数据系统之外另外部署一个索引系统,数据系统同步或异步的向索引系统同步数据,后续的用户查找请求也由索引系统负责。但存在运行效率较低,一致性较弱的问题。
一般情况下,因为不需要跨系统的交互,(1)的运行效率要高于(2)。基于同样的原因,(1)的索引功能能够比(2)有着更强的一致性。但在一个现有的数据系统上实现索引功能需要很大的工作量,也需要对每个数据系统进行对应的开发,开发效率低下。并且,所支持的索引类型往往不能和(2)方案的外部实现数据索引相比较。
本申请应用实施例提供了一种键值对存储Key-Value Store的倒排索引InvertedIndexes方法,利用了KV键值存储引擎对索引进行顺序存储,并通过迭代器进行连续访问实现查找。不同于MySql的直接索引的物理存储结构,本方案基于KV键值存储引擎,不需要直接索引物理存储结构,迭代器功能在隐藏了底层存储结构的同时提供了高效的连续访问抽象。
这里,键值对存储是指一种数据模型以键值对形式组织,且提供Put、Get接口的存储系统。倒排索引系统是指一种通过维护额外索引数据,加快数据查找的技术。索引有设定的格式,如图2所示。基于设定格式的索引,在同一个region中的索引就以一种规律被组织起来了。同一个Region(数据表的物理分隔单位,即第三键1)中,在存储引擎中存储的具有相同Column(即第三键2)、Field(即第三键3)的索引在字典序上是连续的。通过索引在存储引擎中的连续存储,可以提高查找到符合查找条件的索引的效率。
在存储引擎中通过迭代器实现查找第一索引,迭代器包括Seek、SeekForPrev、Next、Prev等操作接口。Seek和SeekForPrev用于快速定位索引,分别用于定位当前索引之后或之前的数据。Next、Prev分别用以对索引进行向后或向前的定位。
将设定的Region、Column、Field字段与部分或全部Data字段(即第一键)构成传入Seek接口的查找字段,然后通过Next接口顺序访问索引,如果发现索引中不符合查询条件则停止查找,如果符合则将索引对应的ID字段(即第二键)取出并加入返回结果中,再继续调用Next接口。
以图4所示的场景为例,用户需要查找属于root用户的所有数据。region_1、file、owner和root组成了给定Seek接口的查找字段。Seek将定位到第一条符合查询条件的数据,发现各个字段都符合查询条件,将inode9加入返回结果。调用Next后下一条也符合查找结果,再加入inode4。最后一次Next发现Data字段的unix与root不匹配,结束查找。
由于存储引擎可以是一种基于LSM树实现的单机KV键值存储引擎,LSM树是一个N-层的树形结构,因为每一层的索引数据都是有序的,迭代器遍历所有符合的索引数据可以是看做N路的数据归并。通过Bloom Filter、Block Index等辅助的排序字符串表(SST,Sorted String table)数据结构,迭代器可以进行高效的遍历。
并且,通过设定规则处理第一数据对应的Data字段,支持的索引类型除了有序索引,还可以包括检索领域的其它索引类型,例如轮排索引、k-gram等。这样,通过对第一数据对应的Data字段的处理,使现有的原生数据系统支持多种索引查找方式,使原生数据系统的索引查找能够普遍地适用于各种索引场景,从而提高了开发效率。
如图5至图7所示出的索引的示意图。
图5示出了一种将第一数据对应的Data字段的进行倒序处理的示意图,如“life4”处理为“4efil”,可以支持Data字段从最后一位开始查找le4结尾文件,查找的时候可以以“4ef”为第一查询条件,会匹配到第四个索引。这样,利用存储引擎的索引可以实现反向索引功能。
图6示出了一种将第一数据对应的Data字段的进行轮排索引处理的示意图,如“life4”处理为“file4$”、“ile4$f”、“le4$fi”“e4$fil”“4$file”,字符串多长就有多少个对应的处理结果,$字符为分隔符用来表示结尾,查找的时候以“ile”为第一查询条件,会匹配到第二个索引。这样,利用存储引擎的索引可以模糊查找类似“ile”这种中间字段,实现轮排索引功能。
图7示出了一种将第一数据对应的Data字段的进行k-gram处理的示意图,如“life4”处理为“fil”、“ile”、“le4”“e4$f”“4$fi”,$字符为分隔符用来表示结尾,查找的时候以“ile”为第一查询条件,会匹配到第二个索引,在查找到索引结果之后需要对结果进行再次过滤。这样,利用存储引擎的索引可以模糊查找类似“ile”这种中间字段,且相较于轮排索引可以节约存储空间,实现k-gram索引功能。
为实现本申请实施例的方法,本申请实施例还提供了一种数据处理装置,如图8所示,该装置包括:
生成单元801,用于生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引;其中,每个索引包括第一键、第二键和至少一个第三键;所述第一键表征对应的第一数据;所述第二键表征对应的第一数据的标识;所述至少两个第一数据对应的索引在所述存储引擎中按照所述至少一个第三键的键值排序;
查找单元802,用于在所述存储引擎中查找出第一查询条件对应的至少一个第一索引;所述至少一个第一索引中每个第一索引的第三键的键值均与所述第一查询条件中指示的第三键的键值相匹配;
结果单元803,用于返回查询结果;所述查询结果包括所述至少一个第一索引中每个第一索引的第二键的键值。
其中,在一个实施例中,所述至少一个第三键,包括以下至少之一:
表征存储对应第一数据的数据表的键;
表征对应第一数据的逻辑分区的键;
表征对应第一数据的属性的键。
在一个实施例中,所述第一键的键值格式和第二键的键值格式相同;在所述第一键和所述第二键之间设置有分隔符。
在一个实施例中,所述装置还包括:
转义单元,用于将所述至少两个第一数据进行转义处理,得到对应的第一键的键值;
在一个实施例中,所述查找单元802,用于:
若确定出一个第一索引,在所述存储引擎中定位至确定出的第一索引的上一条索引或下一条索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值相匹配的情况下,将定位至的索引确定为一个第一索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值不匹配的情况下,结束查找。
在一个实施例中,所述第一查询条件还用于指示第一键的键值;所述将定位至的索引确定为一个第一索引,包括:
在定位至的索引的第一键的键值与所述第一查询条件中指示的第一键的键值相匹配的情况下,确定定位至的索引为一个第一索引。
在一个实施例中,所述装置还包括:
处理单元,用于对对应的第一数据按照设定规则进行处理,得到所述第一键的键值。
在一个实施例中,所述处理单元,用于:
将对应的第一数据中的每个字符进行倒序处理,得到所述第一键的键值;
和/或,
基于对应的第一数据中至少两个连续字符,得到所述第一键的键值。
实际应用时,所述生成单元801、查找单元802、结果单元803、转义单元、处理单元可由基于数据处理装置中的处理器,比如中央处理器(CPU,Central Processing Unit)、数字信号处理器(DSP,Digital Signal Processor)、微控制单元(MCU,MicrocontrollerUnit)或可编程门阵列(FPGA,Field-Programmable Gate Array)等实现。
需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本申请实施例数据处理方法,本申请实施例还提供了一种电子设备,如图9所示,该电子设备900包括:
通信接口910,能够与其它设备比如网络设备等进行信息交互;
处理器920,与所述通信接口910连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的方法。而所述计算机程序存储在存储器930上。
具体地,所述处理器920,用于:
生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引;其中,每个索引包括第一键、第二键和至少一个第三键;所述第一键表征对应的第一数据;所述第二键表征对应的第一数据的标识;所述至少两个第一数据对应的索引在所述存储引擎中按照所述至少一个第三键的键值排序;
在所述存储引擎中查找出第一查询条件对应的至少一个第一索引;所述至少一个第一索引中每个第一索引的第三键的键值均与所述第一查询条件中指示的第三键的键值相匹配;
返回查询结果;所述查询结果包括所述至少一个第一索引中每个第一索引的第二键的键值。
其中,在一个实施例中,所述至少一个第三键,包括以下至少之一:
表征存储对应第一数据的数据表的键;
表征对应第一数据的逻辑分区的键;
表征对应第一数据的属性的键。
在一个实施例中,所述第一键的键值格式和第二键的键值格式相同;在所述第一键和所述第二键之间设置有分隔符。
在一个实施例中,所述处理器920,用于:
将所述至少两个第一数据进行转义处理,得到对应的第一键的键值。
在一个实施例中,所述处理器920,用于:
若确定出一个第一索引,在所述存储引擎中定位至确定出的第一索引的上一条索引或下一条索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值相匹配的情况下,将定位至的索引确定为一个第一索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值不匹配的情况下,结束查找。
在一个实施例中,所述第一查询条件还用于指示第一键的键值;所述将定位至的索引确定为一个第一索引,包括:
在定位至的索引的第一键的键值与所述第一查询条件中指示的第一键的键值相匹配的情况下,确定定位至的索引为一个第一索引。
在一个实施例中,所述处理器920,用于:
对对应的第一数据按照设定规则进行处理,得到所述第一键的键值。
在一个实施例中,所述处理器920,用于:
将对应的第一数据中的每个字符进行倒序处理,得到所述第一键的键值;
和/或,
基于对应的第一数据中至少两个连续字符,得到所述第一键的键值。
当然,实际应用时,电子设备900中的各个组件通过总线系统940耦合在一起。可理解,总线系统940用于实现这些组件之间的连接通信。总线系统940除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线系统940。
本申请实施例中的存储器930用于存储各种类型的数据以支持电子设备900的操作。这些数据的示例包括:用于在电子设备900上操作的任何计算机程序。
可以理解,存储器930可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器930旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器920中,或者由处理器920实现。处理器920可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器920中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器920可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器920可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器930,处理器920读取存储器930中的程序,结合其硬件完成前述方法的步骤。
可选地,所述处理器920执行所述程序时实现本申请实施例的各个方法中由电子设备实现的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器930,上述计算机程序可由电子设备的处理器920执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、电子设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。除非另有说明和限定,术语“连接”应做广义理解,例如,可以是电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
另外,在本申请实例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解“第一\第二\第三”区分的对象在适当情况下可以互换,以使这里描述的本申请的实施例可以除了在这里图示或描述的那些以外的顺序实施。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
在具体实施方式中所描述的各个实施例中的各个具体技术特征,在不矛盾的情况下,可以进行各种组合,例如通过不同的具体技术特征的组合可以形成不同的实施方式,为了避免不必要的重复,本申请中各个具体技术特征的各种可能的组合方式不再另行说明。

Claims (11)

1.一种数据处理方法,其特征在于,所述方法包括:
生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引;其中,每个索引包括第一键、第二键和至少一个第三键;所述第一键表征对应的第一数据;所述第二键表征对应的第一数据的标识;所述至少两个第一数据对应的索引在所述存储引擎中按照所述至少一个第三键的键值排序;
在所述存储引擎中查找出第一查询条件对应的至少一个第一索引;所述至少一个第一索引中每个第一索引的第三键的键值均与所述第一查询条件中指示的第三键的键值相匹配;
返回查询结果;所述查询结果包括所述至少一个第一索引中每个第一索引的第二键的键值。
2.根据权利要求1所述的方法,其特征在于,所述至少一个第三键,包括以下至少之一:
表征存储对应第一数据的数据表的键;
表征对应第一数据的逻辑分区的键;
表征对应第一数据的属性的键。
3.根据权利要求1所述的方法,其特征在于,所述第一键的键值格式和第二键的键值格式相同;在所述第一键和所述第二键之间设置有分隔符。
4.根据权利要求1所述的方法,其特征在于,在所述生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引之前,所述方法还包括:
将所述至少两个第一数据进行转义处理,得到对应的第一键的键值。
5.根据权利要求1至4任一项所述的方法,其特征在于,在所述存储引擎中查找出第一查询条件对应的至少一个第一索引时,所述方法包括:
若确定出一个第一索引,在所述存储引擎中定位至确定出的第一索引的上一条索引或下一条索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值相匹配的情况下,将定位至的索引确定为一个第一索引;
在定位至的索引的第三键的键值与所述第一查询条件中指示的第三键的键值不匹配的情况下,结束查找。
6.根据权利要求5所述的方法,其特征在于,所述第一查询条件还用于指示第一键的键值;所述将定位至的索引确定为一个第一索引,包括:
在定位至的索引的第一键的键值与所述第一查询条件中指示的第一键的键值相匹配的情况下,确定定位至的索引为一个第一索引。
7.根据权利要求1至4任一项所述的方法,其特征在于,在所述生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引之前,所述方法还包括:
对对应的第一数据按照设定规则进行处理,得到所述第一键的键值。
8.根据权利要求7所述的方法,其特征在于,所述对对应的第一数据按照设定规则进行处理,得到所述第一键的键值,包括:
将对应的第一数据中的每个字符进行倒序处理,得到所述第一键的键值;
和/或,
基于对应的第一数据中至少两个字符,得到所述第一键的键值。
9.一种数据处理装置,其特征在于,包括:
生成单元,用于生成并在存储引擎中存储至少两个第一数据中每个第一数据对应的索引;其中,每个索引包括第一键、第二键和至少一个第三键;所述第一键表征对应的第一数据;所述第二键表征对应的第一数据的标识;所述至少两个第一数据对应的索引在所述存储引擎中按照所述至少一个第三键的键值排序;
查找单元,用于在所述存储引擎中查找出第一查询条件对应的至少一个第一索引;所述至少一个第一索引中每个第一索引的第三键的键值均与所述第一查询条件中指示的第三键的键值相匹配;
结果单元,用于返回查询结果;所述查询结果包括所述至少一个第一索引中每个第一索引的第二键的键值。
10.一种电子设备,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行权利要求1至8任一项所述的数据处理方法的步骤。
11.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的数据处理方法的步骤。
CN202110736258.8A 2021-06-30 2021-06-30 数据处理方法、装置、电子设备及存储介质 Pending CN115543993A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110736258.8A CN115543993A (zh) 2021-06-30 2021-06-30 数据处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110736258.8A CN115543993A (zh) 2021-06-30 2021-06-30 数据处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115543993A true CN115543993A (zh) 2022-12-30

Family

ID=84717064

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110736258.8A Pending CN115543993A (zh) 2021-06-30 2021-06-30 数据处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115543993A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117762949A (zh) * 2024-02-19 2024-03-26 平凯星辰(北京)科技有限公司 数据抽取方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117762949A (zh) * 2024-02-19 2024-03-26 平凯星辰(北京)科技有限公司 数据抽取方法、装置、电子设备及存储介质
CN117762949B (zh) * 2024-02-19 2024-05-24 平凯星辰(北京)科技有限公司 数据抽取方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN110321344B (zh) 关联数据的信息查询方法、装置、计算机设备及存储介质
CN108304444B (zh) 信息查询方法及装置
EP1234258B1 (en) System for managing rdbm fragmentations
CN107368527B (zh) 基于数据流的多属性索引方法
EP2788896B1 (en) Fuzzy full text search
JP7362190B2 (ja) ストレージエンジンにおけるデータインデックス付け方法、データインデックス付け装置、コンピュータ装置、及びコンピュータプログラム
CN104063384A (zh) 一种数据检索方法及装置
CN111506621A (zh) 一种数据统计方法及装置
Pei et al. An efficient query scheme for hybrid storage blockchains based on merkle semantic trie
CN114610708A (zh) 一种向量数据处理方法及装置、电子设备及存储介质
US7774353B2 (en) Search templates
CN115543993A (zh) 数据处理方法、装置、电子设备及存储介质
CN116431726A (zh) 一种图数据处理方法、装置、设备及计算机存储介质
Zheng et al. INSPIRE: A framework for incremental spatial prefix query relaxation
CN116361287A (zh) 路径解析方法、装置以及系统
CN108595482B (zh) 一种数据索引方法及装置
JPH08235040A (ja) データファイル管理システム
KR20030030514A (ko) 시계열 데이터베이스에서 서브 시퀀스 매칭의 후처리최적화 방법
CN113779955B (zh) 一种差异脚本的生成方法、装置和存储介质
JP2003030040A (ja) オブジェクトデータベースシステムの複数ハッシュインデックスおよび非ユニークインデックス管理方式
CN115587100A (zh) 关系型数据库的管理方法及装置
CN116126620A (zh) 数据库日志处理方法、数据库变更查询方法及相关装置
CN117785889A (zh) 一种针对图数据库的索引管理方法及相关设备
CN117235203A (zh) 一种数据存储方法、装置、电子设备及存储介质
JPH04156624A (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