CN114579561A - 数据处理方法和装置、存储介质 - Google Patents
数据处理方法和装置、存储介质 Download PDFInfo
- Publication number
- CN114579561A CN114579561A CN202011394374.8A CN202011394374A CN114579561A CN 114579561 A CN114579561 A CN 114579561A CN 202011394374 A CN202011394374 A CN 202011394374A CN 114579561 A CN114579561 A CN 114579561A
- Authority
- CN
- China
- Prior art keywords
- index
- value
- tree
- field
- data 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.)
- Pending
Links
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/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/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
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
本公开实施例涉及数据处理方法和装置、存储介质。该方法包括:向数据表中***第一数据记录,数据表包括第一字段和第二字段;根据第一索引数据,在B树索引中为第一数据记录创建索引元素;第一索引值为第一数据记录的第一字段的值,第二索引值为第一数据记录的第二字段的值;根据B树***算法,按照第一索引值确定第一***位置;在第一***位置不存在索引元素的情况下,在第一***位置为第一数据记录创建索引元素;在第一***位置已存在索引元素的情况下,根据第二索引值和第一***位置处已有的索引元素的二级索引,按照B树***算法确定第二***位置,在第二***位置为第一数据记录创建索引元素。
Description
技术领域
本公开涉及计算机技术,更具体地,涉及数据处理方法和装置、存储介质。
背景技术
数据库中存储着海量的数据,为了提升查询能力,通常是将数据表中数据的某个字段作为关键字为该数据表建立索引。但是数据表中的有些字段比较特殊,存在大量重复数据,利用该字段建立的索引中存在大量的重复元素,更新索引时需要遍历查找,导致更新时间过长。
发明内容
本公开的一个目的是提供一种新的数据处理方法和装置、存储介质。
根据本公开的第一方面,提供了一种数据处理方法,包括:
向数据表中***第一数据记录,所述数据表包括第一字段和第二字段;
根据第一索引数据,在B树索引中为所述第一数据记录创建索引元素;其中,所述B树索引被预先配置成每个索引元素均包括与所述第一字段对应的一级索引和与所述第二字段对应的二级索引;所述第一索引数据包括第一索引值和第二索引值,所述第一索引值为所述第一数据记录的第一字段的值,所述第二索引值为所述第一数据记录的第二字段的值;
所述根据第一索引数据,在B树索引中为所述第一数据记录创建索引元素,包括:
根据所述第一索引值和所述B树索引中的索引元素的一级索引,按照B树***算法确定与所述第一索引值对应的第一***位置;
在第一***位置不存在索引元素的情况下,在第一***位置为所述第一数据记录创建索引元素;
在第一***位置已存在索引元素的情况下,根据所述第二索引值和所述第一***位置处已有的索引元素的二级索引,按照B树***算法确定与所述第二索引值对应的第二***位置,在所述第二***位置为所述第一数据记录创建索引元素。
可选地,所述第二字段为所述数据表的主键字段或者为所述数据表的ROWID字段。
可选地,所述方法还包括:
从所述数据表中删除所述第一数据记录;
在所述第一数据记录被删除后,从所述B树索引中删除所述第一数据记录对应的索引元素;
所述从所述B树索引中删除所述第一数据记录对应的索引元素,包括:
根据B树查找算法,在所述B树索引中查找出一级索引与所述第一索引值相同的索引元素作为候选索引元素;
根据B树查找算法,在候选索引元素中查找出二级索引与所述第二索引值相同的索引元素作为目标索引元素;
将所述目标索引元素从所述B树索引中删除。
可选地,所述方法还包括:
从所述数据表中删除所述第一数据记录;
在所述第一数据记录被删除后,从所述B树索引中删除所述第一数据记录对应的索引元素;
所述从所述B树索引中删除所述第一数据记录对应的索引元素,包括:
根据B树查找算法,在所述B树索引中查找出二级索引与所述第二索引值相同的索引元素作为目标索引元素;
将所述目标索引元素从所述B树索引中删除。
可选地,所述方法还包括:
接收客户端发送的查询请求,所述查询请求中包含第三索引值,所述第三索引值为查询对象的第一字段的值;
根据B树查找算法,在所述B树索引中查找出一级索引与所述第三索引值相同的索引元素作为目标索引元素;
根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
可选地,所述方法还包括:
接收客户端发送的查询请求,所述查询请求中包含第四索引值和第五索引值,所述第四索引值为查询对象的第一字段的值,所述第五索引值为查询对象的第二字段的值;
根据B树查找算法,在所述B树索引中查找出一级索引与所述第四索引值相同的索引元素作为候选索引元素;
根据B树查找算法,在所述候选索引元素中查找出二级索引与所述第五索引值相同的索引元素作为目标索引元素;
根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
可选地,所述方法还包括:
接收客户端发送的查询请求,所述查询请求中包含第六索引值,所述第六索引值为查询对象的第二字段的值;
根据B树查找算法,在所述B树索引中查找出二级索引与所述第六索引值相同的索引元素作为目标索引元素;
根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
根据本公开的第二方面,提供了一种数据处理装置,包括:
数据记录***模块,用于向数据表中***第一数据记录,所述数据表包括第一字段和第二字段;
索引元素创建模块,用于根据第一索引数据,在B树索引中为所述第一数据记录创建索引元素;其中,所述B树索引被预先配置成每个索引元素均包括与所述第一字段对应的一级索引和与所述第二字段对应的二级索引;所述第一索引数据包括第一索引值和第二索引值,所述第一索引值为所述第一数据记录的第一字段的值,所述第二索引值为所述第一数据记录的第二字段的值;
所述索引元素创建模块包括:
第一***位置确定子模块,用于根据所述第一索引值和所述B树索引中的索引元素的一级索引,按照B树***算法确定与所述第一索引值对应的第一***位置;
第一创建子模块,用于在第一***位置不存在索引元素的情况下,在第一***位置为所述第一数据记录创建索引元素;
第二***位置确定子模块,用于在第一***位置已存在索引元素的情况下,根据所述第二索引值和所述第一***位置处已有的索引元素的二级索引,按照B树***算法确定与所述第二索引值对应的第二***位置;
第二创建子模块,用于在第一***位置已存在索引元素的情况下,在所述第二***位置为所述第一数据记录创建索引元素。
根据本公开的第三方面,提供了一种数据处理装置,包括处理器和存储器;所述存储器中存储有计算机可执行命令,所述计算机可执行命令被所述处理器执行时,实现本公开第一方面描述的方法。
根据本公开的第四方面,提供了一种计算机可读存储介质,存储有计算机可执行命令,所述计算机可执行命令被处理器执行时,实现本公开第一方面描述的方法。
本公开实施例提供的数据处理方法和装置、存储介质,可以用一级索引和二级索引组合的方式为数据表建立B树索引,在一级索引存在重复情况时,可以进一步查找二级索引,从而降低查找次数,提升索引更新速度。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开的原理。
图1是可用于实现本公开实施例的数据库服务器的硬件配置示意图;
图2是本公开实施例的数据处理方法的流程图;
图3是使用数据表的第一字段构建B树索引的示意图;
图4是本公开实施例的B树索引示意图;
图5是本公开实施例的向B树索引中***索引元素的示意图;
图6是本公开实施例的向B树索引中***索引元素的示意图;
图7是本公开实施例的数据处理装置的示意图。
图8是本公开实施例的数据处理装置的示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1示出了可用于实现本公开的实施例的数据库***。客户端103可以访问数据库服务器101,向数据库发送操作指令,数据库服务器101根据操作指令对数据表进行相应的操作,例如增、查、改、删操作。
数据库服务器101的配置可以包括但不限于:处理器1011、存储器1012、接口装置1013、通信装置1014、输入装置1015、输出装置1016。处理器1011可以包括但不限于中央处理器CPU、微处理器MCU等。存储器1012可以包括但不限于ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1013可以包括但不限于USB接口、串行接口、并行接口等。通信装置1014例如能够进行有线通信或无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。输入装置1015包括但不限于键盘、鼠标等。输出装置1016包括但不限于显示屏等。该数据库服务器101的配置也可以仅包括上述装置中的部分装置。
应用于本说明书的实施例中,数据库服务器101的存储器1012用于存储指令,该指令用于控制处理器1011进行操作以支持实现根据本说明书任意实施例的方法。技术人员可以根据本说明书所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
本领域技术人员应当理解,尽管在图1中示出了数据库服务器101的多个装置,但是,本说明书实施例的数据库服务器101可以仅涉及其中的部分装置,例如,只涉及处理器1011、存储器1012和通信装置1014。
图1所示的硬件配置仅是解释性的,并且决不是为了要限制本公开、其应用或用途。
<方法实施例>
本实施例提供了一种数据处理方法。该方法可以例如由图1所示的数据库服务器101实施。
参见图2所示,该数据处理方法包括步骤S102-S104。
步骤S102、向数据表中***第一数据记录,数据表包括第一字段和第二字段。
步骤S104、根据第一索引数据,在B树索引中为第一数据记录创建索引元素。第一索引数据包括第一索引值和第二索引值,第一索引值为第一数据记录的第一字段的值,第二索引值为第一数据记录的第二字段的值。B树索引被预先配置成每个索引元素均包括与第一字段对应的一级索引和与第二字段对应的二级索引。
数据表中通常包括主键或者ROWID。在数据表中,主键对应于数据表中的一列或多列的组合,即主键字段可以是一个字段或者是多个字段的组合,主键用于唯一的标识数据表中的一行数据(也就是一条数据记录)。ROWID列是数据表的一个伪列,ROWID可以唯一标识一行数据(也就是一条数据记录),ROWID是在向数据库中***数据记录时自动生成的。数据表的主键字段或者ROWID字段的数据不会存在重复情况,其他字段有可能存在数据重复情况。
下面举出一个数据表的例子:
ROWID字段 | 字段F1 | 字段F2 | 字段F3 |
1 | 21 | 31 | 147 |
2 | 25 | 32 | 146 |
3 | 17 | 33 | 133 |
4 | 18 | 34 | 134 |
5 | 18 | 35 | 135 |
6 | 20 | 36 | 136 |
7 | 22 | 37 | 137 |
8 | 23 | 38 | 138 |
9 | 23 | 39 | 139 |
10 | 23 | 40 | 132 |
11 | 26 | 41 | 141 |
12 | 27 | 42 | 142 |
13 | 27 | 43 | 131 |
14 | 28 | 44 | 144 |
数据表1
在该数据表1中,包括4个字段,分别是ROWID字段、字段F1、字段F2、字段F3。可以看出,该数据表1的字段F1中,存在两个数据“18”,3个数据“23”,2个数据“27”。
在本公开实施例中,B树索引是为数据表创建的索引。B树是R.Bayer和E.mccreight提出的一种适用于查找的树,又称之为B﹣树。
如果仅使用字段F1的数据做为数据记录的索引,则根据数据表1创建出的B树索引如图3所示。数据表1中存在14条数据记录,B树索引对应包括14个索引元素,该B树索引中还应当包括指针(图3中没有示出)。可以看出,由于数据表1的字段F1中存在3个“23”,在B树索引中也存在3个索引元素为“23”,在这种情况下,如果将ROWID为“10”的数据记录从数据表1中删除,需要遍历3次才能够找到与该删除的数据记录所对应的索引元素,再将该索引元素从B树索引中删除。这一过程由于查询次数较多,导致B树索引的更新速度慢。
在本公开实施例中,数据记录的索引被设置成组合类型,包括一级索引和二级索引,数据记录的一级索引是该数据记录的第一字段的数据,数据记录的二级索引是该数据记录的第二字段的数据。也就是说,预先指定数据表的索引类型为组合类型,将B树索引配置成每个索引元素均包括与第一字段对应的一级索引和与第二字段对应的二级索引。
在本公开的一个例子中,第一字段可以是用户根据其需求设置的检索字段。第二字段可以是数据表的主键字段或者为数据表的ROWID字段,在这种情况下,数据表中的第二字段的数据不存在重复。
例如,对于该数据表1,第一字段是字段F1,第二字段是ROWID字段。根据数据表1中的数据记录,向预先配置好的空白的B树索引中***索引元素,就可以得到如图4所示的B树索引。数据表1中存在14条数据记录,B树索引对应包括14个索引元素,该B树索引中还应当包括指针(图4中没有示出)。
下面对在B树索引中为第一数据记录创建索引元素的过程,也就是对步骤S104,进行说明。步骤S104包括步骤S1042-S1048。
步骤S1042、根据第一索引值和B树索引中的索引元素的一级索引,按照B树***算法确定与第一索引值对应的第一***位置。
在该步骤中,根据B树***算法,按照第一索引值与B树索引中的索引元素的一级索引的比较关系,确定第一***位置。
步骤S1044、在第一***位置不存在索引元素的情况下,在第一***位置为第一数据记录创建索引元素。
步骤S1046、在第一***位置已存在索引元素的情况下,根据第二索引值和第一***位置处已有的索引元素的二级索引,按照B树***算法确定与第二索引值对应的第二***位置。
在该步骤中,根据B树***算法,按照第二索引值与第一***位置处已有的索引元素的二级索引的比较关系确定第二***位置。
步骤S1048、在第二***位置为第一数据记录创建索引元素。
下面以数据表1和图4所示的B树索引为基础,举出两个具体的例子:
<例子1>
以数据表1为例,第一字段是字段F1,第二字段是ROWID字段。假设向数据表1中***的第一数据记录如下所示,ROWID字段的数据为“15”,字段F1的数据为“30”,字段F2的数据为“35”,字段F3的值为“145”。则第一索引数据包括第一索引值“30”和第二索引值“15”。
ROWID字段 | 字段F1 | 字段F2 | 字段F3 |
15 | 30 | 35 | 145 |
参照图5所示,根据B树***算法,按照第一索引值“30”与B树索引中的索引元素的一级索引的比较关系,可以确定第一***位置为位置A。位置A不存在索引元素,则在位置A处为第一数据记录创建索引元素,该索引元素的一级索引为“30”,二级索引为“15”。
<例子2>
以数据表1为例,第一字段是字段F1,第二字段是ROWID字段。假设向数据表1中***的第一数据记录如下所示,ROWID字段的数据为“15”,字段F1的数据为“23”,字段F2的数据为“32”,字段F3的数据为“143”。则第一索引数据包括第一索引值“23”和第二索引值“15”。
ROWID字段 | 字段F1 | 字段F2 | 字段F3 |
15 | 23 | 32 | 143 |
参见图6所示,根据B树***算法,按照第一索引值“23”与B树索引中的索引元素的一级索引的比较关系,可以确定第一***位置为位置B。位置B已存在3个索引元素,根据B树***算法,按照第二索引值“15”与位置B已有的3个索引元素的二级索引的比较关系,可以确定第二***位置为位置C。在位置C处为第一数据记录创建索引元素,该索引元素的一级索引为“23”,二级索引为“15”。
当一条数据记录被从数据表中删除时,应当删除B树索引中与该被删除的数据记录对应的索引元素。
在本公开实施例,所述方法还可以包括步骤S202-S204。
步骤S202、从数据表中删除第一数据记录。
步骤S204、第一数据记录被删除后,从B树索引中删除第一数据记录对应的索引元素。
下面用2个例子对从B树索引中删除第一数据记录对应的索引元素的过程,也就是对步骤S204,进行说明。
<例子1>
从B树索引中删除第一数据记录对应的索引元素,包括步骤S2041-S2043。
步骤S2041、根据B树查找算法,在B树索引中查找出一级索引与第一索引值相同的索引元素作为候选索引元素。
步骤S2042、根据B树查找算法,在候选索引元素中查找出二级索引与第二索引值相同的索引元素作为目标索引元素;
步骤S2043、将目标索引元素从B树索引中删除。
以数据表1为例,第一字段是字段F1,第二字段是ROWID字段。假设向数据表1中***的第一数据记录如下所示,ROWID字段的数据为“15”,字段F1的数据为“23”,字段F2的数据为“32”,字段F3的数据为“143”。则第一索引数据包括第一索引值“23”和第二索引值“15”。
ROWID字段 | 字段F1 | 字段F2 | 字段F3 |
15 | 23 | 32 | 143 |
在从数据表1中删除该ROWID为“15”的数据记录后,根据B树查找算法可以查找出4个一级索引为“23”的候选索引元素。第一个候选索引元素的二级索引是“8”,第二个候选索引元素的一级索引是“9”,第三个候选索引元素的一级索引是“10”,第四个候选索引元素的一级索引是“15”。根据B树查找算法,在4个候选索引元素中利用B树特性做二分查找查找到二级索引为“15”的索引元素作为目标索引元素,然后删除目标索引元素。
<例子2>
如果第二字段是数据表的主键字段或者为数据表的ROWID字段,在这种情况下,数据表中的第二字段的数据不存在重复。则从B树索引中删除第一数据记录对应的索引元素,可以包括步骤S2045-S2046。
步骤S2045、根据B树查找算法,在B树索引中查找出二级索引与第二索引值相同的索引元素作为目标索引元素。
步骤S2046、将目标索引元素从B树索引中删除。
由于数据表中的第二字段的数据不存在重复,B树索引中的二级索引也不会存在重复,可以直接利用二级索引确定被删除的数据记录所对应的索引元素作为目标索引元素,然后删除目标索引元素。
以数据表1为例,第一字段是字段F1,第二字段是ROWID字段。假设向数据表1中***的第一数据记录如下所示,ROWID字段的数据为“15”,字段F1的数据为“23”,字段F2的数据为“32”,字段F3的数据为“143”。则第一索引数据包括第一索引值“23”和第二索引值“15”。
ROWID字段 | 字段F1 | 字段F2 | 字段F3 |
15 | 23 | 32 | 143 |
在从数据表1中删除该ROWID为“15”的数据记录后,根据B树查找算法,查找出二级索引为“15”的索引元素作为目标索引元素,然后删除目标索引元素。
下面用3个例子说明如何利用B树索引查找数据记录。
<例子1>
使用B树索引查找数据记录的过程可以包括步骤S302-S306。
步骤S302、接收客户端发送的查询请求,查询请求中包含第三索引值,第三索引值为查询对象的第一字段的值。
步骤S304、根据B树查找算法,在B树索引中查找出一级索引与第三索引值相同的索引元素作为目标索引元素。
步骤S306、根据目标索引元素对应的指针,获取目标索引元素对应的数据记录返回给客户端。
通过这种方式,可以查找到全部符合查询请求的数据记录。
以数据表1为例,第一字段是字段F1,第二字段是ROWID字段。查询对象的第一字段的值为“18”,即第三索引值为18,从B树索引中查找出的目标索引元素有2个,对应的数据记录有2条,具体为:
ROWID字段 | 字段F1 | 字段F2 | 字段F3 |
4 | 18 | 34 | 134 |
5 | 18 | 35 | 135 |
<例子2>
使用B树索引查找数据记录的过程可以包括步骤S402-S408。
步骤S402、接收客户端发送的查询请求,查询请求中包含第四索引值和第五索引值,第四索引值为查询对象的第一字段的值,第五索引值为查询对象的第二字段的值。
步骤S404、根据B树查找算法,在B树索引中查找出一级索引与第四索引值相同的索引元素作为候选索引元素。
步骤S406、根据B树查找算法,在候选索引元素中查找出二级索引与第五索引值相同的索引元素作为目标索引元素。
步骤S408、根据目标索引元素对应的指针,获取目标索引元素对应的数据记录返回给客户端。
通过这种方式,可以查找到唯一一条符合查询请求的数据记录。
以数据表1为例,第一字段是字段F1,第二字段是ROWID字段。查询对象的第一字段的值为“18”,查询对象的第二字段的值为“4”,即第四索引值为“18”,第五索引值为“4”,则从B树索引中查找出的候选索引元素有2个。在2个候选索引元素中利用B树特性做二分查找查找到二级索引与第五索引值相同的索引元素,最终确定的目标索引元素有1个,对应的数据记录有1条,具体为:
ROWID字段 | 字段F1 | 字段F2 | 字段F3 |
4 | 18 | 34 | 134 |
<例子3>
如果第二字段是数据表的主键字段或者为数据表的ROWID字段,在这种情况下,数据表中的第二字段的数据不存在重复。如果第二字段是数据表的主键字段或者为数据表的ROWID字段,在这种情况下,第二字段的数据不会存在重复。则使用B树索引查找数据记录的过程可以包括步骤S502-S506。
步骤S502、接收客户端发送的查询请求,查询请求中包含第六索引值,第六索引值为查询对象的第二字段的值。
步骤S504、根据B树查找算法,在B树索引中查找出二级索引与第六索引值相同的索引元素作为目标索引元素。
步骤S506、根据目标索引元素对应的指针,获取目标索引元素对应的数据记录返回给客户端。
以数据表1为例,第一字段是字段F1,第二字段是ROWID字段。查询对象的第二字段的值为“12”,即第六索引值为“12”,从B树索引中查找出的目标索引元素有1个,对应的数据记录有1条,具体为:
ROWID字段 | 字段F1 | 字段F2 | 字段F3 |
12 | 27 | 42 | 142 |
本公开实施例提供的数据处理方法,B树***算法和B树查找算法基于二分查找原理实现,在遇到第一字段有N个重复的数据时,对第二字段的查找次数可以从N次降低至log2N次。
本公开实施例提供的数据处理方法,可以用一级索引和二级索引组合的方式为数据表建立B树索引,在一级索引存在重复情况时,可以进一步查找二级索引,从而降低查找次数,提升索引更新速度。
本公开实施例提供的数据处理方法,优化了数据库B树索引的存储格式,提升了数据库数据更新的性能。
<装置实施例>
参见图7所示,本公开实施例提供了一种数据处理装置。该数据处理装置30包括以下模块:
数据记录***模块10,用于向数据表中***第一数据记录,所述数据表包括第一字段和第二字段。
索引元素创建模块20,用于根据第一索引数据,在B树索引中为所述第一数据记录创建索引元素。所述B树索引被预先配置成每个索引元素均包括与所述第一字段对应的一级索引和与所述第二字段对应的二级索引。所述第一索引数据包括第一索引值和第二索引值,所述第一索引值为所述第一数据记录的第一字段的值,所述第二索引值为所述第一数据记录的第二字段的值。
索引元素创建模块20包括:
第一***位置确定子模块21,用于根据所述第一索引值和所述B树索引中的索引元素的一级索引,按照B树***算法确定与所述第一索引值对应的第一***位置。
第一创建子模块22,用于在第一***位置不存在索引元素的情况下,在第一***位置为所述第一数据记录创建索引元素。
第二***位置确定子模块23,用于在第一***位置已存在索引元素的情况下,根据所述第二索引值和所述第一***位置处已有的索引元素的二级索引,按照B树***算法确定与所述第二索引值对应的第二***位置。
第二创建子模块24,用于在第一***位置已存在索引元素的情况下,在所述第二***位置为所述第一数据记录创建索引元素。
可选地,所述第二字段为所述数据表的主键字段或者为所述数据表的ROWID字段。
在一个例子中,该数据处理装置30还可以包括数据记录删除模块和索引元素删除模块。
所述数据记录删除模块,用于从所述数据表中删除所述第一数据记录。
所述索引元素删除模块,用于在所述第一数据记录被删除后,从所述B树索引中删除所述第一数据记录对应的索引元素。
在一个例子中,所述索引元素删除模块包括第一查找子模块、第二查找子模块以及第一删除子模块。
第一查找子模块,用于根据B树查找算法,在所述B树索引中查找出一级索引与所述第一索引值相同的索引元素作为候选索引元素;
第二查找子模块,用于根据B树查找算法,在候选索引元素中查找出二级索引与所述第二索引值相同的索引元素作为目标索引元素;
第一删除子模块,用于将所述目标索引元素从所述B树索引中删除。
在一个例子中,所述索引元素删除模块包括第三查找子模块和第二删除子模块。
第三查找子模块,用于根据B树查找算法,在所述B树索引中查找出二级索引与所述第二索引值相同的索引元素作为目标索引元素;
第二删除子模块,用于将所述目标索引元素从所述B树索引中删除。
在一个例子中,该数据处理装置30还可以包括第一数据查询模块。
第一数据查询模块,用于接收客户端发送的查询请求,所述查询请求中包含第三索引值,所述第三索引值为查询对象的第一字段的值;根据B树查找算法,在所述B树索引中查找出一级索引与所述第三索引值相同的索引元素作为目标索引元素;根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
在一个例子中,该数据处理装置30还可以包括第二数据查询模块。
第二数据查询模块,用于接收客户端发送的查询请求,所述查询请求中包含第四索引值和第五索引值,所述第四索引值为查询对象的第一字段的值,所述第五索引值为查询对象的第二字段的值;根据B树查找算法,在所述B树索引中查找出一级索引与所述第四索引值相同的索引元素作为候选索引元素;根据B树查找算法,在所述候选索引元素中查找出二级索引与所述第五索引值相同的索引元素作为目标索引元素;根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
在一个例子中,该数据处理装置30还可以包括第三数据查询模块。
第三数据查询模块,用于接收客户端发送的查询请求,所述查询请求中包含第六索引值,所述第六索引值为查询对象的第二字段的值;根据B树查找算法,在所述B树索引中查找出二级索引与所述第六索引值相同的索引元素作为目标索引元素;根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
参见图8所示,本公开实施例提供了一种数据处理装置。该数据处理装置50包括处理器51和存储器52。存储器52中存储有计算机可执行命令,所述计算机可执行命令被处理器51执行时,实现本公开方法实施例描述的数据处理方法。
<可读存储介质实施例>
本实施例提供一种计算机可读存储介质。该计算机可读存储介质存储有计算机可执行命令,所述计算机可执行命令被处理器执行时,实现本公开方法实施例描述的数据处理方法。
本公开可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
向数据表中***第一数据记录,所述数据表包括第一字段和第二字段;
根据第一索引数据,在B树索引中为所述第一数据记录创建索引元素;其中,所述B树索引被预先配置成每个索引元素均包括与所述第一字段对应的一级索引和与所述第二字段对应的二级索引;所述第一索引数据包括第一索引值和第二索引值,所述第一索引值为所述第一数据记录的第一字段的值,所述第二索引值为所述第一数据记录的第二字段的值;
所述根据第一索引数据,在B树索引中为所述第一数据记录创建索引元素,包括:
根据所述第一索引值和所述B树索引中的索引元素的一级索引,按照B树***算法确定与所述第一索引值对应的第一***位置;
在第一***位置不存在索引元素的情况下,在第一***位置为所述第一数据记录创建索引元素;
在第一***位置已存在索引元素的情况下,根据所述第二索引值和所述第一***位置处已有的索引元素的二级索引,按照B树***算法确定与所述第二索引值对应的第二***位置,在所述第二***位置为所述第一数据记录创建索引元素。
2.根据权利要求1所述的方法,其特征在于,所述第二字段为所述数据表的主键字段或者为所述数据表的ROWID字段。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述数据表中删除所述第一数据记录;
在所述第一数据记录被删除后,从所述B树索引中删除所述第一数据记录对应的索引元素;
所述从所述B树索引中删除所述第一数据记录对应的索引元素,包括:
根据B树查找算法,在所述B树索引中查找出一级索引与所述第一索引值相同的索引元素作为候选索引元素;
根据B树查找算法,在候选索引元素中查找出二级索引与所述第二索引值相同的索引元素作为目标索引元素;
将所述目标索引元素从所述B树索引中删除。
4.根据权利要求2所述的方法,其特征在于,还包括:
从所述数据表中删除所述第一数据记录;
在所述第一数据记录被删除后,从所述B树索引中删除所述第一数据记录对应的索引元素;
所述从所述B树索引中删除所述第一数据记录对应的索引元素,包括:
根据B树查找算法,在所述B树索引中查找出二级索引与所述第二索引值相同的索引元素作为目标索引元素;
将所述目标索引元素从所述B树索引中删除。
5.根据权利要求1所述的方法,其特征在于,还包括:
接收客户端发送的查询请求,所述查询请求中包含第三索引值,所述第三索引值为查询对象的第一字段的值;
根据B树查找算法,在所述B树索引中查找出一级索引与所述第三索引值相同的索引元素作为目标索引元素;
根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
6.根据权利要求1所述的方法,其特征在于,还包括:
接收客户端发送的查询请求,所述查询请求中包含第四索引值和第五索引值,所述第四索引值为查询对象的第一字段的值,所述第五索引值为查询对象的第二字段的值;
根据B树查找算法,在所述B树索引中查找出一级索引与所述第四索引值相同的索引元素作为候选索引元素;
根据B树查找算法,在所述候选索引元素中查找出二级索引与所述第五索引值相同的索引元素作为目标索引元素;
根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
7.根据权利要求2所述的方法,其特征在于,还包括:
接收客户端发送的查询请求,所述查询请求中包含第六索引值,所述第六索引值为查询对象的第二字段的值;
根据B树查找算法,在所述B树索引中查找出二级索引与所述第六索引值相同的索引元素作为目标索引元素;
根据所述目标索引元素对应的指针,获取所述目标索引元素对应的数据记录返回给客户端。
8.一种数据处理装置,其特征在于,包括:
数据记录***模块,用于向数据表中***第一数据记录,所述数据表包括第一字段和第二字段;
索引元素创建模块,用于根据第一索引数据,在B树索引中为所述第一数据记录创建索引元素;其中,所述B树索引被预先配置成每个索引元素均包括与所述第一字段对应的一级索引和与所述第二字段对应的二级索引;所述第一索引数据包括第一索引值和第二索引值,所述第一索引值为所述第一数据记录的第一字段的值,所述第二索引值为所述第一数据记录的第二字段的值;
所述索引元素创建模块包括:
第一***位置确定子模块,用于根据所述第一索引值和所述B树索引中的索引元素的一级索引,按照B树***算法确定与所述第一索引值对应的第一***位置;
第一创建子模块,用于在第一***位置不存在索引元素的情况下,在第一***位置为所述第一数据记录创建索引元素;
第二***位置确定子模块,用于在第一***位置已存在索引元素的情况下,根据所述第二索引值和所述第一***位置处已有的索引元素的二级索引,按照B树***算法确定与所述第二索引值对应的第二***位置;
第二创建子模块,用于在第一***位置已存在索引元素的情况下,在所述第二***位置为所述第一数据记录创建索引元素。
9.一种数据处理装置,其特征在于,包括处理器和存储器;所述存储器中存储有计算机可执行命令,所述计算机可执行命令被所述处理器执行时,实现权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,存储有计算机可执行命令,所述计算机可执行命令被处理器执行时,实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011394374.8A CN114579561A (zh) | 2020-12-02 | 2020-12-02 | 数据处理方法和装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011394374.8A CN114579561A (zh) | 2020-12-02 | 2020-12-02 | 数据处理方法和装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579561A true CN114579561A (zh) | 2022-06-03 |
Family
ID=81768699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011394374.8A Pending CN114579561A (zh) | 2020-12-02 | 2020-12-02 | 数据处理方法和装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579561A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115994145A (zh) * | 2023-02-09 | 2023-04-21 | 中国证券登记结算有限责任公司 | 一种处理数据的方法和装置 |
WO2024016594A1 (zh) * | 2022-07-19 | 2024-01-25 | 天翼云科技有限公司 | 一种伪列实现方法、装置、电子设备及存储介质 |
WO2024027464A1 (zh) * | 2022-08-05 | 2024-02-08 | 华为技术有限公司 | 一种处理全局二级索引的方法及装置 |
-
2020
- 2020-12-02 CN CN202011394374.8A patent/CN114579561A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024016594A1 (zh) * | 2022-07-19 | 2024-01-25 | 天翼云科技有限公司 | 一种伪列实现方法、装置、电子设备及存储介质 |
WO2024027464A1 (zh) * | 2022-08-05 | 2024-02-08 | 华为技术有限公司 | 一种处理全局二级索引的方法及装置 |
CN115994145A (zh) * | 2023-02-09 | 2023-04-21 | 中国证券登记结算有限责任公司 | 一种处理数据的方法和装置 |
CN115994145B (zh) * | 2023-02-09 | 2023-08-22 | 中国证券登记结算有限责任公司 | 一种处理数据的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11194779B2 (en) | Generating an index for a table in a database background | |
CN107526777B (zh) | 一种基于版本号对文件进行处理的方法及设备 | |
CN111247518B (zh) | 用于数据库分片的方法和*** | |
CN114579561A (zh) | 数据处理方法和装置、存储介质 | |
US10698912B2 (en) | Method for processing a database query | |
CN108228646B (zh) | 用于访问数据的方法和电子设备 | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
CN113760971B (zh) | 用于检索图数据库的数据的方法、计算设备和存储介质 | |
CN103810212A (zh) | 一种数据库索引的自动创建方法及*** | |
CN111858577B (zh) | 存储管理的方法、设备和计算机程序产品 | |
US10984050B2 (en) | Method, apparatus, and computer program product for managing storage system | |
US20180181581A1 (en) | Systems and methods for implementing object storage and fast metadata search using extended attributes | |
KR20200094074A (ko) | 인덱스 관리 방법, 장치, 기기 및 저장 매체 | |
CN111190899B (zh) | 一种埋点数据处理方法、装置、服务器及存储介质 | |
CN112905587A (zh) | 数据库的数据管理方法、装置及电子设备 | |
CN111488341B (zh) | 数据库索引的管理方法、装置及电子设备 | |
CN113553458A (zh) | 图数据库中的数据导出方法及装置 | |
CN113742332A (zh) | 数据存储方法、装置、设备及存储介质 | |
CN108255486B (zh) | 用于表单设计的视图转换方法、装置和电子设备 | |
CN113590543A (zh) | 信息处理的方法、设备和计算机程序产品 | |
CN111666278A (zh) | 数据存储、检索方法、电子设备及存储介质 | |
CN111858158B (zh) | 数据处理方法、装置及电子设备 | |
CN114493799A (zh) | 一种分库分表管理专车订单数据的方法及*** | |
CN113312331A (zh) | 数据迁移方法、装置、***、电子设备及计算机可读介质 | |
CN110750268A (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 |