CN111538724B - 管理索引的方法 - Google Patents
管理索引的方法 Download PDFInfo
- Publication number
- CN111538724B CN111538724B CN201910322165.3A CN201910322165A CN111538724B CN 111538724 B CN111538724 B CN 111538724B CN 201910322165 A CN201910322165 A CN 201910322165A CN 111538724 B CN111538724 B CN 111538724B
- Authority
- CN
- China
- Prior art keywords
- search
- index
- node
- timestamp
- time stamp
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 53
- 230000002708 enhancing effect Effects 0.000 claims abstract description 19
- 238000004590 computer program Methods 0.000 claims abstract description 10
- 230000008859 change Effects 0.000 claims description 123
- 230000015654 memory Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 17
- 230000004048 modification Effects 0.000 description 15
- 238000012986 modification Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 230000003287 optical effect Effects 0.000 description 11
- 230000002085 persistent effect Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000002829 reductive effect Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000002245 particle Substances 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000013523 data management Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
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/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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- 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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90348—Query processing by searching ordered data, e.g. alpha-numerically ordered data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (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
公开根据本公开的示例实施例的存储在计算机可读存储介质中的计算机程序。当计算机程序由一个或多个处理器执行时,计算机程序执行用于增强数据的搜索性能的操作,且操作可以包括:设置用于搜索目标索引键的索引搜索的遍历时间戳;沿从索引树的根节点连接至叶节点的链路搜索索引树;将在索引搜索中穿过的根节点和叶节点的至少一个索引时间戳写入时间戳表中;确定索引搜索的路径是否需要改变;以及至少部分地基于时间戳表确定重搜索的开始节点。
Description
相关申请的交叉引用
本申请要求于2019年2月07日在韩国知识产权局提交的韩国专利申请号10-2019-0014308的优先权和权益,通过参考在此引用其全部内容。
技术领域
本公开涉及数据库管理方法,且更特别地涉及用于搜索数据库的索引的方法。
背景技术
随着爆炸式的数据增长和各种环境及平台的出现,企业的业务正在迅速地扩张。随着新的业务环境出现,需要更加高效且灵活的数据服务和信息处理以及数据管理功能。响应于这些变化,继续研究数据库,以解决高性能、高可用性和可扩展性的问题,其是公司业务实施的基础。
在数据库管理系统(DBMS)中,数据可以存储在数据存储中。在关系型数据库管理系统(RDBMS)中,数据存储可以被称为表。表可以包括一个或多个行且一个或多个行中的每个可以包括一个或多个列。
当数据库包括大量数据时,其可能花费相当长时间来执行查询以检索用户请求的数据。当数据库花费长时间来响应查询时,其可能不利地影响数据库的性能。相应地,在技术领域中,为减小响应查询的处理所需的时间,即为增强数据库管理系统的性能,研究各种技术。
为增强从数据库的数据检索速度,可以利用索引技术。索引可以指的是数据库字段中增加表的操作速度的数据结构。当使用索引时,不仅可以减小数据检索所需的时间,还可以减小数据检索所消耗的资源的量。
通常,索引结构由树结构构成。作为一种图形的树结构由节点和指示节点的指针构成。当需要搜索大量的存储的数据时,逐一比较数据的方案是低效的。当通过使用树结构的索引以排列状态存储数据时,可以有效地检索数据。遍历意味着一系列搜索索引的过程。由通过从根节点开始比较搜索目标的值和分割值来寻找下一节点的过程执行遍历。当通过遍历发现与搜索目标的值对应的索引时,遍历结束。
在索引结构中,B-树索引结构具有对于每个节点访问下级的键。进一步地,在相关技术中,当多个线程同时修改或引用B树索引时,使用通过锁定保持索引的一致性的方案。然而,这样的方案具有当检测索引结构的变化时需要执行从最高根节点的重搜索,从而减小操作的并行性并降低系统的性能的问题。
(专利文件0001)(1)美国专利登记号US5903888
(专利文件0002)(2)美国专利登记号US6278992
(专利文件0003)(3)日本专利未审查公开号JP2004326404
发明内容
本公开已经致力于提供数据库中的有效索引搜索方法。
本公开的示例实施例提供存储在计算机可读存储介质中的计算机程序。当由一个或多个处理器执行计算机程序时,计算机程序执行用于增强数据的搜索性能的以下操作,且操作可以包括:设置用于搜索目标索引键的索引搜索的遍历时间戳;沿从索引树的根节点连接至叶节点的链路搜索索引树;将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中;以及基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径。
可替代地,可以为索引树中包括的每个节点分配索引时间戳,并基于关于每个节点被修改的时间的信息生成索引时间戳。
可替代地,将索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中可以包括将在根节点、枝节点和叶节点中的至少一个中读取的索引时间戳与每个节点标识进行匹配,并将匹配的索引时间戳和节点标识写入时间戳表中。
可替代地,将索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中可以包括将从当前搜索节点直到在索引搜索中读取的搜索节点中的预设数量的先前搜索节点的索引时间戳写入时间戳表中。
可替代地,将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中可以进一步包括基于预设准则,删除写入时间戳表中的一个或多个索引时间戳。
可替代地,基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径可以包括当遍历时间戳等于或大于搜索节点的索引时间戳时,确定保持目标索引键的搜索路径,以及当遍历时间戳小于搜索节点的索引时间戳时,确定改变目标索引键的搜索路径。
可替代地,基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径可以包括当遍历时间戳小于搜索节点的索引时间戳时,基于搜索节点的内容确定是否改变目标索引键的搜索路径。
可替代地,当遍历时间戳小于搜索节点的索引时间戳时,基于搜索节点的内容确定是否改变目标索引键的搜索路径可以包括基于包括能够包括在搜索节点中的索引键的最小值和最大值的至少一个信息的搜索节点的界限信息和目标索引键确定目标索引键的搜索路径是否需要改变。
可替代地,基于包括能够包括在搜索节点中的索引键的最小值和最大值的至少一个信息的搜索节点的界限信息和目标索引键确定目标索引键的搜索路径是否需要改变可以包括当目标索引键的值落入界限信息中时,确定保持目标索引键的搜索路径,以及当目标索引键的值不落入界限信息中时,确定改变目标索引键的搜索路径。
可替代地,当遍历时间戳小于搜索节点的索引时间戳时,基于搜索节点的内容确定是否改变目标索引键的搜索路径可以进一步包括当确定保持目标索引键的搜索路径时,基于当前搜索节点的索引时间戳更新遍历时间戳。
可替代地,操作可以进一步包括当确定改变目标索引键的搜索路径时,更新遍历时间戳。
可替代地,更新遍历时间戳可以包括基于当比较遍历时间戳和搜索节点的索引时间戳时的时间信息更新遍历时间戳,或者基于当索引搜索线程开始读取重搜索的开始节点时的时间信息更新遍历时间戳。
可替代地,操作可以进一步包括至少部分地基于时间戳表确定重搜索的开始节点。
可替代地,至少部分地基于时间戳表确定重搜索的开始节点可以包括确定写入时间戳表中的每个先前搜索节点在搜索后是否改变,以及将先前节点中在搜索后不改变的先前搜索节点中的一个确定为重搜索的开始节点。
可替代地,确定写入时间戳表的每个先前搜索节点在搜索后是否改变可以包括通过比较写入时间戳表中的先前搜索节点的每个索引时间戳和重搜索的时间处读取的每个先前搜索节点的索引时间戳来确定先前搜索节点在搜索后是否改变。
可替代地,将先前搜索节点中在搜索后不改变的先前搜索节点中的一个确定为重搜索的开始节点可以包括将搜索后不改变的先前搜索节点中的当前搜索节点的最近节点确定为重搜索的开始节点。
本公开的另一示例实施例提供由计算机设备的一个或多个处理器执行的用于增强数据的搜索性能的方法。方法可以包括:设置用于搜索目标索引键的索引搜索的遍历时间戳;沿从索引树的根节点连接至叶节点的链路搜索索引树;将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中;以及基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径。
本公开的又一示例实施例提供用于增强数据的搜索性能的计算设备。计算设备可以包括:包括一个或多个核心的处理器;以及存储器,其中处理器可以设置用于搜索目标索引键的索引搜索的遍历时间戳;沿从索引树的根节点连接至叶节点的链路搜索索引树;将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中;以及基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径。
根据本公开的示例实施例,可以提供数据库中的有效索引搜索方法。
可以在本公开中获得的效果不限于前述效果,且其他未提及效果将从下面的描述中由本领域技术人员清楚地理解。
附图说明
现在参考附图描述各个方面,且相同的附图标记一般用于指定相同的元件。在下面的示例实施例中,为描述的目的,呈现多个特定具体的方式以提供一个或多个方面的一般理解。然而,将意识到,可以不以特定具体的方式执行方面。在其他示例中,以框图的形式示出已知结构和装置以有助于一个或多个方面的描述。
图1是根据本公开的示例实施例的数据库系统的示意图。
图2是根据本公开的示例实施例的数据库服务器的框图。
图3是根据本公开的示例实施例的其中处理器通过索引树和时间戳执行索引搜索的示例图。
图4是根据本公开的示例实施例的索引树的结构改变的示例图。
图5是根据本公开的示例实施例的取决于索引树的结构的改变的重搜索的示例图。
图6是根据本公开的示例实施例的遍历时间戳的更新的示例图。
图7是根据本公开的示例实施例的用于搜索索引的方法的流程图。
图8是示出根据本公开的示例实施例的数据库系统中用于搜索索引的构件的框图。
图9是示出根据本公开的示例实施例的数据库系统中用于搜索索引的模块的框图。
图10是示出根据本公开的示例实施例的数据库系统中用于搜索索引的逻辑的框图。
图11是示出根据本公开的示例实施例的数据库系统中用于搜索索引的电路的框图。
图12是根据本公开的示例实施例的计算设备的框图。
具体实施方式
现在将参考附图描述各种示例实施例,且在附图中,相同的附图标记用于指相同的元件。在本说明书中,呈现各种描述以提供本公开的理解。然而,明显的是,可以在没有具体描述的情况下执行示例实施例。在其他示例中,以框图的形式呈现已知的结构和装置以便于示例实施例的描述。
说明书中使用的术语“组件”、“模块”、“系统”等指的是计算机相关的实体、硬件、固件、软件、和软件与硬件的组合、或软件的执行。例如,组件可以是在处理器上执行的处理过程、处理器、对象、执行线程、程序和/或计算机,但不限于此。例如,在计算设备中执行的应用程序和计算设备都可以是组件。一个或多个组件可以驻留在处理器和/或执行线程上,且一个组件可以位于一个计算机上或分布在两个或多个计算机上。此外,组件可以由具有各种数据结构的各种计算机可读介质执行,组件存储在其中。例如,组件可以根据具有一个或多个数据包的信号(例如,来自与其他组件交互的一个组件的数据和/或通过本地系统和分布式系统中的信号利用如互联网的网络来自其他系统的数据)通过本地和/或远程处理与另一个系统进行通信。
提供呈现的示例实施例的描述以便本公开所属领域的技术人员使用或实施本公开。示例实施例的各种修改对本领域的技术人员将是明显的,且在此限定的通用原理可以在不脱离本公开的范围的情况下应用至其他示例实施例。因此,本公开不限于在此呈现的示例实施例,而应该在与在此呈现的原理和新特征一致的最宽范围内分析。
在美国专利号US9626398(2017年4月4日)和US2007-0174309(2007年7月26日)中具体地讨论了根据本公开的示例实施例的索引技术的基本概念,通过参考在此引入其全部内容。本申请要求于2018年7月27日向韩国知识产权局递交的韩国专利申请号10-2018-0073852(用于管理索引的方法)的优先权和权益,其与用于管理数据库的索引树的方案相关联,通过参考在此引入其全部内容。
图1是根据本公开的示例实施例的数据库系统10的示意图。
如图1所示,根据本公开的数据库系统10可以包括客户端200和数据库服务器100。本说明书中的数据库服务器100可以与数据库互换使用。
如图1所示,客户端200可以意味着具有用于通过网络通信的机制的数据库系统10中的(一个或多个)节点。例如,客户端200可以包括具有与个人电脑(PC)、笔记本电脑、工作站、终端和/或网络的连通性的预定电子设备。进一步地,客户端200可以包括由代理、应用程序编程接口(API)和插件中的至少一个实施的预定服务器。例如,图1中的客户端200可以与使用数据库服务器100的用户(例如数据库管理(DBA))相关联。在这样的示例中,客户端200可以向数据库服务器100发布包括DML和数据定义语言(DDL)的各种类型的查询。
例如,数据库服务器100可以包括预定类型的计算机系统或计算设备,例如微处理器、大型计算机、数字信号处理器、便携式设备和设备控制器。数据库服务器100的每个可以包括数据库管理系统(DBMS)110和永久存储130。
在图1中,仅示出一个数据库服务器100,但对于本领域技术人员明显的是,与之不同的数据库服务器也可以包括在本公开的范围内,且数据库服务器100可以包括附加组件。即,数据库服务器100可以由多个计算设备构成。多个节点的集合可以构成数据库服务器100。例如,尽管未示于图1中,数据库服务器100可以包括具有缓冲区高速缓存的一个或多个存储器。进一步地,尽管未示于图1中,数据库服务器100可以包括一个或多个处理器120。因此,DBMS 110可以在存储器上由处理器120操作。
由处理器直接访问的作为主存储设备的本说明书中的存储器,例如包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等的随机存取存储器(RAM),可以意味着其中当关闭电源时立刻擦除存储的信息的易失性存储设备,但不限于此。存储器可以由处理器120的控制来操作。存储器可以临时存储包括数据值的数据表。数据表可以包括数据值,且在本公开的示例实施例中,数据表的数据值可以从存储器被写入永久存储130中。在附加方面,存储器可以包括缓冲区高速缓存且数据可以被存储在缓冲区高速缓存的数据块中。存储在缓冲区高速缓存中的数据可以由后台处理写入永久存储130中。
永久存储130可以意味着可以始终存储预定数据的非易失性存储介质,例如磁盘、光盘、磁光存储设备和基于闪存和/或电池备份存储器的存储设备。永久存储130可以通过各种通信构件与处理器120和数据库服务器100的存储器通信。在附加的示例实施例中,永久存储130位于数据库服务器100的外部以与数据库服务器100通信。根据本公开的示例实施例,永久存储130和存储器可以被合并称为存储单元140。
作为用于许可数据库服务器100执行包括查询的解析、检索、插入、修改、删除、索引生成和/或要求的数据的索引访问的操作的程序的DBMS 110可以由处理器120在如上描述的数据库服务器100的存储器中实施。
客户端200和数据库服务器100或多个数据库服务器还可以通过网络(未示出)彼此通信。根据本公开的示例实施例的网络可以使用各种有线通信系统,例如公共交换电话网(PSTN),x数字用户线(xDSL),速率自适应DSL(RADSL),多速率DSL(MDSL),超高速DSL(VDSL),通用非对称DSL(UADSL),高比特率DSL(HDSL)和局域网(LAN)。
本说明书中呈现的网络可以使用各种无线通信系统,例如码分多址(CDMA),时分多址(TDMA),频分多址(FDMA),正交频分多址(OFDMA),单载波-FDMA(SC-FDMA)和其他系统。例如,网络可以包括数据库链路(dblink),且因此多个数据库服务器通过数据库链路彼此通信以从另一数据库服务器100取得数据。在本说明书中描述的技术可以用于除上述网络的其他网络中。
图2是根据本公开的示例实施例的数据库服务器的框图。
如图2所示,数据库服务器100可以包括处理器120和存储单元140。在此,存储单元140可以是被合并称为存储器和永久存储130的概念,如上参考图1所描述的。此外,DBMS110可以由处理器120执行,并被存储在存储器和/或永久存储130中。在此情况中,存储单元140与处理器120通信以控制数据存储/管理。
处理器120在存储器上执行DBMS 110以执行待被如下描述的各种操作。此外,处理器120包括一个或多个线程,以对每个线程执行预定操作。例如,处理器120可以执行数据库索引树300的生成操作。作为另一示例,处理器120可以执行对目标索引键值的遍历,即通过生成的数据库索引树300在索引树300中搜索目标索引键值。处理器120的操作的公开仅是示例,且本公开不限于此。
在下文中,索引键值可以意味着以逻辑顺序分配至存储单元140中存储的数据的值。相应地,每个节点中包括的数据的索引键值可以位于数据库索引树300的每个节点中(例如,根节点310、枝节点330和叶节点350)。进一步地,在索引树300中,可以以顺序排序状态存储全部索引键值。此外,在每个节点中,可以以顺序排序状态存储索引键值。
目标索引键值可以意味着与待在索引树300中搜索的数据对应的索引键值。此外,可以基于从客户端200发布的查询确定目标索引键值。进一步地,由于待被每个线程访问的数据不同,分配给每个线程的目标索引键值可能不同。
根据本公开的示例实施例的处理器120可以发起索引搜索以从索引树300的根节点310开始检索目标索引键。更特别地,处理器120可以基于从客户端200发布的查询确定待被搜索的目标索引键值。进一步地,处理器120可以将目标索引键值分配给执行索引搜索的索引搜索线程。此外,索引搜索线程可以执行搜索直到从索引树300的最顶级节点的根节点310经由枝节点330达到最底级的叶节点350。
在此,与根节点310和枝节点330相似,包括其下级的另一节点的每个节点可以包括连接至下级的节点的一个或多个下链路。在此,下链路可以意味着用于执行从根节点310至枝节点330或从枝节点330至叶节点350的搜索的地址值。即,下链路可以包括位于父节点处的子节点的地址值,以执行从父节点至子节点的搜索。进一步地,每个下链路可以根据下级的节点中包括的索引键被分类为下方向下链路、中间方向下链路和上方向下链路中的一个。更特别地,下方向下链路可以是连接至枝节点中包括具有小于当前搜索的节点中包括的具有最小值的键的值的键的子节点的链路。进一步地,上方向下链路可以是连接至枝节点中包括具有大于当前搜索的节点中包括的具有最大值的键的值的键的子节点的链路。进一步地,中间方向下链路可以是连接至枝节点330中包括位于当前搜索的节点中包括的键的最大值和最小值之间的键的子节点的链路。此外,根据示例实施例,当节点中包括的索引键的数量为两个或更多个时,对应节点可以包括连接至与形成每个索引键的部分对应的叶节点的中间方向下链路。即,中间方向下链路可以是连接至叶节点350中包括大于当前搜索的节点中包括的具有最小值的键且小于当前搜索的节点中包括的具有最大值的键的值的键的叶节点的链路,该叶节点的键不被包括在当前搜索的节点中。
处理器120可以根据连接至子节点的链路,从父节点至子节点搜索索引树。处理器120比较每个索引节点中包括的索引键值和目标索引键值以确定执行搜索的链路。此外,处理器120可以沿连接至确定的叶节点350的下链路执行索引搜索。
更特别地,在B树索引结构中,可以以顺序排序状态存储全部索引键。在每个节点中,可以以顺序排序状态存储全部索引键。例如,索引树的每个节点可以是一个或多个数据块。相应地,处理器120访问最顶级的根节点310以比较根节点310中包括的索引键值和待被搜索的目标索引键值。此外,当目标索引键是小于根节点310中的键中具有最小值的键的值时,处理器120可以对连接至下方向下链路的下方向枝节点330执行索引搜索。进一步地,当目标索引键具有大于根节点310中的键中具有最大值的键的值时,处理器120可以对连接至上方向下链路的上方向枝节点执行索引搜索。进一步地,根据示例实施例,当目标索引键具有大于根节点310中的键中具有最小值的键并小于具有最大值的键的值且是不被包括在根节点310中的值时,处理器120可以对连接至中间方向下链路的中间方向枝节点执行索引搜索。此外,处理器120可以通过访问枝节点330来执行相同操作,以确定待被搜索的叶节点350。
例如,如图3所示,处理器120可以基于从客户端200接收的查询,确定目标索引键值“31”。然后,处理器120可以确定索引搜索线程,以在索引树300中搜索具有索引键值“31”的数据。相应地,索引搜索线程可以通过访问包括下方向下链路和上方向下链路的路由节点N1来读取索引键值“99”并读取目标索引键值“31”。此外,索引搜索线程比较对应于目标索引键值的“31”和对应于为根节点310的节点N1的索引键值“99”,以确定对子节点中下方向上的节点N2执行索引搜索。进一步地,索引搜索线程可以沿下方向下链路访问包括“75”作为索引键值的节点N2。此外,索引搜索线程比较目标索引键值“31”与节点N2的索引键值“75”以确定对子节点中下方向上的节点N3执行索引搜索。此外,索引搜索线程可以沿下方向下链路访问包括“50”作为索引键值的节点N3。进一步地,索引搜索线程比较目标索引键值“31”和N3的索引键值“50”以确定对子节点中下方向上的节点N4执行索引搜索。此外,索引搜索线程可以沿下方向下链路访问包括“21”作为索引键值的节点N4。进一步地,索引搜索线程比较目标索引键值“31”与节点N4的索引键值“21”以确定对子节点中上方向上的节点N6执行索引搜索。此外,索引搜索线程可以沿上方向下链路访问包括“26”作为索引键值的节点N6。进一步地,索引搜索线程比较目标索引键值“31”和节点N6的索引键值“26”以确定对子节点中上方向上的节点N10执行索引搜索。在此描述的节点N2、N3、N4和N6可以通过链路彼此连接,并相似地属于枝节点330,但仅具有父子关系。相应地,索引搜索线程可以通过访问索引树300的结构中最底端的节点N10来获得与目标索引键值“31”对应的数据地址值。前述索引搜索线程的具体操作和数字限制仅是示例且本公开不限于此。
处理器120可以设置索引搜索的遍历时间戳。处理器120可以设置遍历时间戳以保持索引搜索的一致性并便于目标索引的搜索。更特别地,当处理器120接收从客户端200发布的查询以检索目标索引键值时,处理器120可以将目标索引键值分配给执行索引搜索的索引搜索线程。然后,处理器120可以基于索引搜索线程分配目标索引键值的搜索的时间生成遍历时间戳。此外,索引搜索线程可以基于遍历时间戳执行目标索引键的索引搜索直到从索引树300的最顶级的根节点310经由枝节点330到达最底级的叶节点350。
处理器120可以基于索引树300中包括的每个节点的修改的时间信息设置索引时间戳。更特别地,处理器120可以修改索引树300中包括的每个节点。在此,节点的修改可以包括在节点中包括的索引值的修改(例如,增加、删除或改变索引键值)或索引树300的结构改变。索引树300的结构改变可以包括索引的改变,其中可以改变索引搜索的路径。例如,索引树300的结构改变可以包括删除节点、拆分节点和改变节点连接链路中的至少一个。索引树300的结构改变的描述仅是示例,且本公开不限于此。然后,处理器120可以基于每个节点被修改的时间,生成每个节点的索引时间戳。然后,索引搜索线程可以基于遍历时间戳和搜索节点的索引时间戳执行索引搜索。
然后,处理器120可以基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径。更特别地,当索引搜索线程中记录的遍历时间戳等于或大于搜索节点的索引时间戳时,处理器120可以确定保持目标索引键的搜索路径。进一步地,当遍历时间戳小于搜索节点的索引时间戳时,处理器120可以确定改变目标索引键的搜索路径。
根据示例实施例,当确定发生索引树300的结构改变时,处理器120可以确定索引搜索路径是否需要改变。更特别地,当确定发生索引树300的结构改变时,处理器120可以允许索引搜索线程重尝试索引搜索。进一步地,当确定未发生索引树300的结构改变时,处理器120可以允许索引搜索线程继续执行索引搜索。
此外,根据示例实施例,处理器120比较遍历时间戳和搜索节点的索引时间戳以确定是否发生索引树300的结构改变。进一步地,当确定发生索引树300的结构改变时,处理器120可以确定索引搜索路径是否需要改变。
根据本公开的示例实施例的存储单元140可以存储与由数据库服务器100的任务执行相关而存储的预设数据。存储单元140可以包括DBMS 110和/或永久存储130。附加地,存储单元140可以在数据库服务器100上生成表(例如,索引表)等。例如,表的生成可以由如控制模块(未示出)的独立组件执行。进一步地,存储单元140可以处理并管理与数据的存储(包括更新)相关的请求。存储单元140可以决定存储数据和索引表。进一步地,存储单元140可以决定数据和/或索引表的存储位置。例如,存储单元140可以决定数据在数据表上的存储位置。作为另一示例,存储单元140可以决定数据在永久存储130上的存储位置。存储单元140可以存储生成的数据库索引树300。
根据本公开的示例实施例的存储单元140可以存储如图2所示的数据库索引树300。在此,数据库索引树300可以是分级地具有多个子索引结构的形式。示于图2的存储单元140中存储的数据库索引树300仅包括一个根节点310、一个枝节点330和两个叶节点350,但这仅是为了方便描述的示例,且在不脱离本公开的精神的情况下,预定数量和预定类型的节点可以形成数据库索引树300。
例如,数据库索引结构可以包括最顶级的根节点和最底级的叶节点、以及根节点和叶节点之间的级的枝节点。在本公开中,关于父节点和子节点,在多个节点中,上级的节点可以是父节点,且下级的节点可以是子节点。父节点可以包括包含子节点的地址的链路。根节点可以是其中不存在父节点的节点,且叶节点可以使其中不存在子节点的节点。
根据本公开的示例实施例,多个子索引结构的一个或多个父节点(例如,根节点310和/或枝节点330)可以包括其下级的子索引结构的开始ROWID值和用于访问下级的子索引结构的地址值。因此,父节点可以指向(一个或多个)子节点,以便可以在索引树结构中进行从上级至下级的索引搜索。处理器120可以在执行索引搜索时验证每个节点的条件,并基于条件执行计算。条件可以表示搜索目标的目标索引键值是否被包括在节点中包括的索引键值的范围中。
更特别地,当处理器120执行从根节点的索引搜索时,处理器310可以使用根节点310中包括的索引键作为枝节点330的枝值(即,用于确定需要对哪个枝节点330执行搜索的值),并基于枝节点330的地址(数据块地址(DBA))确定执行搜索的枝节点330。此外,处理器120可以甚至在枝节点330中以相同的方案确定叶节点350中待被搜索的叶节点350。
根据本公开的示例实施例,搜索节点可以包括索引树300中包括的节点中由索引搜索线程读取的节点。更特别地,处理器120可以通过由索引搜索线程从索引树300的根节点310读取来确定执行索引搜索。然后,索引搜索线程可以读取根节点310、枝节点330和叶节点350中的一个或多个,并搜索目标索引键。此外,搜索节点可以包括索引搜索线程读取以搜索目标索引键的节点和索引搜索线程正在读取的节点。
相应地,即使索引树300的结构由另一线程改变,根据本公开的示例实施例的处理器120可以基于索引搜索线程开始目标索引键值的搜索的过程中记录的遍历时间戳、索引搜索的过程中获得的索引时间戳、和其中记录索引时间戳的值的时间戳表,最小化用于在搜索路径中返回以重搜索的间隔,并在最近节点中重尝试搜索。此外,以此方式,可以大大地减小并发工作环境中重搜索所需的搜索间隔,从而极大地减小整体索引搜索时间。
具有此特征,可以通过增强计算设备的数据处理速度并增强工作的并发性同时保证并发工作环境中索引结构的一致性,来有效地增强数据库系统10的性能。
图3是根据本公开的示例实施例的其中处理器通过索引树和时间戳执行索引搜索的示例图。
处理器120可以设置用于搜索目标索引键的索引搜索的遍历时间戳。更特别地,当处理器120接收从客户端200发布的查询以检索目标索引键值时,处理器120可以将目标索引键值分配给执行索引搜索的索引搜索线程。然后,处理器120可以基于目标索引键值的搜索被分配索引搜索线程时的时间,生成遍历时间戳。此外,索引搜索线程可以基于遍历时间戳执行目标索引键的索引搜索,直到从为索引树300的最顶级的节点的根节点310经由枝节点330到达最底级的叶节点350。
处理器120可以基于索引树300中包括的每个节点的修改的时间信息设置索引时间戳。更特别地,处理器120可以修改索引树300中包括的每个节点。在此,节点的修改可以包括节点中包括的索引值的修改(例如,增加、删除和改变索引键值)或索引树300的结构改变。索引树300的结构改变可以包括索引的改变,其中可以改变索引搜索的路径。例如,索引树300的结构改变可以包括删除节点、拆分节点和改变节点连接链路中的至少一个。索引树300的结构改变的描述仅是示例,且本公开不限于此。然后,处理器120可以基于修改每个节点的时间生成每个节点的索引时间戳。然后,索引搜索线程可以基于遍历时间戳和搜索节点的索引时间戳,执行索引搜索。
根据本公开的示例实施例,处理器120可以从根节点搜索索引树。处理器120可以沿从索引树300的根节点310连接至叶节点350的链路搜索索引树300。在此,从根节点310至叶节点350的方向可以指示从索引树的最顶级至最底级的方向。相应地,索引搜索线程可以执行从根节点310至枝节点330以及从枝节点330至叶节点350的索引搜索。
处理器120可以沿连接至子节点的链路从父节点至子节点搜索索引树。处理器120比较每个索引节点中包括的索引键值和目标索引键值,以确定执行搜索的链路。此外,处理起来120可以对通过下链路连接至搜索节点的子节点中的一个执行索引搜索。
根据本公开的示例实施例,处理器120访问最顶级的根节点310以比较根节点310中包括的索引键值和待被搜索的目标索引键值。此外,当目标索引键值是小于根节点310中的键中具有最小值的键的值时,处理器120可以对连接至下方向下链路的下方向枝节点330执行索引搜索。进一步地,当目标索引键是大于根节点310中的键中具有最大值的键的值时,处理器120可以对连接至上方向下链路的上方向枝节点执行索引搜索。进一步地,根据示例实施例,当目标索引键是大于根节点310中的键中具有最小值的键并小于具有最大值的键的值且不是包括在根节点310中的值时,处理器120可以对连接至中方向下链路的中方向枝节点执行索引搜索。此外,处理器120可以通过访问枝节点330执行相同操作,来确定待被搜索的叶节点350。
例如,如图3所示,处理器120可以基于从客户端200接收的查询确定目标索引键值“31”。然后,处理器120可以确定索引搜索线程以搜索索引树300中具有索引键值“31”的数据。相应地,索引搜索线程可以通过访问是根节点310的节点N1来读取索引键“99”以及读取目标索引键值“31”。在此,节点N1可以分别通过下方向下链路和上方向下链路连接至两个子节点。此外,索引搜索线程比较与目标索引键值对应的“31”和对应于节点N1的索引键值“99”,以确定对子节点中下方向上的节点N2执行索引搜索。进一步地,索引搜索线程可以沿下方向下链路访问包括“75”作为索引键值的N2节点。此外,索引搜索线程比较目标索引键值“31”和作为N2节点的索引键值的“75”以确定对节点N2的子节点中下方向上的节点N3执行索引搜索。此外,索引搜索线程可以沿下方向下链路访问包括“50”作为索引键值的节点N3。进一步地,索引搜索线程比较目标索引键值“31”和节点N3的索引键值“50”,以确定对节点N3的子节点中下方向上的节点N4执行索引搜索。此外,索引搜索线程可以沿下方向下链路访问包括“21”作为索引键值的节点N4。进一步地,索引搜索线程比较目标索引键值“31”和节点N4的索引键值“21”以确定对节点N4的子节点中上方向上的节点N6执行索引搜索。此外,索引搜索线程可以沿上方向下链路访问包括“26”作为索引键值的节点N6。进一步地,索引搜索线程比较目标索引键值“31”和节点N6的索引键值“26”以确定对节点N6的子节点中上方向上的节点N10执行索引搜索。在此描述的节点N2、N3、N4和N6可以通过链路彼此连接且相似地属于枝节点330,但仅具有父子关系。相应地,索引搜索线程可以通过访问索引树300的结构中处于最底端的节点N10来从目标索引键值“31”获得数据地址值。前述索引搜索线程的具体操作和数字限制仅是示例,且本公开不限于此。
然后,处理器可以将索引搜索中搜索的根节点310、枝节点330和叶节点350的至少一个索引时间戳写入时间戳表400中。更特别地,处理器120可以基于目标索引键被分配给索引搜索线程的时间生成遍历时间索引。进一步地,处理器120可以允许索引搜索线程获得根节点310的索引时间戳,同时读取根节点310以开始目标索引键的索引搜索。此外,处理器120可以将获得的根节点310的索引时间戳写入时间戳表400中。因此,处理器120可以确定发生根节点310的最后修改的时间。进一步地,处理器120比较根节点310的索引键和目标索引键,以将通过链路连接至根节点310的子节点中的一个确定为搜索路径。此外,处理器120可以允许索引搜索线程获得对应节点的索引时间戳,同时读取确定为索引路径的子节点(例如,枝节点330)。此外,处理器120可以将获得的子节点的索引时间戳写入时间戳表400中。因此,处理器120可以确定发生根节点310和子节点(例如,枝节点)的最后修改的时间。即,处理器120可以在执行目标索引键的索引搜索时获得索引搜索线程读取的全部节点(即搜索节点)的索引时间戳,并将获得的索引时间戳写入时间戳表400中。
在此,处理器120可以能够执行其中索引搜索线程读取搜索节点并比较目标索引键和搜索节点的索引键的操作,以及其中索引搜索线程读取搜索节点并获得索引时间戳并不管预/后处理将获得的索引时间戳写入时间戳表400中的操作。
根据本公开的示例实施例的处理器120可以将根节点310、枝节点330和叶节点350中的至少一个中读取的索引时间戳与每个节点标识进行匹配,并将与每个节点标识匹配的对应索引时间戳写入时间戳表400中。更特别地,索引树300中包括的全部节点可以包括能够识别每个节点的节点标识。在此,节点标识包括节点的名称、节点的存储位置、和节点之间的关系信息中的至少一个以允许处理器120通过节点标识识别对应节点。例如,当索引树300位于存储单元140中时,节点标识可以包括作为节点标识的存储单元上的节点的位置。节点标识的描述仅是示例,且本公开不限于此。处理器120可以将由索引搜索线程读取的搜索节点的节点标识与索引时间戳彼此匹配,并将匹配的节点标识和索引时间戳写入时间戳表400中。
例如,如图3所示,处理器120可以基于索引搜索线程开始读取根节点310的时间生成遍历时间戳“10”。然后,处理器120可以将索引搜索线程在读取根节点310时获得的根节点310的标识“N1”与根节点310的索引时间戳“5”进行匹配,并将匹配的“N1”和“5”写入时间戳表400中。进一步地,处理器120比较根节点310的索引键和目标索引键以确定接下来待被搜索的枝节点330。此外,处理器120可以允许索引搜索线程通过下链路访问枝节点330。进一步地,处理器120可以将索引搜索线程在读取枝节点330时获得的枝节点330的标识“N2”和枝节点330的索引时间戳“5”进行匹配,并将匹配的“N2”和“5”写入时间戳表中。通过重复地执行如上所述的相同过程,处理器120可以将索引搜索线程在搜索路径上读取的搜索节点的节点标识与每个节点中获得的索引时间戳进行匹配,并将匹配的节点标识和索引时间戳写入时间戳表400中,如图3中的时间戳表400中示出的“N1”和“5”、“N2”和“5”、“N3”和“10”、“N4”和“10”以及“N6”和“10”。如上描述的节点标识和索引时间表的具体描述仅是示例,且本公开不限于此。
相应地,当处理器120执行目标索引键的重搜索时,处理器120可以通过参考时间戳表400来确定直到重搜索时间每个节点是否改变。此外,处理器120可以将搜索之后不改变的先前搜索节点中的一个确定为重搜索的开始节点。
根据本公开的示例实施例的处理器120可以将从当前搜索节点至在索引搜索中读取的搜索节点中的预设数量的先前搜索节点的索引时间戳写入时间戳表400中。更特别地,处理器120可以预先设置待被写入时间戳表400中的节点的数量。例如,处理器120可以对待被保留在时间戳表400中的三个节点设置索引时间戳。此外,处理器120将由索引搜索线程获得的当前搜索节点的节点标识和索引时间戳,以及当前搜索节点的两个先前搜索节点的节点标识和索引时间戳写入时间戳表400中。时间戳表400的数量的设置的具体描述仅是示例,且本公开不限于此。
根据本公开的示例实施例的处理器120可以基于预定准则删除时间戳表400中写入的一个或多个索引时间戳。更特别地,在处理器120中,索引搜索线程可以在其中预定数量的索引时间戳被写入时间戳表400中的状态下,附加地获得搜索节点的索引时间戳。在此情况中,处理器120可以基于预定准则删除写入时间戳表400中的索引时间戳中的至少一个。在此,在预定准则中,可以删除其中索引搜索线程获得索引时间戳的时间最早的索引时间戳,或者可以删除索引树300的结构中最顶级节点的索引时间戳。即,处理器120可以在预定级处保持写入时间戳表400中的索引时间戳的数量。
因此,处理器120可以在预定级处写入用于确定重搜索开始节点所需的信息甚至同时保持随搜索路径变长而可以无限期地增加的时间戳表的尺寸。
处理器120可以基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径。更特别地,当索引搜索线程中记录的遍历时间戳等于或大于搜索节点的索引时间戳时,处理器120可以确定保持目标索引键的搜索路径。进一步地,当遍历时间戳小于搜索节点的索引时间戳时,处理器120可以确定在开始索引的搜索后索引树改变,并确定改变目标索引键的搜索路径。其具体描述将在下面参考图5描述。
相应地,即使索引树300的结构由另一线程改变,根据本公开的示例实施例的处理器120可以基于索引搜索线程开始目标索引键值的搜索的过程中记录的遍历时间戳、索引搜索过程中获得的索引时间戳、以及其中写入索引时间戳的值的时间戳表,最小化用于在搜索路径中返回以重搜索的间隔,并在最近节点重尝试搜索。此外,以此方式,可以大大地减小在并行工作环境中重搜索所需的搜索间隔,由此极大地减小整体索引搜索时间。
具有该特征,可以通过增强计算设备的数据处理速度并增强工作的并行性同时保证并行工作环境中索引结构的一致性,来有效地增强数据库系统10的性能。
图4是根据本公开的示例实施例的索引树300的结构改变的示例图。
根据本公开的示例实施例的索引树300的结构改变可以包括索引的改变,其中可以改变索引搜索的路径。例如,索引树300的结构改变可以包括拆分节点、在节点中插入键值、从节点中删除键值、改变节点中的键值和改变节点连接链路中的至少一个。
例如,索引树300可以由节点N6的两个子节点(节点N9和N10)构成,如图3所示。此外,处理器120将新的索引键值插入索引树300在节点N6中并拆分节点N10,以改变索引树300的结构。因此,处理器120可以允许索引树300在一个节点N6中连接至三个子节点,即N9、N10和N11,如图4所示。如上描述的索引树300的结构改变仅是示例,且本公开不限于此。
处理器120可以根据索引树300中包括的每个节点被修改的时间来更新对应节点的索引时间戳。当索引树在开始索引搜索之后改变时,可以更新对应节点的索引时间戳,并且处理器120可以基于索引时间戳确定是否改变索引搜索的路径。此外,根据示例性实施例,处理器120可以基于搜索节点的内容确定索引搜索的路径是否改变。更具体地,处理器120读取搜索节点的内容以确定至当前搜索节点的用于搜索目标索引键的搜索路径是否仍然有效。这里,处理器120确定搜索节点的内容的方法可以包括相关技术中的用来在B树索引结构中执行索引搜索的各个方面。例如,当索引搜索线程访问节点时,处理器120可以获得搜索节点的界限信息。界限信息可以包括可以包括在搜索节点中的索引键值的范围。也就是说,界限信息可以包括可以包括在当前搜索节点中或者当沿当前搜索节点继续搜索时达到的索引键值的范围,并且可以基于当前搜索节点的索引键值和当前搜索节点的父节点的索引键值来确定。另外,处理器120可以基于包括可以包括在搜索节点中的索引键的最小值和最大值的至少一个信息的界限信息和目标索引键来确定目标索引键的搜索路径是否需要改变。此外,当目标索引键的值落入界限信息内时,处理器120可以确定保持目标索引键的搜索路径。此外,当目标索引键的值不落在界限信息内时,处理器120可以确定改变目标索引键的搜索路径。处理器120的在搜索节点中用于确定索引搜索的路径是否改变的方法仅是示例,并且本公开不限于此。下面将参考图5描述其详细描述。
当确定保持目标索引键的当前搜索路径时,根据本公开的示例性实施例的处理器120可以更新遍历时间戳。更具体地,处理器120可以基于搜索节点的内容来确定是否保持搜索路径。另外,处理器120可以在确定保持搜索路径时更新分配给索引搜索线程的遍历时间戳以对应于当前节点的索引时间戳。因此,可以发布更新的遍历时间戳,以便连续地等于或大于当前正在搜索的搜索节点的索引时间戳。
由于没有建立遍历条件,当确定改变目标索引键的搜索路径时,根据本公开的示例性实施例的处理器120可以更新遍历时间戳。更具体地,当处理器120确定改变搜索路径时,处理器120可以在相应的时间更新分配给索引搜索线程的遍历时间戳。根据示例性实施例,处理器120可以基于索引搜索线程停止搜索目标索引键的时间来更新遍历时间戳。
根据本公开另一示例性实施例的处理器120可以基于索引搜索线程发起重搜索的开始节点的读取的时间信息来更新遍历时间戳。处理器120可以基于搜索节点的索引时间戳和时间戳表400来确定开始重搜索的重搜索开始节点。另外,处理器120可以重发布与索引搜索线程发起重搜索的时间(即,索引搜索线程读取重搜索的开始节点的时间)对应的遍历时间戳。
处理器120可以至少部分地基于时间戳表400来确定重搜索的开始节点。更具体地,处理器120可以获得索引搜索线程读取以搜索目标索引键的节点(即,搜索节点)的索引时间戳。另外,处理器120可以将每个节点的标识(例如,节点名称、节点地址等)与相应节点的索引时间戳匹配,并将匹配的标识和索引时间戳写入时间戳表400中。根据示例性实施例,处理器120可以设置待被写入时间戳表400中的节点的数量,并根据设置的数量管理时间戳表400。此外,根据示例性实施例,处理器120可以删除写入时间戳表400中的节点标识和索引时间戳。
根据本公开的示例性实施例的处理器120可以确定写入时间戳表400中的每个先前搜索节点在搜索后是否改变。这里,处理器120可以通过将写入时间戳表400的每个先前搜索节点的索引时间戳和在重搜索的时间处读取的每个先前搜索节点的索引时间戳相互比较来确定先前搜索节点的每个在搜索后是否改变。另外,处理器120可以将先前搜索节点中的搜索后不改变的先前搜索节点中的一个确定为重搜索的开始节点。下面将参考图5描述其详细描述。
因此,即使索引树300的结构被另一个线程改变,根据本公开的示例性实施例的处理器120可以基于在索引搜索线程开始搜索目标索引键值的过程中记录的遍历时间戳、在索引搜索过程中获得的索引时间戳以及其中写入索引时间戳的时间戳表,最小化用于在搜索路径中返回以进行重搜索的间隔,并且在最近的节点中重新尝试搜索。另外,以这种方式,可以大大减少在并发工作环境中重搜索所需的搜索间隔,从而极大减少整体索引搜索时间。
利用该特征,可以通过增强计算设备的数据处理速度和增强工作的并发性同时确保并发工作环境中的索引结构的一致性来有效地增强数据库系统10的性能。
图5是根据本公开示例性实施例的取决于索引树的结构的改变的重搜索的示意图。
处理器120可以基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径。处理器120可以通过比较遍历时间戳和搜索节点的索引时间戳来确定是否改变目标索引键的搜索路径。
更具体地,当遍历时间戳等于或大于搜索节点的索引时间戳时,根据本公开的示例性实施例的处理器120可以确定保持目标索引键的搜索路径。也就是说,处理器120认为在开始索引搜索之后索引树没有变化以连续执行索引搜索。例如,如图3所示,分配给用于搜索目标索引键“31”的索引搜索线程的遍历时间戳可以是10,并且索引搜索线程在节点N6中获得的索引时间戳可以是“10”。在这种情况下,处理器120可以基于分配给索引搜索线程的遍历时间索引“10”等于节点N6的索引时间戳“10”的事实来确定保持目标索引键的搜索路径。也就是说,处理器120可以确定节点N6未被修改,并且确定在对目标索引键的搜索开始之后保持目标索引键的搜索路径。上述目标索引键和索引时间戳的数值比较仅是示例,并且本公开不限于此。
当遍历时间戳小于搜索节点的索引时间戳时,根据本公开的示例性实施例的处理器120可以确定改变目标索引键的搜索路径。也就是说,处理器120可以基于索引时间戳和遍历时间戳的比较检测到在开始索引搜索之后索引树存在改变。例如,如图4所示,分配给用于搜索目标索引键“31”的索引搜索线程的遍历时间戳可以是10,并且索引搜索线程在节点N6中获得的索引时间戳可以是“15”。在这种情况下,处理器120可以基于分配给索引搜索线程的遍历时间索引“10”小于节点N6的索引时间戳“15”的事实来确定改变目标索引键的搜索路径。也就是说,处理器120可以确定节点N6被修改并且确定在目标索引键的搜索开始之后改变目标索引键的搜索路径。上述目标索引键和索引时间戳的数值比较仅是示例,并且本公开不限于此。
处理器120可以基于搜索节点的内容确定目标索引键的索引搜索的路径是否改变。处理器120读取搜索节点的内容以确定到当前搜索节点的用于搜索目标索引键的搜索路径是否仍然有效。更具体地,当遍历时间戳小于当前搜索节点的索引时间戳时,处理器120可以通过读取当前搜索节点的内容来确定直到搜索节点的搜索路径是否有效。因此,当当前搜索节点的索引时间戳是大于遍历时间戳的值时,即,当当前搜索节点在遍历开始之后被修改时,处理器120可以基于包括在当前搜索节点中的索引相关信息来确定修改是否影响搜索路径。另外,当前搜索节点被修改,但是当处理器120确定当前搜索节点不影响用于搜索目标索引键的路径时,处理器120可以确定保持搜索路径。另外,当处理器120确定当前搜索节点的修改影响用于搜索目标索引键的路径时,处理器120可以确定改变搜索路径。
这里,处理器120确定搜索节点的内容的方法可以包括相关技术中用来在B树索引结构中执行索引搜索的各个方面。根据本公开的示例性实施例,处理器120可基于界限信息和目标索引键确定索引搜索的路径是否改变。更具体地,在处理器120中,索引搜索线程可以通过访问当前搜索节点来获得对应搜索节点的界限信息。这里,界限信息可以包括搜索节点的可以包括在搜索节点中的索引键的最小值和最大值的至少一个信息。此外,这里,界限信息可以包括上界键和下界键中的至少一个,上界键表示在沿搜索节点的链路执行搜索时可以获得的索引键中的最大值,下界键表示在沿搜索节点的链路执行搜索时可以获得的索引键中的最小值。也就是说,上界键和下界键可以是用于确定可以包括在相应搜索节点的索引键值和索引树结构中的相应搜索节点的下链路节点的界限。当索引树的结构改变时,处理器120可以为每个节点确定上界键和下界键中的至少一个。另外,处理器120可以更新与索引结构改变线程的结构改变操作有关的节点的上界和/或下界信息。
处理器120可以基于搜索节点的内容确定目标索引键的搜索路径是否改变。处理器120可以基于目标索引键和界限信息确定目标索引键的搜索路径是否需要改变。更具体地,当在当前搜索节点中仅获得关于上界键的信息时并且当目标索引键值小于上界键时,当在当前搜索节点中仅获得关于下界键的信息并且目标索引键值大于下界键时,或者当获得关于上界键和下界键的信息并且目标索引键落入上界键和下界键之间的范围内时,处理器120可以确定目标索引键的值落入界限信息内。因此,当目标索引键的值落入界限信息内时,处理器120可以确定保持目标索引键的搜索路径。此外,当目标索引键的值不落在界限信息内时,处理器120可以确定改变目标索引键的搜索路径。
因此,即使当遍历时间戳小于当前搜索节点的索引时间戳时,处理器120也可以基于当前搜索节点的界限信息确定保持索引搜索路径。也就是说,尽管在当前搜索节点开始遍历之后索引搜索路径改变,处理器120可以确定改变的索引搜索路径是否不影响用于搜索目标索引键的路径。在这种情况下,处理器120将当前搜索节点的界限信息与目标索引键进行比较,以再次确定是保持还是改变索引搜索路径。因此,即使遍历时间戳小于索引时间戳,处理器120可以继续从当前正在搜索的节点执行索引搜索,无需无条件地从根节点重新开始索引搜索。处理器120的在搜索节点中用于确定索引搜索的路径是否改变的方法仅是示例,并且本公开不限于此。
当确定保持目标索引键的搜索路径时,根据本公开示例性实施例的处理器120可以更新遍历时间戳。更具体地,处理器120可以基于遍历时间戳等于或大于当前搜索节点的索引时间戳的事实来确定保持搜索路径。另外,处理器120可以更新分配给索引搜索线程的遍历时间戳以对应于当前节点的索引时间戳。因此,可以发布更新的遍历时间戳,以便连续地等于或大于当前正在搜索的搜索节点的索引时间戳。因此,通过使搜索路径的搜索直到当前搜索节点的时间戳有效,处理器120可以防止在继续搜索的同时不需要的确定是否改变索引树的开销。
处理器120可以基于遍历时间戳小于当前搜索节点的索引时间戳的事实来确定改变搜索路径。另外,当目标索引键的值包括在其中形成上界键和/或下界键的间隔中时,处理器120比较当前搜索节点的界限信息和目标索引键,以确定保持目标索引键的搜索路径。此外,当确定保持目标索引键的搜索路径时,处理器120可以将遍历时间戳更新为当前搜索节点的索引时间戳。因此,处理器120确定当前搜索节点的结构改变中不影响搜索路径的改变,以通过更新的遍历时间戳保持索引搜索,而无需在先前搜索节点中开始重搜索。
当确定改变目标索引键的搜索路径时,根据本公开示例性实施例的处理器120可以更新遍历时间戳。更具体地,处理器120可以通过比较分配给索引搜索线程的遍历时间戳和搜索节点的索引时间戳来确定改变搜索路径。另外,当处理器120确定改变搜索路径时,处理器120可以向索引搜索线程发布用于在改变的索引树300中搜索目标索引键的新的遍历时间戳。这里,可以发布新发布的遍历时间戳,以便等于或大于当前正在搜索的搜索节点的索引时间戳。例如,可以在重搜索恢复时间处设置新分配的遍历时间戳。
因此,当索引搜索线程开始重搜索并在重搜索再次开始之前读取搜索节点时,由于新发布的遍历时间戳小于当前索引时间戳,处理器120可以防止需要再次执行重搜索的问题。
更具体地,根据本公开的示例性实施例的处理器120可以基于关于比较遍历时间戳和搜索节点的索引时间戳的时间的信息来更新遍历时间戳。另外,处理器120可以重发布与索引搜索线程确定改变搜索路径的时间(即,索引搜索线程停止搜索目标索引键的时间)相对应的遍历时间戳。
根据本公开另一示例性实施例的处理器120可以基于索引搜索线程发起对重搜索的开始节点的读取的时间信息来更新遍历时间戳。处理器120可以基于搜索节点的索引时间戳和时间戳表400来确定开始重搜索的重搜索开始节点。另外,处理器120可以重发布与索引搜索线程发起重搜索的时间(即,索引搜索线程读取重搜索的开始节点的时间)相对应的遍历时间戳。下面将参考图6对其进行详细描述。
因此,由于处理器120可以尽可能高地更新重发布的遍历时间戳,因此可以在后续重搜索过程中降低遍历时间戳将小于索引树300中包括的搜索节点的索引时间戳的概率。
处理器120可以至少部分地基于时间戳表400来确定重搜索的开始节点。更具体地,处理器120可以获得索引搜索线程读取以搜索目标索引键的节点(即,搜索节点)的索引时间戳。另外,处理器120可以将每个节点的标识(例如,节点名称、节点地址等)和相应节点的索引时间戳进行匹配,并将匹配的标识和索引时间戳写入时间戳表400中。根据示例性实施例,处理器120可以设置待写入时间戳表400中的节点的数量,并根据设置的数量管理时间戳表400。此外,根据示例性实施例,处理器120可以删除写入时间戳表400中的节点标识和索引时间戳。
根据本公开的示例性实施例的处理器120可以确定写入时间戳表400中的每个先前搜索节点在搜索之后是否改变。这里,处理器120可以通过将在时间戳表400中写入的每个先前搜索节点的索引时间戳和在重搜索的时间处读取的每个先前搜索节点的索引时间戳进行相互比较来确定每个先前搜索节点在搜索之后是否改变。另外,处理器120可以将先前搜索节点中的在搜索之后未被改变的先前搜索节点中的一个确定为重搜索的开始节点。更具体地,处理器120可以在时间戳表400中匹配并存储用于搜索节点的节点标识和索引时间戳。此外,在遍历时间戳小于搜索节点的索引时间戳时,处理器120可以确定改变目标索引键的搜索路径。因此,处理器120可以通过基于从时间戳表400获得的先前搜索节点的地址读取搜索路径中包括的每个先前搜索节点来再次获得索引时间戳,以便执行对目标索引键的重搜索。例如,处理器120可以基于在N6中获得的索引时间戳“15”大于分配给索引搜索线程的遍历时间戳“10”的事实来确定需要改变目标索引键的搜索路径,如图5所示。然后,处理器120可以基于在时间戳表400中写入的节点标识(例如,每个先前搜索节点的DBA),再次访问在N6之前搜索的节点N4。另外,处理器120可以通过读取节点N4再次获得索引时间戳“10”。此外,处理器120可以基于与节点N4的节点标识匹配并且存储在时间戳表400中的索引时间戳“10”与再次获得的索引时间戳“10”彼此相等的事实确定节点N4在先前搜索之后未改变。此外,根据示例性实施例,处理器120可以通过读取在时间戳表400中写入的先前搜索节点的至少两个来再次获得重搜索的时间处的索引时间戳。在另一示例性实施例中,处理器120可以执行从时间戳表400中写入的先前搜索节点中的当前搜索节点附近的先前搜索节点重新访问先前搜索节点、获得先前搜索节点的当前时间戳,以及与时间戳表400中写入的相应的先前搜索节点的时间戳的比较操作。也就是说,在首先确定当前搜索节点的最近节点在搜索后是否改变之后,当当前搜索节点的最近节点在搜索后改变时,处理器120可以确定当前搜索节点的最近节点的更高节点在搜索后是否改变。通过这样的处理,当需要重设置搜索路径时,处理器120可以通过从接近当前搜索节点的节点搜索在搜索后未改变的节点(即,其中搜索直到对应节点是有效的)来最小化重设置路径时的返回度。另外,处理器120可以比较再次获得的索引时间戳和存储在时间戳表400中的索引时间戳。关于由处理器120确定是否改变搜索节点的详细描述仅仅是示例,并且本公开内容不限于此。
因此,处理器120可以确定目标索引键的搜索路径的先前搜索节点中在搜索后未改变的先前搜索节点。另外,处理器120可以将在搜索后未改变的先前搜索节点中的一个确定为重搜索的开始节点。
根据本公开的示例性实施例的处理器120可以确定在搜索之后未改变的先前搜索节点中与当前搜索节点最近的节点作为重搜索的开始节点。更具体地,处理器120可以确定时间戳表400中写入的一个或多个先前搜索节点在搜索后是否改变。另外,处理器120可以通过返回至过去的搜索路径(即,从先前搜索节点中刚刚先前搜索的搜索节点开始以搜索路径的相反顺序)来确定先前的搜索节点在搜索后是否改变。然后,处理器120可以将最接近当前搜索节点(即,搜索时间后未改变的一个或多个搜索节点中的搜索被终止的现有搜索节点)的节点确定为重搜索的开始节点。
这里,根据示例性实施例,当先前搜索节点中刚刚先前搜索的节点在搜索后未改变时,处理器120可以将搜索节点确定为重搜索的开始节点。另外,根据另一示例性实施例,处理器120可以确定时间戳表400中写入的一个或多个搜索节点在搜索后是否改变,然后确定未改变的节点中的最近的节点作为重搜索的开始节点。
例如,如图5所示,当处理器120确定需要在节点N6中改变搜索路径时,处理器120可以读取刚刚先前搜索的节点,即先前搜索节点中最近的搜索节点N4。此外,处理器120可以基于与节点N4的标识匹配并存储在时间戳表400中的“10”与再次获得的索引时间戳“10”彼此相等的事实来确定节点N4在搜索后未改变。因此,处理器120可以将N4确定为重搜索的开始节点。此外,在另一示例中,处理器120可以确定节点N4未被改变,然后,访问写入时间戳表400中的访问节点N1、N2和N3,并确定相应节点是否改变。另外,处理器120可以基于所有节点N1、N2、N3和N4未改变的事实以及未改变的节点中的N4最接近搜索停止的节点N6的事实将节点N4确定为重搜索的开始节点。在另一示例中,处理器120可以确定时间戳表400中写入的先前搜索节点中的仅通过预定准则(例如,索引时间戳的值限制)的先前搜索节点在搜索后是否改变。上述处理器120对重搜索节点的确定仅是示例,并且本公开不限于此。
另外,根据本公开的示例性实施例的处理器120可以将在搜索后未改变的先前搜索节点中最近改变的节点确定为重搜索的开始节点。更具体地,处理器120可以确定时间戳表400中写入的一个或多个先前搜索节点在搜索后是否改变。然后,处理器120可以将在搜索时间后未改变的一个或多个先前搜索节点中具有最大索引时间戳值的节点确定为重搜索的开始节点。也就是说,处理器120可以确定在搜索后是否改变存储在时间戳表400中的先前搜索节点的至少一些,并确定将搜索后未改变的先前搜索节点中最近改变的搜索节点作为重搜索的开始节点。
当在搜索后未改变的先前搜索节点中最近改变的节点的数量是2个或更多个时,根据本公开的示例性实施例的处理器120可以将最接近的搜索节点确定为重搜索的开始节点。更具体地,处理器120可以确定时间戳表400中写入的一个或多个先前搜索节点在搜索后是否改变。然后,处理器120可以将在搜索时间后未改变的一个或多个先前搜索节点中具有最大索引时间戳值的节点确定为重搜索的开始节点。这里,可以存在具有最大索引时间戳值的多个节点。在这种情况下,处理器120可以将在搜索时间后未改变的一个或多个搜索节点中的最接近当前搜索节点(即,搜索被终止的现有搜索节点)的节点确定为重搜索的开始节点。
因此,即使索引树300的结构被另一个线程改变,根据本公开的示例性实施例的处理器120可以基于在索引搜索线程开始搜索目标索引键值的过程中记录的遍历时间戳、在索引搜索过程中获得的索引时间戳以及其中写入索引时间戳的时间戳表,最小化用于在搜索路径中返回以进行重搜索的间隔,并且在最近的节点中重新尝试搜索。另外,以这种方式,可以大大减少在并发工作环境中重搜索所需的搜索间隔,从而极大减少整体索引搜索时间。
利用该特征,可以通过增强计算设备的数据处理速度和增强工作的并发性同时确保并发工作环境中的索引结构的一致性来有效地增强数据库系统10的性能。
图6是根据本公开示例性实施例的遍历时间戳的更新的示意图。
处理器120可以基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径。处理器120可以通过比较遍历时间戳和搜索节点的索引时间戳的大小来确定是否改变目标索引键的搜索路径。
更具体地,当遍历时间戳等于或大于搜索节点的索引时间戳时,根据本公开的示例性实施例的处理器120可以确定保持目标索引键的搜索路径。此外,当遍历时间戳小于搜索节点的索引时间戳时,根据本公开的示例性实施例的处理器120可以确定改变目标索引键的搜索路径。
当确定改变目标索引键的搜索路径时,根据本公开示例性实施例的处理器120可以更新遍历时间戳。更具体地,处理器120可以通过比较分配给索引搜索线程的遍历时间戳和搜索节点的索引时间戳来确定改变搜索路径。另外,当处理器120确定改变搜索路径时,处理器120可以将用于在改变的索引树300中搜索目标索引键的新的遍历时间戳分配给索引搜索线程。这里,可以分配新发布的遍历时间戳,以便等于或大于当前正在搜索的搜索节点的索引时间戳。
因此,当索引搜索线程开始重搜索并再次到达搜索节点时,处理器120可以避免由于新发布的遍历时间戳小于当前索引时间戳而需要再次执行重搜索的问题。
更具体地,根据本公开的示例性实施例的处理器120可以基于关于比较遍历时间戳和搜索节点的索引时间戳的时间的信息来更新遍历时间戳。处理器120可以基于遍历时间戳小于搜索节点的索引时间戳的事实来确定改变搜索路径。另外,处理器120可以重新发出与索引搜索线程确定改变搜索路径的时间(即,索引搜索线程停止对目标索引键的搜索的时间)相对应的遍历时间戳。
根据本公开另一示例性实施例的处理器120可以基于索引搜索线程发起对重搜索的开始节点的读取的时间信息来更新遍历时间戳。处理器120可以基于搜索节点的索引时间戳和时间戳表400来确定开始重搜索的重搜索开始节点。此外,处理器120可以重发布与索引搜索线程发起重搜索的时间(即,索引搜索线程读取重搜索的开始节点的时间)相对应的遍历时间戳。
当确定保持目标索引键的搜索路径时,根据本公开示例性实施例的处理器120可以更新遍历时间戳。更具体地,处理器120可以基于遍历时间戳等于或大于当前搜索节点的索引时间戳的事实来确定保持搜索路径。另外,处理器120可以更新分配给索引搜索线程的遍历时间戳以对应于当前节点的索引时间戳。因此,可以发布更新的遍历时间戳,以便连续地等于或大于当前正在搜索的搜索节点的索引时间戳。
根据本公开另一示例性实施例的处理器120可以基于遍历时间戳小于当前搜索节点的索引时间戳的事实来确定改变搜索路径。另外,处理器120比较当前搜索节点的界限信息和目标索引键,以当目标索引键的值被包括在其中形成上界键和/或下界键的间隔中时,确定保持目标索引键的搜索路径。此外,当确定保持目标索引键的搜索路径时,处理器120可以将遍历时间戳更新为当前搜索节点的索引时间戳。因此,处理器120确定当前搜索节点的结构改变中不影响搜索路径的改变,以通过更新的遍历时间戳保持索引搜索,而不在先前搜索节点中开始重搜索。
因此,即使索引树300的结构被另一线程改变,根据本公开的示例性实施例的处理器120可以基于在索引搜索线程开始搜索目标索引键值的过程中记录的遍历时间戳、在索引搜索过程中获得的索引时间戳,以及其中索引时间戳的值的时间戳表,最小化用于在搜索路径中返回以进行重搜索的间隔,并且在最近的节点中重新尝试搜索。另外,以这种方式,可以大大减少在并发工作环境中重搜索所需的搜索间隔,从而极大减少整体索引搜索时间。
利用该特征,可以通过增强计算设备的数据处理速度和增强工作的并发性同时确保并发工作环境中的索引结构的一致性来有效地增强数据库系统10的性能。
图7是根据本公开示例性实施例的用于搜索索引的方法的流程图。
根据本公开的示例性实施例的索引搜索可以由计算设备执行。这里,计算设备可以包括一个或多个处理器120和存储由一个或多个处理器可执行的命令的存储器。在下文中,将详细描述计算设备在索引树300中搜索特定索引的顺序。
根据本公开示例性实施例的计算设备可以设置用于搜索目标索引键的索引搜索的遍历时间戳(501)。更具体地,当处理器120接收到从客户端200发布的查询以检索目标索引键值时,处理器120可以将目标索引键值分配给执行索引搜索的索引搜索线程。然后,处理器120可以基于索引搜索线程分配目标索引键值的搜索的时间来生成遍历时间戳。另外,索引搜索线程可以基于遍历时间戳执行对目标索引键的索引搜索,直到从为索引树300的最顶级处的节点的根节点310经由枝节点330到达最底级的叶节点350。
根据本公开的示例性实施例的计算设备可以基于索引树300中包括的每个节点的修改的时间信息来设置索引时间戳。更具体地,计算设备可以修改索引树300中包括的每个节点。这里,节点的修改可以包括节点中包括的索引值的修改(例如,添加、删除和改变索引键值)或索引树300的结构改变。索引树300的结构改变可以包括索引的改变,其中索引搜索的路径可以改变。例如,索引树300的结构改变可以包括删除节点、拆分节点和改变节点连接链路中的至少一个。索引树300的结构改变的描述仅是示例,并且本公开不限于此。然后,计算设备可以基于每个节点被修改的时间为每个节点生成索引时间戳。然后,索引搜索线程可以基于遍历时间戳和搜索节点的索引时间戳来执行索引搜索。
根据本公开的示例性实施例,处理器120可以从根节点开始搜索索引树。计算设备可以沿从索引树300的根节点310至叶节点350的链路搜索索引树300(502)。这里,从根节点310到叶节点350的方向可以指示从索引树300的最顶级到最底级的方向。因此,索引搜索线程可以执行从根节点310至枝节点330以及从枝节点330到叶节点350的索引搜索。
然后,计算设备可以将在索引搜索中读取的根节点310、枝节点330和叶节点350的至少一个索引时间戳写入时间戳表400中(503)。更具体地,计算设备可以基于将目标索引键分配给索引搜索线程的时间来生成遍历时间索引。此外,计算设备可以允许索引搜索线程在读取根节点310的同时获得根节点310的索引时间戳,以便开始对目标索引键的索引搜索。另外,计算设备可以将所获得的根节点310的索引时间戳写入时间戳表400中。因此,计算设备可以确定对根节点310的最后的修改发生的时间。此外,计算设备比较根节点310的索引键和目标索引键,以将通过链路连接至根节点310的子节点中的一个确定为搜索路径。另外,计算设备可以允许索引搜索线程在读取被确定为搜索路径的子节点(例如,枝节点330)的同时获得对应节点的索引时间戳。另外,计算设备可以将获得的子节点的索引时间戳写入时间戳表400中。因此,计算设备可以确定根节点310和子节点(例如,枝节点330)的最后的修改发生的时间。也就是说,计算设备可以获得索引搜索线程在执行目标索引键的索引搜索时读取的所有节点,即搜索节点,的索引时间戳,并将获得的索引时间戳写入时间戳表400中。
这里,计算设备可以能够执行索引搜索线程读取搜索节点并且比较目标索引键和搜索节点的索引键的操作以及索引搜索线程读取搜索节点并且获得索引时间戳并且不管预/后处理将获得的索引时间戳写入时间戳表400中的操作。
根据本公开的示例性实施例的计算设备可以将在根节点310、枝节点330和叶节点350中的至少一个中读取的索引时间戳与每个节点标识进行匹配,并且将与每个节点标识匹配的相应的索引时间戳写入时间戳表400中。更具体地,索引树300中包括的所有节点可以包括能够识别每个节点的节点标识。这里,节点标识包括节点的名称、节点的存储位置和节点之间的关系信息中的至少一个,以允许计算设备通过节点标识识别相应的节点。
根据本公开的示例性实施例的计算设备可以将从当前搜索节点至索引搜索中读取的搜索节点中的预设数量的先前搜索节点的索引时间戳写入时间戳表400中。更具体地,计算设备可以预先设置待写入时间戳表400中的节点的数量。
根据本公开的示例性实施例的计算设备可以基于预定准则删除写入时间戳表400中的一个或多个索引时间戳。更具体地,在计算设备中,索引搜索线程可以在将预定数量的索引时间戳写入时间戳表400中的状态下额外获得搜索节点的索引时间戳。在这种情况下,计算设备可以基于预定准则确定删除写入时间戳表400中的索引时间戳中的至少一个。这里,在预定准则中,可以将其中索引搜索线程获得索引时间戳的时间是最早的索引时间戳删除或者可以将最顶级节点的索引时间戳从索引树300的结构中删除。也就是说,计算设备可以在预定级处保持写入时间戳表400中的索引时间戳的数量。
因此,计算设备可以在预定级处写入用于确定重搜索开始节点所需的信息甚至同时保持随搜索路径变长而可以无限期地增加的时间戳表的尺寸。
计算设备可以基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径(504)。更具体地,当记录在索引搜索线程中的遍历时间戳等于或大于搜索节点的索引时间戳时,计算设备可以确定保持目标索引键的搜索路径。此外,当遍历时间戳小于搜索节点的索引时间戳时,计算设备可以确定改变目标索引键的搜索路径。
更具体地,当遍历时间戳等于或大于搜索节点的索引时间戳时,根据本公开的示例性实施例的计算设备可以确定保持目标索引键的搜索路径。
当确定改变目标索引键的搜索路径时,根据本公开的示例性实施例的计算设备可以更新遍历时间戳。更具体地,计算设备可以通过比较分配给索引搜索线程的遍历时间戳和搜索节点的索引时间戳来确定改变搜索路径。另外,当计算设备确定改变搜索路径时,计算设备可以向索引搜索线程发布用于在改变的索引树300中搜索目标索引键的新的遍历时间戳。这里,可以发布新发布的遍历时间戳,以便等于或大于当前正在搜索的搜索节点的索引时间戳。
因此,当索引搜索线程开始重搜索并再次到达搜索节点时,计算设备可以避免由于新发布的遍历时间戳小于当前索引时间戳而需要再次执行重搜索的问题。
更具体地,根据本公开的示例性实施例的计算设备可以基于关于比较遍历时间戳和搜索节点的索引时间戳的时间的信息来更新遍历时间戳。计算设备可以基于遍历时间戳小于搜索节点的索引时间戳的事实来确定改变搜索路径。另外,计算设备可以重发布与索引搜索线程确定改变搜索路径的时间(即,索引搜索线程停止搜索目标索引键的时间)相对应的遍历时间戳。
根据本公开另一示例性实施例的计算设备可以基于索引搜索线程发起对重搜索的开始节点的读取的时间信息来更新遍历时间戳。计算设备可以基于搜索节点的索引时间戳和时间戳表400来确定开始重搜索的重搜索开始节点。此外,计算设备可以重发布与索引搜索线程发起重搜索的时间(即,索引搜索线程读取重搜索的开始节点的时间)对应的遍历时间戳。
计算设备可以至少部分地基于时间戳表400来确定重搜索的开始节点。更具体地,计算设备可以获得索引搜索线程读取以搜索目标索引键的节点(即,搜索节点)的索引时间戳。另外,计算设备可以将每个节点的标识(例如,节点名称、节点地址等)与相应节点的索引时间戳进行匹配,并将匹配的标识和索引时间戳写入时间戳表400中。根据示例性实施例,计算设备可以设置待写入时间戳表400中的节点的数量,并根据设置的数量管理时间戳表400。此外,根据示例性实施例,计算设备可以删除写入时间戳表400中的节点标识和索引时间戳。
根据本公开的示例性实施例的计算设备可以确定写入时间戳表400中的每个先前搜索节点在搜索后是否改变。这里,计算设备可以通过将时间戳表400中写入的每个先前搜索节点的索引时间戳和在重搜索的时间处读取的每个先前搜索节点的索引时间戳进行相互比较来确定每个先前搜索节点在搜索后是否改变。另外,计算设备可以将先前搜索节点中在搜索后未改变的先前搜索节点中的一个确定为重搜索的开始节点。
更具体地,计算设备可以在时间戳表400中匹配并存储搜索节点的节点标识和索引时间戳。此外,在遍历时间戳小于搜索节点的索引时间戳时,计算设备可以确定改变目标索引键的搜索路径。因此,计算设备可以通过读取搜索路径中包括的每个先前搜索节点来再次获得索引时间戳,以便重搜索目标索引键。
因此,计算设备可以确定目标索引键的搜索路径的先前搜索节点中在搜索后未改变的先前搜索节点。另外,计算设备可以将在搜索后未改变的先前搜索节点中的一个确定为重搜索的开始节点。
根据本公开的示例性实施例的计算设备可以将搜索后未改变的先前搜索节点中的至当前搜索节点的最近节点确定为重搜索的开始节点。更具体地,计算设备可以确定时间戳表400中写入的一个或多个先前搜索节点在搜索后是否改变。另外,计算设备可以通过返回至过去的搜索路径(即,从先前搜索节点中的刚刚先前搜索的搜索节点以搜索路径的相反顺序)来确定先前的搜索节点在搜索后是否改变。然后,计算设备可以将在搜索时间后未改变的一个或多个搜索节点中的最接近当前搜索节点(即,搜索被终止的现有搜索节点)的节点确定为重搜索的开始节点。
这里,根据示例性实施例,当先前搜索节点中刚刚先前搜索的节点在搜索后未改变时,计算设备可以将该搜索节点确定为重搜索的开始节点。另外,根据另一示例性实施例,计算设备可以确定时间戳表400中写入的一个或多个搜索节点在搜索后是否改变,然后确定未改变的节点中的最近的节点作为重搜索的开始节点。
因此,即使索引树300的结构被另一线程改变,根据本公开的示例性实施例的计算设备可以基于在索引搜索线程开始搜索目标索引键值的过程中写入的遍历时间戳和索引搜索的过程中获得的索引时间戳,最小化用于在搜索路径中返回以进行重搜索的间隔,并且在最近的节点中重新尝试搜索。另外,以这种方式,可以大大减少在并发工作环境中重搜索所需的搜索间隔,从而极大减少整体索引搜索时间。
利用该特征,可以通过增强计算设备的数据处理速度和增强工作的并发性同时确保并发工作环境中的索引结构的一致性来有效地增强数据库系统10的性能。
图8是示出根据本公开示例性实施例的数据库系统中用于搜索索引的构件的框图。
根据本公开的示例性实施例,计算设备可以包括:为了增强数据的搜索性能,用于设置用于搜索目标索引键的索引搜索的遍历时间戳的构件601;用于沿从索引树的根节点连接至叶节点的链路搜索索引树的构件602;用于将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中的构件603;以及用于基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径的构件604。
可选地,可以对索引树中包括的每个节点分配索引时间戳,并且基于关于每个节点被修改的时间的信息生成索引时间戳。
可选地,用于将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中的构件可以包括用于将在根节点、枝节点和叶节点中的至少一个中读取的索引时间戳与每个节点标识进行匹配并将匹配的索引时间戳和节点标识写入时间戳表中的构件。
可选地,用于将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中的构件可以包括用于将从当前搜索节点直到在索引搜索中读取的搜索节点中的预定数量的先前搜索节点的索引时间戳写入时间戳表中的构件。
可选地,用于将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中的构件还可以包括用于基于预定准则删除写入时间戳表中的一个或多个索引时间戳的构件。
可选地,用于基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径的构件可以包括用于在遍历时间戳等于或大于搜索节点的索引时间戳时确定保持目标索引键的搜索路径的构件,以及用于在遍历时间戳小于搜索节点的索引时间戳时确定改变目标索引键的搜索路径的构件。
可选地,用于基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径的构件可以包括用于当遍历时间戳小于搜索节点的索引时间戳时基于搜索节点的内容确定是否改变目标索引键的搜索路径的构件。
可选地,用于当遍历时间戳小于搜索节点的索引时间戳时基于搜索节点的内容确定是否改变目标索引键的搜索路径的构件可以包括用于基于包括能够包括在搜索节点中的索引键的最小值和最大值的至少一个信息的搜索节点的界限信息和目标索引键确定目标索引键的搜索路径是否需要改变的构件。
可选地,用于基于包括能够包括在搜索节点中的索引键的最小值和最大值的至少一个信息的搜索节点的界限信息和目标索引键确定目标索引键的搜索路径是否需要改变的构件可以包括用于当目标索引键的值落入界限信息内时确定保持目标索引键的搜索路径的构件以及用于当目标索引键的值不落入界限信息内时确定改变目标索引键的搜索路径的构件。
可选地,用于当遍历时间戳小于搜索节点的索引时间戳时基于搜索节点的内容确定是否改变目标索引键的搜索路径的构件还可以包括用于当确定保持目标索引键的搜索路径时基于当前搜索节点的索引时间戳更新遍历时间戳的构件。
可选地,计算设备还可以包括用于在确定改变目标索引键的搜索路径时更新遍历时间戳的构件。
可选地,用于更新遍历时间戳的构件可以包括用于基于比较遍历时间戳和搜索节点的索引时间戳时的时间信息更新遍历时间戳或基于索引搜索线程开始读取重搜索的开始节点时的时间信息更新遍历时间戳的构件。
可选地,计算设备还可以包括用于至少部分地基于时间戳表确定重搜索的开始节点的构件。
可选地,用于至少部分地基于时间戳表确定重搜索的开始节点的构件可以包括用于确定写入时间戳表中的每个先前搜索节点在搜索后是否改变的构件,以及用于将先前搜索节点中的在搜索后未改变的先前搜索节点中的一个确定为重搜索的开始节点的构件。
可选地,用于确定时间戳表中写入的每个先前搜索节点在搜索后是否改变的构件可以包括用于通过比较时间戳表中写入的先前搜索节点的每个索引时间戳和在重搜索的时间处读取的每个先前搜索节点的索引时间戳来确定先前搜索节点在搜索后是否改变的构件。
可选地,用于将先前搜索节点中的搜索后未改变的先前搜索节点中的一个确定为重搜索的开始节点的构件可以包括用于将在搜索后未改变的先前搜索节点中的当前搜索节点的最近节点确定为重搜索的开始节点的构件。
图9是示出根据本公开示例性实施例的数据库系统用于搜索索引的模块的框图。
根据本公开的示例性实施例,计算设备可以包括:为了增强数据的搜索性能,用于设置用于搜索目标索引键的索引搜索的遍历时间戳的模块701;用于沿从索引树的根节点连接至叶节点的链路搜索索引树的模块702;用于将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中的模块703;以及用于基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径的模块704。
图10是示出根据本公开示例性实施例的数据库系统中用于搜索索引的逻辑的框图。
根据本公开的示例性实施例,计算设备可以包括:为了增强数据的搜索性能,用于设置用于搜索目标索引键的索引搜索的遍历时间戳的逻辑801;用于沿从索引树的根节点连接至叶节点的链路搜索索引树的逻辑802;用于将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中的逻辑803;以及用于基于遍历时间戳和索引时间戳确定是否改变目标索引键的搜索路径的逻辑804。
图11是示出根据本公开示例性实施例的数据库系统中用于搜索索引的电路的框图。
根据本公开的示例性实施例,计算设备可以包括:为了增强搜索性能,用于设置用于搜索目标索引键的索引搜索的遍历时间戳的电路901;用于沿从索引树的根节点连接至叶节点的链路搜索索引树的电路902;用于将在索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中的电路903;以及用于基于遍历时间标记和索引时间标记确定是否改变目标索引键的搜索路径的电路904。
本领域技术人员需要认识到,结合本文公开的示例性实施例描述的各种说明性逻辑块、配置、模块、电路、构件、逻辑和算法步骤可以另外实施为电子硬件、计算机软件或二者的组合。为了清楚地说明硬件和软件的可互换性,上面已经在其功能方面大致描述了各种说明性的组件、块、结构、构件、逻辑、模块、电路和步骤。功能是作为硬件还是软件实施取决于给定整个系统的特定应用和设计限制。技术人员可以针对每个特定应用以各种方式实施所描述的功能,但是这种实施决策不应被解释为导致脱离本公开的范围。
图12是根据本公开示例性实施例的计算设备的框图。
图12示出其中可以实施本公开的示例性实施例的示例性计算环境的简单且通用的示意图。
上面结合可以在一个或多个计算机上执行的计算机可执行命令描述了本公开,但是本领域技术人员将很好地理解,本公开可以通过与其他程序模块组合和/或硬件和软件的组合来实施。
通常,程序模块包括执行特定任务或实施特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域技术人员将充分理解,本公开的方法可以由包括个人计算机、手持计算设备、基于微处理器的或可编程的家用电器等(各个设备可以与一个或多个相关联的设备以及单处理器或多处理器计算机系统、迷你计算机和主机计算机结合操作)的其他计算机系统配置实施。
本公开中描述的示例性实施例还可以在分布式计算环境中实施,其中预定任务由通过通信网络连接的远程处理设备实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
计算机通常包括各种计算机可读介质。计算机可访问的介质可以是计算机可读介质而不管其类型,并且计算机可读介质包括易失性和非易失性介质、暂时和非暂时性介质,以及移动和非移动介质。作为示例而非限制,计算机可读介质可以包括计算机可读存储介质和计算机可读传输介质。计算机可读存储介质包括由用于存储诸如计算机可读命令、数据结构、程序模块或其他数据的信息的预定方法或技术实施的易失性和非易失性介质、临时和非临时介质,以及可移动和不可移动介质。计算机存储介质包括RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字视频盘(DVD)或其他光盘存储设备、磁带盒、磁带、磁盘存储设备或其他磁存储设备或可以由计算机访问或者可以用于存储所需信息的预定的其他介质,但不限于此。
计算机可读传输介质通常以载波或诸如其他传输机制的调制数据信号实施计算机可读命令、数据结构、程序模块或其他数据,并且包括所有信息传递介质。术语“调制数据信号”表示通过配置或改变信号的至少一个特性以便对信号中的信息进行编码而获得的信号。作为示例而非限制,计算机可读传输介质包括诸如有线网络或直接有线连接的有线介质以及诸如声学、RF、红外和其他无线介质的无线介质。上述介质中的任何介质的组合也包括在计算机可读传输介质的范围中。
示出了包括计算机1102的实施本公开的各个方面的示例性环境1100,并且计算机1102包括处理设备1104、系统存储器1106和系统总线1108。系统总线1108将包括系统存储器1106(不限于此)的系统组件连接至处理设备1104。处理设备1104可以是各种商业处理器中的预定处理器。双处理器或其他多处理器架构也可以用作处理设备1104。
系统总线1108可以是可以使用存储器总线、外围设备总线和各种商用总线架构中的任一种额外互连至本地总线的若干类型的总线结构中的任一种。系统存储器1106包括只读存储器(ROM)1110和随机存取存储器(RAM)1112。基本输入/输出系统(BIOS)存储在包括ROM、EPROM、EEPROM等的非易失性存储器1110中,并且BIOS包括基本例程,该基本例程有助于在诸如启动的时间在计算机1102中的组件之间传输信息。RAM 1112还可以包括高速RAM,高速RAM包括用于高速缓存数据的静态RAM等。
计算机1102还包括内部硬盘驱动器(HDD)1114(例如,EIDE和SATA,其中内部硬盘驱动器1114也可以为了外部目的而配置在适当的机箱(未示出)中)、磁性软盘驱动器(FDD)1116(例如,用于从移动软盘1118读取或写入移动软盘1118)和光盘驱动器1120(例如,用于读取CD-ROM盘1122或从诸如DVD的其他高容量光学介质读取或写入诸如DVD的其他高容量光学介质)。硬盘驱动器1114、磁盘驱动器1116和光盘驱动器1120可以分别通过硬盘驱动器接口1124、磁盘驱动器接口1126和光盘驱动器接口1128连接至系统总线1108。用于实施外部驱动器的接口1124包括通用串行总线(USB)和IEEE 1394接口技术中的至少一个或两者。
驱动器和与其相关联的计算机可读介质提供数据、数据结构、计算机可执行命令等的非易失性存储。在计算机1102的情况下,驱动器和介质对应于以适当的数字格式存储预定数据。在计算机可读介质的描述中,提到了诸如HDD、移动磁盘和CD或DVD的移动光学介质,但是本领域技术人员将充分理解的是,诸如zip驱动器、磁带盒、闪存卡、盒式磁带等的计算机可读的其他类型的介质也可以在示例性操作环境中使用,此外,预定介质可以包括用于执行本公开的方法的计算机可执行命令。
包括操作系统1130、一个或多个应用1132、其他程序模块1134和程序数据1136的多个程序模块可以存储在驱动器和RAM 1112中。操作系统、应用程序、模块和/或数据中的全部或部分也可以由RAM 1112缓存。可以充分理解的是,本公开可以在商业上可用的各种操作系统或操作系统的组合中实施。
用户可以通过一个或多个有线/无线输入设备(例如,诸如键盘1138和鼠标1140的指向设备)在计算机1102中输入命令和信息。其他输入设备(未示出)可以包括麦克风、IR遥控器、操纵杆、游戏手柄、手写笔、触摸屏等。这些和其他输入设备通常通过连接至系统总线1108的输入设备接口1142而连接至处理设备1104,但是可以通过包括并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等的其他接口连接。
监控器1144或其他类型的显示设备也通过诸如视频适配器1146等的接口连接至系统总线1108。除了监控器1144之外,计算机通常还包括扬声器、打印机和其他外围输出设备(未示出)。
计算机1102可以通过使用通过有线和/或无线通信至包括远程计算机1148的一个或多个远程计算机的逻辑连接而在联网环境中操作。远程计算机1148可以是工作站、计算设备计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他通用网络节点,并且通常包括关于计算机1102描述的多个组件或所有组件,但是仅示出了存储器存储设备1150用于简要描述。所示的逻辑连接包括至局域网(LAN)1152和/或更大网络(例如,广域网(WAN)1154)的有线/无线连接。LAN和WAN网络环境是办公室和公司中的一般环境并且促进诸如内联网的企业范围的计算机网络,并且所有这些都可以连接至例如互联网的全球计算机网络。
当计算机1102用于LAN网络环境时,计算机1102通过有线和/或无线通信网络接口或适配器1156连接至本地网络1152。适配器1156可以促进与LAN 1152的有线或无线通信,并且LAN 1152还包括安装在其中以便与无线适配器1156通信的无线接入点。当计算机1102在WAN联网环境中使用时,计算机1102可以包括调制解调器1158或具有配置诸如至WAN1154上的通信计算设备的连接或通过互联网的连接的通过WAN的通信的其他构件。可以是内部或外部以及有线或无线设备的调制解调器1158通过串行端口接口1142连接至系统总线1108。在联网环境中,可以在远程存储器/存储设备1150中存储关于计算机1102描述的程序模块或其一些。将充分知晓的是,所示的网络连接是示例性的,并且可以使用配置计算机之间的通信链路的其他构件。
计算机1102执行与由无线通信布置和操作的预定无线设备或实体(例如,打印机、扫描仪、台式机和/或便携式计算机、便携式数据助理(PDA)、通信卫星、与无线可检测标签相关联的预定设备或场所,以及电话)通信的操作。这至少包括无线保真(Wi-Fi)和蓝牙无线技术。因此,通信可以是类似于现有技术中的网络的预定义结构,或者仅是至少两个设备之间的自组织通信。
Wi-Fi使得无需有线电缆即可连接至互联网等。Wi-Fi是诸如例如蜂窝电话的设备使得计算机在室内或室外(即,基站的通信范围内的任何地方)传输或接收数据的无线技术。Wi-Fi网络使用称为IEEE 802.11(a、b、g等)的无线技术,以提供安全、可靠和高速的无线连接。Wi-Fi可用来将计算机彼此连接或将计算机连接至互联网和有线网络(使用IEEE802.3或以太网)。例如,Wi-Fi网络可以在未许可的2.4和5GHz无线频带中以11Mbps(802.11a)或54Mbps(802.11b)的数据速率操作,或者在包括两个频带(双频带)的产品中操作。
本领域技术人员将理解,可以通过使用各种不同的预定技术和技巧来表达信息和信号。例如,在以上描述中可以参考的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或者其预定组合表示。
本领域技术人员可以理解,结合本文公开的示例性实施例描述的各种示例性逻辑块、模块、处理器、构件、电路和算法步骤可以通过电子硬件、各种类型的程序或设计代码(为了便于描述,在此,称为“软件”)或所有这些的组合实施。为了清楚地描述硬件和软件的互操作性,上面已经结合其功能一般性地描述了各种示例性组件、块、模块、电路和步骤。功能是作为硬件还是软件实施取决于对特定应用程序和整个系统给定的设计限制。本公开的本领域技术人员可以针对每个特定应用实施通过各种方法描述的功能,但是不应被分析为实施确定脱离本公开的范围。
本文呈现的各种示例性实施例可以使用方法、装置或标准编程和/或工程技术实施为制造物品。术语“制造物品”包括由预定计算机可读设备可访问的计算机程序、载体或介质。这里,介质可以包括存储介质和传输介质。例如,计算机可读存储介质包括磁存储设备(例如,硬盘、软盘、磁条等)、光盘(例如,CD、DVD等)、智能卡和闪存设备(例如,EEPROM、卡、条、键驱动器等),但不限于此。此外,本文呈现的各种存储介质包括用于存储信息的一个或多个设备和/或其他机器可读介质。此外,传输介质包括无线信道和能够传递命令和/或数据的各种其他介质,但不限于此。
应当理解,所呈现的过程中的步骤的特定顺序或层级结构是示例性访问的一个示例。应当理解,可以基于设计优先级重新布置本公开范围内的过程中的步骤的特定顺序或层级结构。所附方法权利要求以样本顺序提供各种步骤的元素,但并不意味着方法权利要求限于所呈现的特定顺序或层级结构。
提供对所呈现的实施例的描述,使得本公开的本领域技术人员使用或实施本公开。对于本领域技术人员来说,示例性实施例的各种修改是显而易见的,并且在不脱离本公开的范围的情况下,本文定义的一般原理可以应用于其他示例性实施例。因此,本公开不限于本文呈现的示例性实施例,而是应当在与本文给出的原理和新特征一致的最宽范围内进行分析。
本领域技术人员将理解,可以通过使用各种不同的预定技术和技巧来表达信息和信号。例如,在以上描述中可以参考的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其预定组合表示。
本领域技术人员可以理解,结合本文公开的示例性实施例描述的各种示例性逻辑块、模块、处理器、构件、电路和算法步骤可以通过电子硬件、各种类型的程序或设计代码(为了便于描述,在此,称为“软件”)或所有这些的组合实施。为了清楚地描述硬件和软件的互操作性,上面已经结合其功能一般性地描述了各种示例性组件、块、模块、电路和步骤。功能是作为硬件还是软件实施取决于对特定应用程序和整个系统给定的设计限制。本公开的本领域技术人员可以针对每个特定应用实施通过各种方法描述的功能,但是不应被分析为实施确定脱离本公开的范围。
本文呈现的各种示例性实施例可以使用方法、装置或标准编程和/或工程技术实施为制造物品。术语“制造物品”包括由预定计算机可读设备可访问的计算机程序、载体或介质。这里,介质可以包括存储介质和传输介质。例如,计算机可读存储介质包括磁存储设备(例如,硬盘、软盘、磁条等)、光盘(例如,CD、DVD等)、智能卡和闪存设备(例如,EEPROM、卡、条、键驱动器等),但不限于此。此外,本文呈现的各种存储介质包括用于存储信息的一个或多个设备和/或其他机器可读介质。此外,传输介质包括无线信道和能够传递命令和/或数据的各种其他介质,但不限于此。
应当理解,所呈现的过程中的步骤的特定顺序或层级结构是示例性访问的一个示例。应当理解,可以基于设计优先级重新布置本公开范围内的过程中的步骤的特定顺序或层级结构。所附方法权利要求以样本顺序提供各种步骤的元素,但并不意味着方法权利要求限于所呈现的特定顺序或层级结构。
提供对所呈现的实施例的描述,使得本公开的本领域技术人员使用或实施本公开。对于本领域技术人员来说,示例性实施例的各种修改是显而易见的,并且在不脱离本公开的范围的情况下,本文定义的一般原理可以应用于其他示例性实施例。因此,本公开不限于本文呈现的示例性实施例,而是应当在与本文给出的原理和新特征一致的最宽范围内进行分析。
Claims (15)
1.一种计算机可读存储介质,存储有计算机程序,其中,当所述计算机程序由一个或多个处理器执行时,所述计算机程序执行用于增强数据的搜索性能的操作,所述操作包括:
设置用于搜索目标索引键的索引搜索的遍历时间戳;
沿从索引树的根节点连接至叶节点的链路搜索所述索引树;
将在所述索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中;以及
基于所述遍历时间戳和所述索引时间戳确定是否改变所述目标索引键的搜索路径,
其中,所述基于所述遍历时间戳和所述索引时间戳确定是否改变所述目标索引键的搜索路径包括:当所述遍历时间戳小于搜索节点的索引时间戳时,基于所述搜索节点的内容确定是否改变所述目标索引键的搜索路径,
所述当所述遍历时间戳小于搜索节点的索引时间戳时,基于所述搜索节点的内容确定是否改变所述目标索引键的搜索路径包括:基于包括能够包括在所述搜索节点中的索引键的最小值和最大值的至少一个信息的所述搜索节点的界限信息和所述目标索引键确定所述目标索引键的搜索路径是否需要改变,
所述基于包括能够包括在所述搜索节点中的索引键的最小值和最大值的至少一个信息的所述搜索节点的界限信息和所述目标索引键确定所述目标索引键的搜索路径是否需要改变包括:
当所述目标索引键的值落入所述界限信息中时,确定保持所述目标索引键的搜索路径;以及
当所述目标索引键的值不落入所述界限信息中时,确定改变所述目标索引键的搜索路径。
2.如权利要求1所述的计算机可读存储介质,其中,为所述索引树中包括的每个节点分配所述索引时间戳,并基于关于每个节点被修改的时间的信息生成所述索引时间戳。
3.如权利要求1所述的计算机可读存储介质,其中,所述将在所述索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中包括:
将在所述根节点、所述枝节点和所述叶节点中的至少一个中读取的索引时间戳与每个节点标识进行匹配,并将匹配的索引时间戳和节点标识写入所述时间戳表中。
4.如权利要求1所述的计算机可读存储介质,其中,所述将在所述索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中包括:
将从当前搜索节点直到在所述索引搜索中读取的搜索节点中的预定数量的先前搜索节点的索引时间戳写入所述时间戳表中。
5.如权利要求4所述的计算机可读存储介质,其中,所述将在所述索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中还包括:
基于预定准则,删除写入所述时间戳表中的一个或多个索引时间戳。
6.如权利要求1所述的计算机可读存储介质,其中,基于所述遍历时间戳和所述索引时间戳确定是否改变所述目标索引键的搜索路径包括:
当所述遍历时间戳等于或大于所述搜索节点的索引时间戳时,确定保持所述目标索引键的搜索路径;以及
当所述遍历时间戳小于所述搜索节点的索引时间戳时,确定改变所述目标索引键的搜索路径。
7.如权利要求1所述的计算机可读存储介质,其中,所述当所述遍历时间戳小于所述搜索节点的索引时间戳时,基于所述搜索节点的内容确定是否改变所述目标索引键的搜索路径还包括:
当确定保持所述目标索引键的搜索路径时,基于当前搜索节点的索引时间戳更新所述遍历时间戳。
8.如权利要求1所述的计算机可读存储介质,还包括:
当确定改变所述目标索引键的搜索路径时,更新所述遍历时间戳。
9.如权利要求8所述的计算机可读存储介质,其中,所述更新所述遍历时间戳包括:
基于比较所述遍历时间戳和所述搜索节点的索引时间戳时的时间信息更新所述遍历时间戳,或者基于索引搜索线程开始读取重搜索的开始节点时的时间信息更新所述遍历时间戳。
10.如权利要求1所述的计算机可读存储介质,还包括:
至少部分地基于所述时间戳表确定重搜索的开始节点。
11.如权利要求10所述的计算机可读存储介质,其中,所述至少部分地基于所述时间戳表确定所述重搜索的开始节点包括:
确定写入所述时间戳表中的每个先前搜索节点在搜索后是否改变,以及
将先前搜索节点中在搜索后不改变的先前搜索节点中的一个确定为所述重搜索的开始节点。
12.如权利要求11所述的计算机可读存储介质,其中,所述确定写入所述时间戳表中的每个先前搜索节点在搜索后是否改变包括:
通过比较写入所述时间戳表的先前搜索节点的每个索引时间戳和在所述重搜索的时间处读取的每个先前搜索节点的索引时间戳来确定所述先前搜索节点在搜索后是否改变。
13.如权利要求11所述的计算机可读存储介质,其中,所述将先前搜索节点中在搜索后不改变的先前搜索节点中的一个确定为所述重搜索的开始节点包括:
将搜索后不改变的先前搜索节点中的当前搜索节点的最近节点确定为所述重搜索的开始节点。
14.一种用于增强数据的搜索性能的方法,所述方法包括:
设置用于搜索目标索引键的索引搜索的遍历时间戳;
沿从索引树的根节点连接至叶节点的链路搜索所述索引树;
将在所述索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中;以及
基于所述遍历时间戳和所述索引时间戳确定是否改变所述目标索引键的搜索路径,
其中,所述基于所述遍历时间戳和所述索引时间戳确定是否改变所述目标索引键的搜索路径包括:当所述遍历时间戳小于搜索节点的索引时间戳时,基于所述搜索节点的内容确定是否改变所述目标索引键的搜索路径,
所述当所述遍历时间戳小于搜索节点的索引时间戳时,基于所述搜索节点的内容确定是否改变所述目标索引键的搜索路径包括:基于包括能够包括在所述搜索节点中的索引键的最小值和最大值的至少一个信息的所述搜索节点的界限信息和所述目标索引键确定所述目标索引键的搜索路径是否需要改变,
所述基于包括能够包括在所述搜索节点中的索引键的最小值和最大值的至少一个信息的所述搜索节点的界限信息和所述目标索引键确定所述目标索引键的搜索路径是否需要改变包括:
当所述目标索引键的值落入所述界限信息中时,确定保持所述目标索引键的搜索路径;以及
当所述目标索引键的值不落入所述界限信息中时,确定改变所述目标索引键的搜索路径。
15.一种用于增强数据的搜索性能的计算设备,所述计算设备包括:
处理器,包括一个或多个核心;以及
存储器,
其中,所述处理器:
设置用于搜索目标索引键的索引搜索的遍历时间戳,
沿从索引树的根节点连接至叶节点的链路搜索所述索引树,
将所述索引搜索中读取的根节点、枝节点和叶节点的至少一个索引时间戳写入时间戳表中,以及
基于所述遍历时间戳和所述索引时间戳确定是否改变所述目标索引键的搜索路径,
其中,所述基于所述遍历时间戳和所述索引时间戳确定是否改变所述目标索引键的搜索路径包括:当所述遍历时间戳小于搜索节点的索引时间戳时,基于所述搜索节点的内容确定是否改变所述目标索引键的搜索路径,
所述当所述遍历时间戳小于搜索节点的索引时间戳时,基于所述搜索节点的内容确定是否改变所述目标索引键的搜索路径包括:基于包括能够包括在所述搜索节点中的索引键的最小值和最大值的至少一个信息的所述搜索节点的界限信息和所述目标索引键确定所述目标索引键的搜索路径是否需要改变,
所述基于包括能够包括在所述搜索节点中的索引键的最小值和最大值的至少一个信息的所述搜索节点的界限信息和所述目标索引键确定所述目标索引键的搜索路径是否需要改变包括:
当所述目标索引键的值落入所述界限信息中时,确定保持所述目标索引键的搜索路径;以及
当所述目标索引键的值不落入所述界限信息中时,确定改变所述目标索引键的搜索路径。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0014308 | 2019-02-07 | ||
KR1020190014308A KR102195836B1 (ko) | 2019-02-07 | 2019-02-07 | 인덱스 관리 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538724A CN111538724A (zh) | 2020-08-14 |
CN111538724B true CN111538724B (zh) | 2023-12-01 |
Family
ID=71946057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910322165.3A Active CN111538724B (zh) | 2019-02-07 | 2019-04-22 | 管理索引的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11269956B2 (zh) |
KR (1) | KR102195836B1 (zh) |
CN (1) | CN111538724B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11392585B2 (en) | 2019-09-26 | 2022-07-19 | Palantir Technologies Inc. | Functions for path traversals from seed input to output |
US11720466B1 (en) * | 2020-04-09 | 2023-08-08 | Palantir Technologies Inc. | Interactive graph generation for computation analysis |
US11263195B2 (en) * | 2020-05-11 | 2022-03-01 | Servicenow, Inc. | Text-based search of tree-structured tables |
US11194790B1 (en) * | 2020-05-21 | 2021-12-07 | Atlassian Pty Ltd. | Client write event sequencing system in a federated database platform |
CN112597152B (zh) * | 2020-12-04 | 2022-08-23 | 国创移动能源创新中心(江苏)有限公司 | 基于跳跃表的带特征的时序数据的索引方法、索引装置 |
CN113328959B (zh) * | 2021-04-13 | 2022-05-27 | 新华三信息安全技术有限公司 | 一种报文转发方法、装置、电子设备及存储介质 |
CN113392089B (zh) * | 2021-06-25 | 2023-02-24 | 瀚高基础软件股份有限公司 | 一种数据库索引优化方法及可读存储介质 |
CN116342123B (zh) * | 2023-05-30 | 2023-08-18 | 国网汇通金财(北京)信息科技有限公司 | 一种硬件钱包的数据读取的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5446887A (en) * | 1993-09-17 | 1995-08-29 | Microsoft Corporation | Optimal reorganization of a B-tree |
CN1462004A (zh) * | 2002-05-31 | 2003-12-17 | 思科技术公司 | 用于产生和使用改进的树形位图数据结构的方法和装置 |
CN102207955A (zh) * | 2008-06-05 | 2011-10-05 | 国际商业机器公司 | 使用加权搜索树的基于上下文的安全策略评估 |
WO2015030645A1 (en) * | 2013-08-29 | 2015-03-05 | Telefonaktiebolaget L M Ericsson (Publ) | Methods, computer program, computer program product and indexing systems for indexing or updating index |
CN104834654A (zh) * | 2014-02-10 | 2015-08-12 | 株式会社特博睿 | 使用树形索引搜索节点的方法和装置 |
CN105830039A (zh) * | 2013-12-17 | 2016-08-03 | 日本电气株式会社 | 写入信息存储设备、方法和记录介质 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903888A (en) | 1997-02-28 | 1999-05-11 | Oracle Corporation | Method and apparatus for using incompatible types of indexes to process a single query |
US6278992B1 (en) | 1997-03-19 | 2001-08-21 | John Andrew Curtis | Search engine using indexing method for storing and retrieving data |
KR100289331B1 (ko) * | 1998-10-27 | 2001-05-02 | 정선종 | 고차원 색인 구조의 동시성 제어 방법 |
KR100484138B1 (ko) * | 2002-05-08 | 2005-04-18 | 삼성전자주식회사 | 관계형 데이터베이스에서 정규 경로식 질의를 처리하는xml 인덱싱 방법과 자료구조 |
JP3938096B2 (ja) | 2003-04-24 | 2007-06-27 | 日本電気株式会社 | インデックス作成装置、インデックス作成方法、および、インデックス作成プログラム |
US7120637B2 (en) | 2003-05-30 | 2006-10-10 | Microsoft Corporation | Positional access using a b-tree |
US7761474B2 (en) * | 2004-06-30 | 2010-07-20 | Sap Ag | Indexing stored data |
US20070174309A1 (en) | 2006-01-18 | 2007-07-26 | Pettovello Primo M | Mtreeini: intermediate nodes and indexes |
JP4514771B2 (ja) * | 2007-05-18 | 2010-07-28 | 株式会社エスグランツ | カップルドノードツリーの最長一致/最短一致検索装置、検索方法及びプログラム |
US9626398B2 (en) | 2012-05-22 | 2017-04-18 | Hewlett Packard Enterprise Development Lp | Tree data structure |
US9442942B2 (en) * | 2011-10-20 | 2016-09-13 | Nokia Technologies Oy | Method, apparatus and computer program product for dynamic and visual object search interface |
KR101377923B1 (ko) * | 2011-12-08 | 2014-03-24 | 한양대학교 에리카산학협력단 | 지연 갱신을 수행하는 b-트리를 사용하여 플래시 메모리 내에 데이터를 저장하는 장치 및 방법 |
US9165035B2 (en) * | 2012-05-10 | 2015-10-20 | Microsoft Technology Licensing, Llc | Differential dataflow |
US8868531B2 (en) * | 2012-09-10 | 2014-10-21 | Apple Inc. | Concurrent access methods for tree data structures |
US10095807B2 (en) * | 2015-04-28 | 2018-10-09 | Microsoft Technology Licensing, Llc | Linked data processor for database storage |
US10217287B2 (en) * | 2016-12-24 | 2019-02-26 | Motorola Solutions, Inc. | Method and apparatus for generating a search pattern for an incident scene |
KR101947503B1 (ko) * | 2017-03-20 | 2019-02-14 | 주식회사 티맥스데이터 | 트리 인덱스를 제공하는 컴퓨팅 장치 |
US10176217B1 (en) * | 2017-07-06 | 2019-01-08 | Palantir Technologies, Inc. | Dynamically performing data processing in a data pipeline system |
US10769132B1 (en) * | 2017-12-12 | 2020-09-08 | Juniper Networks, Inc. | Efficient storage and retrieval of time series data |
-
2019
- 2019-02-07 KR KR1020190014308A patent/KR102195836B1/ko active IP Right Grant
- 2019-04-02 US US16/373,124 patent/US11269956B2/en active Active
- 2019-04-22 CN CN201910322165.3A patent/CN111538724B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5446887A (en) * | 1993-09-17 | 1995-08-29 | Microsoft Corporation | Optimal reorganization of a B-tree |
CN1462004A (zh) * | 2002-05-31 | 2003-12-17 | 思科技术公司 | 用于产生和使用改进的树形位图数据结构的方法和装置 |
CN102207955A (zh) * | 2008-06-05 | 2011-10-05 | 国际商业机器公司 | 使用加权搜索树的基于上下文的安全策略评估 |
WO2015030645A1 (en) * | 2013-08-29 | 2015-03-05 | Telefonaktiebolaget L M Ericsson (Publ) | Methods, computer program, computer program product and indexing systems for indexing or updating index |
CN105830039A (zh) * | 2013-12-17 | 2016-08-03 | 日本电气株式会社 | 写入信息存储设备、方法和记录介质 |
CN104834654A (zh) * | 2014-02-10 | 2015-08-12 | 株式会社特博睿 | 使用树形索引搜索节点的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
KR20200097050A (ko) | 2020-08-18 |
US11269956B2 (en) | 2022-03-08 |
KR102195836B1 (ko) | 2020-12-28 |
CN111538724A (zh) | 2020-08-14 |
US20200257732A1 (en) | 2020-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111538724B (zh) | 管理索引的方法 | |
US11468027B2 (en) | Method and apparatus for providing efficient indexing and computer program included in computer readable medium therefor | |
US9672235B2 (en) | Method and system for dynamically partitioning very large database indices on write-once tables | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
US9495398B2 (en) | Index for hybrid database | |
CN106991102A (zh) | 倒排索引中键值对的处理方法及处理系统 | |
US11151138B2 (en) | Computer program for processing a pivot query | |
US10558636B2 (en) | Index page with latch-free access | |
US11003540B2 (en) | Method, server, and computer readable medium for index recovery using index redo log | |
KR101747262B1 (ko) | 동적인 알고리즘 변경을 통하여 쿼리 처리 시간을 축소시키기 위한 방법, 장치 및 컴퓨터-판독가능 매체 | |
WO2007087754A1 (fr) | Procédé et système de référençage basé sur une bibliothèque d'objets | |
KR102254951B1 (ko) | 조인 트리를 생성하는 컴퓨터 프로그램 및 서버 | |
KR102057055B1 (ko) | 인덱스 관리 방법 | |
US20180025058A1 (en) | Technique for processing query in database management system | |
KR102127785B1 (ko) | 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램 | |
KR20170122151A (ko) | 동적인 알고리즘 변경을 통하여 쿼리 처리 시간을 축소시키기 위한 방법, 장치 및 컴퓨터-판독가능 매체 | |
KR102280443B1 (ko) | 셀렉트 쿼리 처리 시 네트워크 비용 절감을 위해 멀티 캐시를 구비한 클라우드 데이터베이스 시스템 | |
KR102233944B1 (ko) | 데이터베이스 관리를 위한 컴퓨터 프로그램 | |
KR20200136858A (ko) | 인덱스 관리 방법 | |
KR102214697B1 (ko) | 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램 | |
KR20200001575A (ko) | 인덱스 관리 방법 | |
KR20210033880A (ko) | 인덱스 리두 로그를 이용한 인덱스 복구를 위한 방법, 서버 및 컴퓨터 판독가능 저장매체 | |
CN110716899A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220718 Address after: Gyeonggi Do, South Korea Applicant after: Temetibello Co.,Ltd. Address before: Gyeonggi Do, South Korea Applicant before: TmaxData Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |