CN107004013B - 用于使用基于硬件的处理来提供分布式树遍历的系统和方法 - Google Patents
用于使用基于硬件的处理来提供分布式树遍历的系统和方法 Download PDFInfo
- Publication number
- CN107004013B CN107004013B CN201580064313.6A CN201580064313A CN107004013B CN 107004013 B CN107004013 B CN 107004013B CN 201580064313 A CN201580064313 A CN 201580064313A CN 107004013 B CN107004013 B CN 107004013B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- query
- value
- response
- 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
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/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- 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/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/24552—Database cache management
-
- 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
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
主机CPU运行数据库管理系统(DBMS)和硬件协同处理器通过在主机CPU请求树型数据结构时分配高速缓存中的可重用存储器以存储树型数据结构的部分来加速对树型数据结构的遍历。硬件协同处理器以对主机CPU透明的方式管理高速缓存的树型数据结构。位于主机CPU处或者分离计算设备处的驱动器可以提供在主机CPU与硬件协同处理器之间的接口,因此减少在主机CPU与硬件协同处理器之间的通信。
Description
背景技术
如今的数据库系统必须对大数据库执行许多查询,例如Google必须每天回答约十亿个搜索查询。为了保持响应时间低,必须尽可能快地执行查询。查询是在保持数据库的数据库管理系统与依赖于在这样的数据库中存储的数据的数据库应用之间的接口。因此,加速查询执行增加数据库系统的性能,并且数据库应用将从降低的响应时间受益。
专用和可重配置硬件加速器与常规的基于软件的处理器相比具有改进数据库查询、尤其是计算的吞吐量、延时和功率要求的长久历史。然而同时,这些类型的设备的专用性质也一般地意味着它们仅能够执行相对简单的功能,从而要求基于软件的处理完成任务或者至少充当备用处理。该分布式处理可能导致在两个系统之间的同步和/或一致性问题。
现场可编程门阵列(FPGA)和其他硬件逻辑设备(例如专用集成电路(ASIC)和复杂可编程门阵列(CPGA))已经用来加速对树数据结构的存储和遍历。当前解决方案采用两种一般方式之一:通过内容可寻址存储器结构的高速缓存和用于树的FPGA加速器,在FPGA加速器中,在专用寄存器传送级(RTL)逻辑中布置树节点。第一类解决方案具有两个缺点。首先,它通常地以显式高速缓存策略为特征,其中主机(例如数据库管理系统(DBMS))必须做出关于在高速缓存中存储/更新项目的决策。第二,最经常使用的数据结构没有提高很高存储器效率。第二类解决方案也具有两个主要缺点。首先,由于在硬件中直接地表示整个树,所以它们消耗大量片上存储器/逻辑。第二,实施的树结构很刚性从而使对树结构的动态更新难以快速地和经济地处置。
发明内容
本公开描述用于在硬件中高速缓存和处理树式数据结构的系统和方法。
一种示例系统包括数据库管理系统(DBMS)、驱动器和逻辑设备。至少部分地在由一个或者多个处理器可执行的计算机可读介质中体现DBMS和驱动器。DBMS接收用于在一个或者多个树型关系数据库数据结构中存储的信息的查询,并且响应于接收到查询,向驱动器发送查询。驱动器响应于从DBMS接收到查询,向至少部分地在硬件中体现的逻辑设备发送修改的查询。逻辑设备包括高速缓存存储器,高速缓存存储器用于存储与关联于DBMS的一个或者多个树型关系数据库数据结构之一的至少部分关联的树型关系数据库数据结构。逻辑设备响应于接收到修改的查询来至少基于修改的查询来遍历在高速缓存存储器中存储的树型关系数据库数据结构的节点,取回位于每个遍历的节点处的数据的部分;并且向驱动器发送取回的数据的部分。
驱动器响应于接收到数据的部分,基于在关联于DBMS的树型关系数据库数据结构处存储的数据证实数据的部分,并且向DBMS发送证实的数据的部分。向逻辑设备重新发送数据的未证实或者不一致的部分。驱动器在查找表(LUT)内存储从硬件逻辑设备接收的数据的部分作为节点并且使用LUT以答复从DBMS接收的查询。
在其他示例中,逻辑设备在与逻辑设备关联的高速缓存存储器当前不包括与关联于接收的查询的节点关联的页面时,至少基于分配规则,为与接收的查询、节点数据和路径信息关联的节点分配在高速缓存存储器内的页面。逻辑设备至少基于接收所接收的查询、节点数据和路径信息依次地分配页面。高速缓存的页面包括存储值的值位置和存储一个或者多个指针的指针位置。指针位置与在高速缓存存储器内的值位置在逻辑上分离。
提供本发明内容以用简化的形式介绍以下在具体实施方式中进一步描述的概念的选择。本发明内容未旨在于标识要求保护的主题的关键或者必要特征,它也未旨在于在确定要求保护的主题的范围时用作辅助。例如术语“技术”可以如以上和贯穿本文而描述的上下文所允许的那样指代一个或者多个系统、一个或者多个方法、计算机可读指令、一个或者多个模块、算法、硬件逻辑和/或一个或者多个操作。
附图说明
参照附图描述具体实施方式。在各图中,附图标记的最左数字标识该附图标记首次出现的图。不同图中的相同附图标记指示相似或者相同项目。
图1是描绘用于实施数据库管理系统的示例环境的图。
图2是描绘示例硬件逻辑设备的框图,该硬件逻辑设备执行支持数据库管理系统的读取/写入操作。
图3-1和3-2示出如下框图,这些框图描绘由数据库管理系统使用的示例数据库管理软件部件和驱动器软件部件。
图4是描绘数据库管理系统的软件和硬件部件的示例操作的流程图。
图5-1和5-2示出如下流程图,该流程图描绘在数据库管理系统的部件之间的示例交互操作。
图6是示出用于执行对在硬件逻辑设备处高速缓存的树型数据结构的遍历的示例方式的流程图。
图7-1和7-2示出在数据库管理系统的软件部件处验证结果的流程图。
图8-1和8-2用图形图示在逻辑设备与软件部件之间的交互。
图9用图形图示在逻辑设备处出现的存储器分配。
图10示出由逻辑设备产生的示例结果。
具体实施方式
概述
这里描述的示例提供如下系统的构造,该系统具有主机中央处理单元(CPU)(例如运行数据库管理系统(DBMS))和硬件协同处理器,该硬件协同处理器可以执行与高速缓存的树型数据结构有关的操作,高速缓存的树型数据结构与由DBMS维持的完整树型数据结构关联。
硬件协同处理器可以通过在DBMS提供树型数据结构请求时,分配高速缓存中的可重用存储器以存储树型数据结构的部分,来加速对树型数据结构的遍历。硬件协同处理器可以用对DBMS透明的方式管理高速缓存的树型数据结构。驱动器模块也可以位于与DBMS分离的计算设备中或者可以位于与DBMS相同的计算设备处。驱动器模块可以提供在DBMS与硬件协同处理器之间的接口,因此减少在DBMS与硬件协同处理器之间的通信。
驱动器模块可以基于DBMS向驱动器模块发送的与树型数据结构关联的节点级查询提供树级查询。驱动器模块可以向硬件协同处理器发送树级查询。硬件协同处理器可以基于由驱动器模块提供的树级查询向驱动器返回树级结果。驱动器模块可以接收和验证从硬件协同处理器发送的结果。从硬件协同处理器发送的结果可以包括与硬件协同处理器在遍历期间基于由驱动器模块发送的接收的树级查询和树标识信息找到的、高速缓存的树型数据结构的每个节点关联的值。驱动器模块可以向DBMS发送验证的结果。与高速缓存的树型数据结构的节点中的一个或者多个节点关联的不一致结果可以使后续通信出现在硬件协同处理器与驱动器模块之间以便更新高速缓存的树型数据结构。
驱动器模块和硬件协同处理器可以是用于在普通CPU上运行的关系数据库的附加件。主机CPU包括数据库管理系统(DBMS),该DBMS实施可以在关系数据库中视为现有技术的功能、诸如但不限于结构化查询语言(SQL)解析、查询规划以及向和从客户端的数据移动。
硬件协同处理器可以充当加速器。有用于与DBMS一起使用加速器的多个原因。树遍历加速、索引查找和运行中数据压缩是一些可能性。另一个是安全性。例如Cipherbase是集成硬件逻辑平台作为受信任计算模块的SQL服务器的增强版本。数据可以由云客户加密、上传到服务器中,然后仅在FPGA内被解密和处理以维持对于黑客或者对于云服务的系统管理员的保密性。DBMS具有用于以加密形式存储和管理数据,然后依赖于FPGA对这些加密的值执行操作的能力。作为结果,在数据库中对加密的值的索引树遍历可以依赖于FPGA用于执行在查询中包括的查找关键字与每个树节点的内容之间的比较。
示例系统可以在硬件协同处理器的存储器中实施高速缓存,该高速缓存可以对于在主机CPU处的DBMS透明并且无需修改关联的数据库管理引擎的代码。另外,硬件协同处理器可以对树型数据结构的硬件高速缓存的部分执行急切(eager)遍历。树型数据结构的高速缓存的部分与相对于DBMS而存储的完整树型数据结构关联。可以在硬件协同处理器从驱动器模块接收用于在根节点中的关键字查找的请求时发起急切遍历。硬件协同处理器针对被高速缓存的树的尽可能多的部分急切地遍历(在DBMS具体地请求高速缓存的树之前)高速缓存的树。在向驱动器返回这些部分或者完整结果时,驱动器可以在恒定时间中验证这些结果与后续DMBS请求的一致性。可以如同之前一样传输和处理树的没有高速缓存的部分,其中硬件协同处理器自动地、透明地高速缓存新部分。
参照图1-10进一步描述各种示例、场景和方面。
示例环境
图1图示用于实施快速和安全系统100的示例环境,该系统用于访问在一个或者多个树型关系数据库数据结构内的数据。示例系统100包括经由一个或者多个网络106与一个或者多个用户计算设备104、诸如膝上型计算机104(1)、智能电话104(2)、个人数据助理(PDA)104(3)或者其他计算设备104(N)信号通信的一个或者多个数据库管理系统(DBMS)单元102(1)-(N)。DBMS单元102(1)-(N)可以提供对由用户的计算设备104(1)-(N)提供的查询的响应。对查询的响应可以包括在与DBMS单元102(1)-(N)本地或者在跨网络106分布的某个或者某些其他数据存储设备存储的一个或者多个树型关系数据库数据结构内包括的数据。
在一些示例中,DBMS单元102(1)-(N)可以包括在软件中体现的部件和主要地在硬件中体现的其他部件作为DBMS框架108的部分。在软件中体现的部件可以包括可以与在数据存储设备112和驱动器116内存储的树型关系数据库数据结构通信的DBMS 110。DBMS框架108可以包括在硬件中体现的部件、诸如逻辑设备114。逻辑设备114可以视为DBMS 110的协同处理器。DBMS 110可以从一个或者多个用户计算设备104或者从某个其他来源、诸如其他软件部件接收请求在数据存储设备112处存储的树型关系数据库数据结构中存储的信息的查询。DBMS 110可以经由驱动器116向逻辑设备114转发与查询关联的信息。逻辑设备114可以生成对从驱动器116接收的信息的响应并且向驱动器116返回响应。
DBMS 110可以包括用于从用户的计算设备104接收查询的部件。可以在跨一个或者多个网络106分布的各种/不同设备上实施DBMS 110、驱动器116和逻辑设备114。一个或者多个网络106可以包括公共网络(诸如因特网)、私有网络(诸如机构和/或个人内部网)、或者私有和公共网络的某个组合。一个或者多个网络106也可以包括任何类型的有线和/或无线网络、包括但不限于局域网(LAN)、广域网(WAN)、卫星网络、有线网络、Wi-Fi网络、WiMax网络、移动通信网络(例如3G、4G等等)或者其任何组合。一个或者多个网络106可以利用通信协议、包括基于分组和/或基于数据报的协议、诸如网际协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)或者其他类型的协议。另外,一个或者多个网络106也可以包括支持网络通信和/或形成用于网络的硬件基础的多个设备、诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、主干设备等。
在示例场景中,一个或者多个DBMS单元102可以包括在群集或者其他分组配置中操作以共享资源、平衡负荷、增加性能、提供故障切换支持或者冗余性或者出于其他目的的一个或者多个计算设备。一个或者多个DBMS单元102可以属于多种设备类别或者分类、诸如传统服务器型设备、桌面型计算机型设备、移动型设备、专用型设备、嵌入型设备和/或可穿戴型设备。因此,虽然图示为桌面型计算机,但是一个或者多个DBMS单元102可以包括多样多种设备类型而不限于特定设备类型。一个或者多个DBMS单元102可以代表、但是不限于桌面型计算机、服务器计算机、web服务器计算机、个人计算机、移动计算机、膝上型计算机、平板计算机、可穿戴计算机、植入的计算设备、远程通信设备、车载计算机、启用网络的电视、瘦客户端、终端、个人数据助理(PDA)、游戏控制台、游戏设备、工作站、媒体播放器、个人视频记录器(PVR)、机顶盒、相机、用于在计算设备、装置或者任何其他种类的计算设备中包括的集成部件。
一个或者多个DBMS单元102可以包括任何计算设备、该计算设备具有诸如经由总线122可操作地连接到计算机可读介质120的一个或者多个处理单元118,该总线在一些实例中可以包括系统总线、数据总线、地址总线、PCI总线、小型PCI总线和任何多种本地、外围和/或独立总线中的一个或者多个总线。一个或者多个DBMS单元102可以包括可以可操作地连接到总线122的输入/输出(I/O)接口126。在计算机可读介质上存储的可执行指令可以例如包括操作系统122、框架以及由一个或者多个处理单元可加载和可执行的其他模块、程序或者应用。
如图2中所示,在一些示例中,逻辑设备114可以包括一个或者多个逻辑部件202和逻辑存储器阵列204。逻辑存储器阵列204可以与逻辑设备114、诸如动态存取存储器(DRAM)或者类似的存储器设备分离。逻辑部件202可以包括高速缓存部件206和树遍历部件208。部件206和208可以与DBMS 110通信和/或与逻辑阵列204执行输入/输出(I/O)(例如读取/写入操作)。高速缓存部件206可以将与从DBMS 110接收的查询关联的数据分配到在逻辑阵列204内的存储器位置中。高速缓存部件206可以分配用于节点的页面以便至少产生在数据存储设备112处存储的树型关系数据库数据结构的部分副本或者索引。高速缓存部件206可以用允许重用存储的节点的方式分配页面,因此实现更高效使用逻辑阵列204。
树遍历部件208可以基于从DBMS 110接收的查询信息遍历在逻辑阵列204中存储的树型关系数据库数据结构。由高速缓存部件206和树遍历部件208执行的操作可以对位于DBMS 110处的核心数据库管理部件透明。以下将更具体描述这些操作。
备选地或者附加地,一个或者多个硬件逻辑设备112充当加速器。例如而没有限制,可以使用的示例硬件逻辑设备类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等。例如加速器可以代表混合设备、诸如来自XILINX或者的包括在FPGA结构中嵌入的CPU的CPLD。
FPGA可以是被设计为由客户或者设计者在制造之后配置的集成电路——因此“现场可编程”。FPGA配置一般地可以使用与用于专用集成电路(ASIC)的语言相似的硬件描述语言(HDL)来指定(电路图先前用来指定该配置,因为它们曾经用于ASIC,但是这越来越罕见)。
现代FPGA具有大型逻辑门和RAM块资源以实施复杂数字计算。FPGA设计采用很快I/O和双向数据总线。FPGA可以用来实施ASIC可以执行的任何逻辑功能。
FPGA包含称为“逻辑块”的可编程逻辑部件和可重配置的互连的分级,这些互连允许块被“接线在一起”——有些像可以在(许多)不同配置中相互接线的许多(可改变)逻辑门。逻辑块可以被配置为执行复杂组合功能或者仅为简单逻辑门如AND和XOR。在多数FPGA中,逻辑块也包括存储器元件,这些存储器元件可以是简单触发器或者更完整的存储器块。
图3-1图示DBMS 110的示例软件部件。可以在存储器设备302内存储DBMS 110的软件部件作为计算机可读介质。软件部件可以至少包括数据库管理部件304。图3-2图示驱动器116的示例软件部件。可以在存储器设备306内存储驱动器116的软件部件作为计算机可读介质。软件部件可以至少包括驱动器部件308。在一些示例中,数据库管理部件304和驱动器部件308可以与体现为硬件加速器的协同处理器交互。驱动器部件308可以提供在数据库管理部件304与逻辑设备114之间的接口。驱动器部件308可以使由高速缓存部件206和树遍历部件208执行的操作对数据库管理部件304透明。驱动器部件308也可以执行对从逻辑设备114接收的结果的验证。以下将更具体描述驱动器部件308的操作。
在一些示例中,在一开始执行时,逻辑设备114可以从DBMS部件404接收可以经过驱动器部件308传递的请求。请求可以包括搜索关键字和在基于树型关系数据结构的树型数据结构(即节点级请求)的索引中存储的值。没有传输元数据、诸如子指针、记录ID等。来自硬件的预计的响应可以是包括两个数的索引响应,这两个数代表在用于高速缓存的树型数据结构的节点的值数组中的第一和最后项的索引,这些索引等于搜索关键字(更准确地,第一个值等于或者大于关键字并且第一个值严格地大于关键字)。可以使用其他边界变化。DBMS 110可以基于从硬件接收的索引最终地向逻辑设备114发起从节点到节点遍历高速缓存的树型数据结构的多个请求。
每当用于节点的值由逻辑设备114接收时,高速缓存部件206可以高速缓存如果没有已经高速缓存的这些值。可以在逐页面基础上分配用于每个节点的空间,其中每个树节点对应于一个和仅一个存储器页面。可以将每个页面划分成两个逻辑区域:一个用于值数组而另一个用于存储指向存储器中的其他页面的指针,因此构建树结构。划分的两个逻辑区域允许就地更新值而没有触及它们的对应指针。存储器分配策略可以如下:在存储器中依次地分配页面并且仅在将在高速缓存中存储的节点没有已经具有页面的情况下。由于页面的分割性质,从未擦除指针,从而即使曾经具有“子节点”的节点变成“叶节点”,针对节点再次变成非叶节点的将来情况,仍然可以维持树的底层结构。这保证甚至没有丢失分配的存储器。
高速缓存的树中的每个节点可以由它的相对于根的位置唯一地标识,该位置被表达为一系列的数,该一系列的数代表在树中的通向节点的每级处取得的指针的次序。该一系列的数形成从根到任何内部或者叶节点的唯一路径或者路径信息并且可以由驱动器部件308追加到传入请求。可以用两种方式推导该路径信息。第一方式可以是直接地从驱动器部件308。在第二方式中,驱动器部件308可以与DMBS 110通信以基于用来遍历关联(索引)树的一个或者多个算法的知识推断路径信息。也就是说,可以标识任何传入请求作为对先前请求的后续。这可以是新遍历请求,在该情况下,该请求始于树的根或者可以是基于由逻辑设备114给出的在先结果对内部节点的遍历(从每个节点跟随的指针是返回的下界和上界索引的直接结果)。
路径信息可以由逻辑设备114用于两个目的。第一,路径信息允许逻辑设备114从为关键字查找处理而接收的节点构建恰当树。第二,路径信息可以实现在逻辑设备114中对树的独立遍历。
可以用以下方式在逻辑设备114中重建正确树结构。在传输索引的第一节点(即根)之后,DBMS单元108可以传输来自树中的第二级的“子”节点。在逻辑设备114分配用于该节点的页面之后,可以更新父节点中的对应指针以引用该页面。伴随第二级节点的路径信息可以允许逻辑设备114更新正确指针。在下一操作时,在DBMS单元108可以传输在第三级上的节点时,逻辑设备114将已经在高速缓存中具有先前两个节点,并且它插入新节点作为正确第二级节点的正确子节点。也就是说,逻辑设备114可以使用路径信息以遍历页面直至找到当前节点的位置。在从DBMS单元108发送的节点是“叶”时,可以标记逻辑设备114中的引用指针以示出它指向叶。在节点位于结束于已经分配的页面中的路径上的情况下,可以用新节点直接地更新页面的内容,因此无需分配附加存储器。出于分配目的而对树路径的遍历无需逻辑设备114读取全页面;逻辑设备114需要取回每页仅一个指针。可以在页面中固定指针的位置,并且作为路径信息的部分而提供的次序给出指针的确切存储器位置。因此,可以通过随机访问用代数计算的存储器位置来找到这些指针。
在备选存储器分配策略中,使用两个页面大小。可以向大页面分配足够空间以存储值和指针,而小页面可以具有仅用于值的空间。可以存储叶节点而没有浪费空间用于指针。这确实使存储器分配过程有一点复杂化。在先前是“叶”的节点变成内部节点的情况下,页面将太小而无法存储值和指针二者。因此可以分配新的大页面用于该节点并且可以更新小页面的父节点中的指针以指向新分配的大页面。为了不丢失已经分配的小页面,可以设置新分配的大页面的第一子指针以引用它。这样它将最终地用于存储叶节点而甚至没有丢失存储器。
第二方式是逻辑设备114(即树遍历部件208)使用路径信息以自行导航树。可以在逻辑设备114接收用于在根节点中查找关键字的请求时发起急切遍历。它不仅将执行该关键字搜索,而且将尽可能远地沿高速缓存的树下降,从而生成用于对相同关键字的将来请求的结果。为了导航高速缓存的树,树遍历部件208可以使用在每个节点的有界索引和在页面中的指针;在确定关键字在节点中的定位之后,树遍历部件208可以在下界树遍历部件208取回它的子节点(基于指针)、将它的页面带入临时存储并且对它执行关键字查找。一旦它找到该节点中的边界,它可以输出该信息并且继续更深直至遇到未分配的指针或者到达叶节点。
在一些示例中,指针可以携带附加元数据以在知道结果将对于DBMS单元108不正确/没有用时、例如在节点从作为内部节点迁移成为树中的叶时停止急切遍历。由于叶节点是内部节点,所以它的在高速缓存中的页面将具有(指向分配的空间或者可能为空的)指针数组。如果将跟随这些指针,则结果将按照定义不正确,因为没有子节点存在。为了避免该问题,指针可以携带一些元数据、诸如指向的页面中的数组的长度和/或子节点是否为叶。这样,即使先前分配树型数据结构比数据存储设备112中的当前树型数据结构更深,在更新节点为叶之后,它的在它的父节点中的指针仍然可以让它的叶标志激活。没有删除当前叶中的指针,从而如果/在节点再次变成内部节点时,可以再次使用已经为它的“子节点”而分配的空间。换而言之,高速缓存中的树的物理结构和在它中的数据的逻辑结构可以不同——这又可以在内容上与数据存储设备112中的节点的版本不同。
急切遍历可以向驱动器部件308传达部分结果并且以这样的方式可以在恒定时间内验证这些结果的正确性。高速缓存中的树型结构可以与由DBMS单元108维护的树型结构显著地不同。由于高速缓存的透明和松耦合性质,DBMS单元108可以已经插入、删除或者以别的方式改变索引的内容而没有更新逻辑设备114。因此,急切遍历的结果可能不正确(或者至少与树的当前版本不一致)。
在完成急切遍历之后,假设以排序方式组织树中的数据,逻辑设备114除了原始请求(根节点)的结果之外还可以向驱动器部件308返回以下信息:对于遍历的每个节点,它将返回数组中的两个索引(以标记数组中的等于关键字的范围)和来自数组的四个实际值。这些值是在实际索引处的两个值、紧接在第一个值之前的值(如果存在)和紧接地跟随最后值的值(如果存在)。这六个值足以让驱动器部件308确定由逻辑设备114为给定的节点而提供的回答对于该节点的当前状态是否正确。如果返回的值与在与DBMS单元108关联的树型数据结构中的相同位置中的值相同,则可能尚未在由逻辑设备114返回的范围之前或者之后插入与关键字相等的项目。因此,即使已经同时更新节点的部分(即高速缓存中的版本实际地过时),仍然可以安全地接受部分结果。在该情况下,仅在数据的与搜索关键字不相关的部分需要改变。
驱动器部件308可以在用节点的路径信息和搜索关键字标注的查找表(LUT)中存储来自逻辑设备114的响应。在请求从数据库管理部件304到达时,驱动器部件308可以首先验证它是否已经在LUT中具有用于请求的预先生成的响应。如果LUT有响应被存储,则驱动器部件308可以确定该响应是否正确(即没有与数据的DBMS单元的版本冲突)。如果响应正确,则数据库管理单元304将接收该响应而没有去往逻辑设备114。否则,驱动器部件308将向逻辑设备114中继请求,该逻辑设备然后将对更新的节点执行查找。作为该操作的部分,逻辑设备114将隐式地高速缓存节点(借助路径信息)。
可以对于向根节点的请求而发起急切遍历,因此沿着路径的未匹配不会在逻辑设备114上触发用于该路径的进一步工作。另外,如果索引的工作集合很大或者如果驱动器想要向逻辑设备114人工地提供关于高速缓存哪些节点(例如仅树的最高级)的提示,则逻辑设备114未必地必须高速缓存新节点。
在逻辑设备114中使用急切遍历不仅减少在逻辑设备114与DBMS单元108之间的预计的通信次数,它也可以减少在二者之间发送的数据的总数量。
示例过程
图示过程500-700作为在代表可以在硬件、软件或者其组合中实施的操作序列的逻辑流程图中的块的集合。在软件的上下文中,块代表在一个或者多个计算机可读存储介质上存储的在由一个或者多个处理器执行时执行记载的操作的计算机可执行指令。计算机可执行指令可以包括执行特定功能或者实施特定抽象数据类型的例程、程序、对象、部件、数据结构等。对操作进行描述的顺序未旨在于被解释为限制,并且可以按照任何顺序和/或并行组合描述的块中的任何数目的块以实施所示过程。这里描述的过程中的一个或者多个过程可以独立地或者相对地按照任何顺序、无论是串行还是并行出现。
图4图示由与图1的系统100相似的系统执行的高级过程400。首先在块402,DBMS(即软件不受信任机器、诸如数据库管理部件304)可以向逻辑设备(例如硬件受信任机器、处理元件、诸如逻辑设备114)发送用于与树型关系数据库数据结构关联的数据或者数据索引的请求。以下关于图5-1更具体描述由DBMS发送的请求。在块404,响应于接收到请求,逻辑设备可以返回结果并且在硬件高速缓存中存储可以在关联于DBMS的数据存储设备处完全存储的原始树型数据结构的至少部分。以下关于图5-1、5-2、6、7-1和7-2更具体描述在块402和404执行的过程的细节。
图5-1和5-2图示用于从DBMS向逻辑设备发送查询并且分配在与逻辑设备关联的高速缓存处出现的存储器的过程500。首先,在块502,数据库管理部件可以从用户的计算设备(例如用户的计算设备104)接收请求。在块504,DBMS可以将用户请求转换成有可以向驱动器部件(例如驱动器部件308)发送的根节点数据的查询。驱动器部件可以由执行DBMS的相同处理设备可执行或者可以由不同逻辑设备可执行。
在块506,驱动器可以创建可以基于根节点数据的根标识符,然后驱动器可以向逻辑设备发送接收的查询和根标识符。根标识符是路径信息的部分。与每个查询一起向逻辑设备发送路径信息。路径信息可以由DBMS创建或者由驱动器推断。
在判决块508,逻辑设备确定是否已经在逻辑设备处高速缓存与接收的根标识符关联的根节点。
在块510,如果在逻辑设备处没有高速缓存根节点,则逻辑设备可以向驱动器发送空响应。响应可以是空响应,因为尚未高速缓存根节点。
在块512,响应于从逻辑设备接收空响应,驱动器可以将查询与实际节点数据和路径信息一起重新发送到逻辑设备。在块514,逻辑设备可以基于新发送的数据而不是任何先前高速缓存的数据提供回答。
在判决块516,逻辑设备可以确定是否将高速缓存根节点数据。许多因素可以用来判决是否将高速缓存根节点数据。例如可以在逻辑设备处确定与查询关联的根节点是否为这样的不频繁地访问的节点使得逻辑设备可以判决不浪费高速缓存空间用于该节点。
在块518,如果确定将不高速缓存根节点,则逻辑设备可以向驱动器通知不高速缓存根节点。向驱动器通知不高速缓存根节点可以是可选的,因为可能除了允许驱动器在下次提供相同查询时仅发送节点数据之外无需向驱动器提供该信息。
如果在判决块516确定将高速缓存根节点,则在块520,逻辑设备可以分配用于存储接收的节点数据和空指针的集合的页面。在逻辑设备处高速缓存节点包括分配在逻辑设备的存储阵列(即高速缓存)内的页面。页面可以包括各自具有预设大小的两个在逻辑上分离的区段。一个区段可以用于存储节点的数据值。另一区段可以用于存储用于存储的数据值的指针。
在块522,DBMS可以向驱动器发送查询、树I级节点数据和可选地发送路径信息。路径信息可以由驱动器推断,因为驱动器知道1)它先前已经从DBMS接收到什么树根以及2)逻辑设备认为匹配搜索关键字的在根内的哪个次序。在块524,驱动器可以向逻辑设备发送查询、路径信息和接收的I级节点数据。在块526,逻辑设备可以分配用于I级节点数据的页面。该分配可以与根节点分配相似。由于依次地分配页面以及由于一旦写入,在页面内的指针几乎从未改变(并且如果它们需要改变,则添加新指针取代它们,并且旧指针通过将它们写入到另一页面中来保留),所以如果关联节点在父节点先前已经去除指向该节点的指针的情况下需要重新激活或者需要更新,则该分配可以允许重用页面。
在块528,逻辑设备可以基于接收的节点数据和/或路径信息提供答案。在块530,可以更新父节点页面中的指针以指向刚才分配的子页面。
然后,在块532,重复块522-530直至刚才分配的节点是叶节点,然后可以标记父节点中的指针以标识子节点作为叶节点。
如果在判决块508已经在逻辑设备处高速缓存根节点,则过程600可以执行。在块602,逻辑设备可以使用从驱动器发送的查询和根ID来遍历高速缓存的树数据结构。在块604,逻辑设备可以在树的当前访问的节点中找到与查询关联的目标数据和边界数据。在块606,逻辑设备可以确定找到的目标和边界数据的次序定位。可以临时地保存目标数据、边界数据和次序定位信息。在块608,逻辑设备取回用于目标数据的一个或者多个指针。在该指针处的数据将变成新“当前节点”。在块610,可以重复块604-608直至已经到达叶节点或者有未分配的指针的节点。在已经到达叶节点或者有未分配的指针的节点之后,然后在块612,逻辑设备可以向驱动器发送目标数据、边界数据和次序定位信息。
图7-1和7-2图示由驱动器执行的过程700。在块702,驱动器可以从逻辑设备接收结果。在块704,对于与节点关联的驱动器从逻辑设备接收的每个信息,驱动器可以在比较它们与在与关联于DBMS的树数据结构的相同节点中的相同次序位置处存储的信息时确定结果是否有效。驱动器可以在恒定时间内直接地查找和比较从逻辑设备接收的两个目标数据和两个边界数据值与在由DBMS提供的节点中的目标数据和边界数据值(使用次序信息)。在判决块706,驱动器可以确定产生的比较是否为有效结果或者无效结果。如果该比较确定结果无效,换而言之,在由DBMS提供的节点内的相同次序定位处的数据没有与由逻辑设备高速缓存的数据有利地(favorably)比较,则在块708,驱动器可以向逻辑设备发送查询、节点数据和路径信息用于更新比较测试失败的节点和任何关联子节点数据。这之所以出现是因为如果节点比较失败,则该节点的所有子节点也将不一致。接着,在块710,逻辑设备可以基于节点数据提供回答并且可以判决是否高速缓存节点数据,然后DBMS移向树中的下一级。
如果在判决块706,比较结果指示节点数据有效,则在块712,驱动器可以在用与存储的节点关联的路径信息和关联的查询目标标注的查找表(LUT)中存储结果。接着,在块714,驱动器可以向DBMS发送与根节点请求关联的结果。在块716,DBMS向驱动器发送用于在树的下一级中的节点的请求。在判决块718,驱动器可以确定是否已经在驱动器的LUT中存储与用于下一节点的请求关联的结果。如果没有在驱动器的LUT中存储结果,则该过程可以返回到块708。然而,如果已经在驱动器的LUT中存储与请求关联的结果,则在块702,驱动器可以向DBMS发送在LUT中存储的结果。该过程将通过返回到块716来继续直至DBMS获得用于叶节点的结果或者直至它已经在树中遍历足够深以获得用于处理客户端查询的必需信息。
图8-1和8-2用图形图示在包括软件部件(DBMS 802和驱动器804)和硬件部件(例如逻辑设备806)的系统800内出现的通信。在DBMS 802示出树型数据结构808。DBMS 802已经从外侧来源接收用于可以最终地在树型数据结构808的叶节点处存储的信息的查询。响应于接收到的查询,DBMS 802可以向驱动器804发送用于树型数据结构808的根节点812的节点级查询。如果驱动器804没有在LUT中存储的与提供的搜索关键字和根节点812关联的结果,则驱动器804在箭头814可以向逻辑设备806转发查询和根节点ID。逻辑设备806然后可以执行对先前已经在与逻辑设备806关联的高速缓存存储器中存储的树型数据结构810的急切遍历。逻辑设备806在树型数据结构810的根节点816处开始向I级节点(箭头818)到II级的根节点(箭头820)的遍历。
在逻辑设备806已经遍历如它可以在树型数据结构810内所去往的尽可能远之后,无论那是去往叶节点还是有空指针的节点,逻辑设备806都可以向驱动器804发送与遍历的节点关联的目标和边界信息822。驱动器804可以在LUT中存储从逻辑设备806接收的信息822。在来自DBMS的请求(例如箭头824-1和826)之后,仅在接收的信息通过有效性校验的情况下,驱动器804然后可以发送在LUT中存储的信息(例如箭头824-2)。如果接收的信息没有通过有效性校验、诸如由在与树的II级节点826关联的索引信息处的“X”示出,则驱动器可以向逻辑设备806转发原始查询、节点数据信息和路径信息(箭头830)。逻辑设备806然后可以基于更新的值提供新回答,然后在它的用于II级节点832的关联高速缓存中存储或者更新值。
图9图示节点页面如何由逻辑设备分配给高速缓存树型数据结构900。高速缓存树型数据结构900包括在0级处的根节点902、在I级处的三个节点904、906和908以及在II级处的两个节点910和912。
在根节点902的信息在逻辑设备被接收时,可以在高速缓存存储器914内的第一位置处分配第一页面902-1。可以基于用于关联节点的查询由逻辑设备接收的顺序在高速缓存存储器914内分配页面。页面包括值区段916和指针逐段918。在所示示例中,节点查询被接收的顺序如下:根节点902由树I级第一节点904、树I级第二节点906、树I级第三节点908、树II级第二节点912和最终由树II级第一节点910跟随。因此,在高速缓存存储器914内分配的页面的顺序镜像节点查询的到达顺序。如与它们的类似编号的节点关联的那样,这是页面902-1、页面904-1、页面906-1、页面908-1、页面912-1、页面910-1。注意逻辑设备在树节点页面被驱动器查询时分配它们并且在请求对树节点页面的计算时可以高速缓存或者可以不高速缓它们。另外,逻辑设备仅可以高速缓存被查询的那些页面。因此,存储器中的树的物理布局和树的内容可以与在DBMS中存储的树显著地不同。
在一些示例中,工作量中的非对称可以提供一些益处。首先,如果访问在树中在彼此附近的关键字组(即它们具有共同部分路径),则它们可以从相互的更新中受益。例如沿着从用于一个关键字的根到叶的全路径更新所有节点的成本可以在共享他们的路径的那些部分的所有其他关键字之中被摊销(amortize)。也就是说,在更新的节点中包含的任何其他关键字可以被更新(因此可以潜在地从急切遍历中受益),即使以前从未查找它们。
其中非对称(skew)可以有益于高速缓存性能的另一情况是在对于树出现更新,但是没有修改最频繁地访问的关键字时。这里,虽然高速缓存中的数据过时,但是由于次序和数据加上边界值结果校验而可以容许该陈旧。也就是说,即使已经在数据库中更新节点,但是只要尚未触及对于给定(频繁)的查询而言相关的具体关键字,逻辑设备就可以提供正确结果。
可以利用非对称的最后方式是由于树节点页面仅在它们被访问作为查询的部分时被高速缓存,所以非对称的工作量可以在高速缓存中仅放置整个树的部分。
图10图示加密的数据1000的部分串及其对应明文值1002。如果由用户计算设备生成的原始查询具有明文值6,则用户的计算设备将已经加密原始查询并且向DBMS发送它用于处理。在一些示例中,加密在用于执行用于DBMS的处理功能的硬件逻辑设备处出现。因此,由于逻辑设备是硬件设备,所以可以保证在树型数据结构中存储的信息的安全性。DBMS可以包括加密的值、但不是明文值的树型数据结构。硬件逻辑设备可以能够高速缓存加密的树型数据结构的至少部分,但是然后将能够解密与该数据结构有关的具体的请求的信息。因此,在该示例中,硬件逻辑设备可以返回次序值2、4,这些次序值代表与在原始查询中包括的明文值关联的加密的数据的左和右边界1004、1006。为了证实加密的数据,硬件逻辑设备也可以发送在1004、1006处的加密的值和位置与在原始查询中包括的明文值关联的加密的数据相邻的在1008、1010处的值。
示例条款
A:一种方法,包括:在至少部分地在由一个或者多个处理器可执行的计算机可读介质中体现的数据库管理系统(DBMS)处,响应于接收到查询,向驱动器发送查询;以及在至少部分地在由一个或者多个处理器可执行的计算机可读介质中体现的驱动器处,响应于从DBMS接收到查询,向硬件逻辑设备发送修改的查询。
B:如A段记载的方法,还包括:在硬件逻辑设备处,响应于接收到修改的查询,至少基于修改的查询来遍历先前在与硬件逻辑设备关联的存储器中高速缓存的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的至少部分;以及向驱动器发送取回的数据的部分。
C:如A或者B段记载的方法,还包括:在驱动器处,响应于从硬件逻辑设备接收数据的部分,至少基于在关联于DBMS的一个或者多个树型关系数据库数据结构之一处存储的关联的数据证实数据的部分;以及响应于证实数据的部分,向DBMS发送证实的数据的部分。
D:如A、B或者C段记载的方法,其中查询是至少包括查询值和位于关联节点处的数据的节点级查询,其中修改的查询是包括查询值和节点标识符的树级请求。
E:如A、B、C或者D段记载的方法,还包括:在驱动器处,响应于从硬件逻辑设备接收到数据的部分,确定数据的接收的部分是否不一致;以及响应于确定接收的部分不一致,向硬件逻辑设备发送查询、节点数据和路径信息;以及在硬件逻辑设备处,响应于接收到查询、节点数据和路径信息,执行以下各项中的至少一项:分配用于与节点数据关联的节点的页面;或者更新在与节点数据关联的先前高速缓存的页面中包括的数据值或者指针信息中的至少一个。
F:如A、B、C、D或者E段记载的方法,还包括:在硬件逻辑设备处,响应于接收到查询、节点数据和路径信息,在与硬件逻辑设备关联的高速缓存存储器当前不包括与接收的查询关联的节点关联的页面时,至少基于分配策略为与接收的查询、节点数据和路径信息关联的节点依次地分配在高速缓存存储器内的页面。
G:如A、B、C、D、E或者F段记载的方法,还包括:在驱动器处,尝试证实从硬件逻辑设备发送的数据的部分;响应于不能证实数据的部分,向硬件逻辑设备发送查询、节点数据和路径信息;以及在硬件逻辑设备处,响应于接收到查询、节点数据和路径信息,更新在与接收的节点数据或者接收的路径信息中的至少一个关联的先前高速缓存的页面中包括的数据值或者指针信息中的至少一个。
H:如A、B、C、D、E、F或者G段记载的方法,还包括:在驱动器处,在查找表(LUT)内存储从硬件逻辑设备接收的数据的部分;响应于从DBMS接收到查询,确定在LUT内存储的信息是否与接收的查询关联;以及基于确定在LUT内存储的信息与接收的查询关联向DBMS发送在LUT内存储的信息。
I:如A、B、C、D、E、F、G或者H段记载的方法,还包括:在硬件逻辑设备处,响应于接收到修改的查询,至少基于修改的查询来遍历先前在与硬件逻辑设备关联的存储器中高速缓存的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的至少部分;以及向驱动器发送取回的数据的部分,其中位于遍历的节点处的取回的数据的部分包括以下各项中的至少一项:与节点标识符关联的第一数据值和第一数据值在关联的高速缓存的页面内的数据值的次序定位,以及位于相对于第一数据值的预定义的位置处的至少一个第二数据值和第二数据值在高速缓存的页面内的次序定位。
J:如A、B、C、D、E、F、G或者I段记载的方法,还包括:在硬件逻辑设备处,响应于接收到修改的查询,至少基于修改的查询来遍历先前在与硬件逻辑设备关联的存储器中高速缓存的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的至少部分;以及向驱动器发送取回的数据的部分,其中位于遍历的节点处的取回的数据的部分包括以下各项中的至少一项:与节点标识符关联的第一数据值和第一数据值在关联的高速缓存的页面内的数据值的次序定位,以及位于相对于第一数据值的预定义的位置处的至少一个第二数据值和第二数据值在高速缓存的页面内的次序定位,其中第一数据值包括与节点标识符关联的下和上界值,其中第二值包括位于比下界值小至少一的次序定位的值和位于比上界值大至少一的次序定位的值。
K:如A-J段记载的方法,其中页面包括值位置和指针位置,指针位置与值位置在逻辑上分离。
L:一种用于执行在A-K段中的任一段中描述的方法的设备。
M:一种系统,包括:至少部分地在由一个或者多个处理器可执行的计算机可读介质中体现的数据库管理系统(DBMS),其中DBMS响应于接收到查询来发送查询;以及至少部分地在由一个或者多个处理器可执行的计算机可读介质中体现的驱动器,其中驱动器响应于从DBMS接收到查询来向逻辑设备发送修改的查询。
N:如M记载的系统,还包括:至少部分地在硬件中体现的逻辑设备,包括高速缓存存储器,高速缓存存储器用于存储与关联于DBMS的一个或者多个树型关系数据库数据结构之一的至少部分关联的树型关系数据库数据结构,逻辑设备响应于接收到修改的查询,至少基于修改的查询来遍历在高速缓存存储器中存储的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的部分;以及向驱动器发送取回的数据的部分。
O:如M或者N段记载的系统,其中驱动器响应于接收到数据的部分至少基于在关联于DBMS的树型关系数据库数据结构之一处存储的数据证实数据的部分;以及向DBMS发送证实的数据的部分。
P:如M、N或者O段记载的系统,其中查询是至少包括查询值和位于关联节点处的数据的节点级查询,其中修改的查询是包括查询值和节点标识符的树级请求。
Q:如M、N、O或者P段记载的系统,其中驱动器响应于从逻辑设备接收数据的部分,确定数据的接收的部分是否不一致;以及响应于确定数据的接收的部分不一致,向逻辑设备发送查询、节点数据和路径信息,以及其中逻辑设备响应于接收到查询、节点数据和路径信息来执行以下各项中的至少一项:分配用于与节点数据关联的节点的页面;或者更新在与节点数据关联的先前高速缓存的页面中包括的数据值或者指针信息中的至少一个。
R:如M、N、O、P或者Q段记载的系统,其中逻辑设备响应于接收到查询、节点数据和路径信息,在与逻辑设备关联的高速缓存存储器当前不包括与接收的查询关联的节点关联的页面时,至少基于分配规则为与接收的查询、节点数据和路径信息关联的节点依次地分配在高速缓存存储器内的页面。
S:如M、N、O、P、Q或者S段记载的系统,其中驱动器尝试证实从逻辑设备发送的数据的部分;以及响应于不能证实数据的部分,向逻辑设备发送查询、节点数据和路径信息,其中逻辑设备响应于接收到查询、节点数据,更新在与接收的节点数据或者接收的路径信息中的至少一个关联的先前高速缓存的页面中包括的数据值或者指针信息中的至少一个。
T:如M、N、O、P、Q、R或者S段记载的系统,其中驱动器在查找表(LUT)内存储从逻辑设备接收的数据的部分作为节点;响应于从DBMS接收到查询,确定在LUT内存储的信息是否与接收的查询关联;以及至少基于确定在LUT内存储的信息与接收的查询关联向DBMS发送在LUT内存储的信息。
U:如M、N、O、P、Q、R、S或者T段记载的系统,其中逻辑设备响应于接收到修改的查询,至少基于修改的查询来遍历先前在与逻辑设备关联的存储器中高速缓存的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的至少部分;以及向驱动器发送取回的数据的部分,其中位于遍历的节点处的取回的数据的部分包括以下各项中的至少一项:与节点标识符关联的第一数据值和第一数据值在关联的高速缓存的页面内的次序定位,以及位于相对于第一数据值的预定义的位置处的至少一个第二数据值和第二数据值在高速缓存的页面内的次序定位。
V:如M、N、O、P、Q、R、S或者T段记载的系统,其中逻辑设备响应于接收到修改的查询,至少基于修改的查询来遍历先前在与逻辑设备关联的存储器中高速缓存的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的至少部分;以及向驱动器发送取回的数据的部分,其中第一数据值包括与节点标识符关联的下和上界值,以及其中第二值在下界值不是页面中的第一个值时包括位于比下界值小至少一的次序定位处的值,和在上界值不是页面中的最后值时包括位于比上界值大至少一的次序定位处的值。
W:如M、N、O、P、Q、R、S、T、U或者V段记载的系统,其中页面包括值位置和指针位置,指针位置与值位置在逻辑上分离。
X:一种系统,包括:在至少部分地在由一个或者多个处理器可执行的计算机可读介质中体现的数据库管理系统(DBMS)装置,用于响应于接收到查询来发送查询;以及至少部分地在由一个或者多个处理器可执行的计算机可读介质中体现的驱动器装置,用于响应于从DBMS接收到查询来发送修改的查询。
Y:如X段记载的系统,还包括:逻辑装置,用于响应于接收到修改的查询,至少基于修改的查询来遍历先前在与逻辑装置关联的存储器中高速缓存的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的至少部分;以及向驱动器装置发送取回的数据的部分。
Z:如X或者Y段记载的系统,还包括:硬件驱动器装置,响应于从逻辑装置接收到数据的部分,至少基于在与DBMS装置关联的一个或者多个树型关系数据库数据结构之一处存储的关联的数据证实数据的部分;以及响应于证实数据的部分,向DBMS装置发送证实的数据的部分。
AA:如X、Y或者Z段的系统,其中查询是至少包括查询值和位于关联节点处的数据的节点级查询,其中修改的查询是包括查询值和节点标识符的树级请求。
BB:如X、Y、Z或者AA段记载的系统,其中驱动器装置响应于接收到数据的部分来确定数据的接收的部分是否不一致;以及响应于确定接收的部分不一致,发送查询、节点数据和路径信息;以及还包括:逻辑装置,响应于接收到查询、节点数据和路径信息,执行以下各项中的至少一项:分配用于与节点数据关联的节点的页面;或者更新在与节点数据关联的先前高速缓存的页面中包括的数据值或者指针信息中的至少一个。
CC:如X、Y、Z、AA或者BB段记载的系统,还包括:逻辑装置,响应于接收到查询、节点数据和路径信息,在与逻辑装置关联的高速缓存存储器当前不包括与接收的查询关联的节点关联的页面时,至少基于分配规则为与接收的查询、节点数据和路径信息关联的节点依次地分配在高速缓存存储器内的页面。
DD:如X、Y、Z、AA、BB或者CC段记载的系统,其中驱动器装置尝试证实数据的部分;响应于不能证实数据的部分,发送查询、节点数据和路径信息;以及还包括:逻辑装置,响应于接收到查询、节点数据和路径信息,更新在与接收的节点数据或者接收的路径信息中的至少一个关联的先前高速缓存的页面中包括的数据值或者指针信息中的至少一个。
EE:如X、Y、Z、AA、BB、CC或者DD段记载的系统,其中驱动器装置在查找表(LUT)内存储从逻辑设备接收的数据的部分;响应于从DBMS装置接收到查询,确定在LUT内存储的信息是否与接收的查询关联;以及基于确定在LUT内存储的信息与接收的查询关联向DBMS装置发送在LUT内存储的信息。
FF:如X、Y、Z、AA、BB、CC、DD或者EE段记载的系统,还包括:逻辑装置,响应于接收到修改的查询,至少基于修改的查询来遍历先前在与逻辑装置关联的存储器中高速缓存的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的至少部分;以及向驱动器装置发送取回的数据的部分,其中位于遍历的节点处的取回的数据的部分包括以下各项中的至少一项:与节点标识符关联的第一数据值和第一数据值在关联的高速缓存的页面内的数据值的次序定位,以及位于相对于第一数据值的预定义的位置处的至少一个第二数据值和第二数据值在高速缓存的页面内的次序定位。
GG:如X、Y、Z、AA、BB、CC、DD或者EE段记载的系统,还包括:逻辑装置,响应于接收到修改的查询,至少基于修改的查询来遍历先前在与逻辑装置关联的存储器中高速缓存的树型关系数据库数据结构的节点;取回位于每个遍历的节点处的数据的至少部分;以及向驱动器装置发送取回的数据的部分,其中位于遍历的节点处的取回的数据的部分包括以下各项中的至少一项:与节点标识符关联的第一数据值和第一数据值在关联的高速缓存的页面内的数据值的次序定位,以及位于相对于第一数据值的预定义的位置处的至少一个第二数据值和第二数据值在高速缓存的页面内的次序定位,其中第一数据值包括与节点标识符关联的下和上界值,其中第二值包括位于比下界值小至少一的次序定位处的值和位于比上界值大至少一的次序定位处的值。
HH:如X、Y、Z、AA、BB、CC、DD、EE、FF或者GG段记载的系统,其中页面包括值位置和指针位置,指针位置与值位置在逻辑上分离。
结论
虽然已经用结构特征和/或方法动作特有的言语描述了技术,但是将理解所附权利要求未必地限于描述的特征或者动作。实际上,描述特征和动作作为这样的技术的示例实现方式。
在个体块中图示并且参照那些块概括示例过程的操作。图示过程作为块的逻辑流程,这些块中的每个块可以代表可以在硬件、软件或者其组合中实施的一个或者多个操作。在软件的上下文中,操作代表在一个或者多个计算机可读介质上存储的计算机可执行指令,这些计算机可执行指令在由一个或者多个处理器执行时使得一个或者多个处理器能够执行记载的操作。一般而言,计算机可执行指令包括执行特定功能或者实施特定抽象数据类型的例程、程序、对象、模块、部件、数据结构等。对操作进行描述的顺序没有旨在于被解释为限制,并且描述的操作中的任何数目的操作可以按照任何顺序被执行、按照任何顺序被组合、被细分成多个子操作和/或被并行执行以实施描述的过程。描述的过程可以由与一个或者多个设备、诸如一个或者多个内部或者外部CPU或者GPU和/或一件或者多件硬件逻辑、诸如FPGA、DSP或者其他类型的加速器关联的资源执行。
可以在由一个或者多个通用计算机或者处理器可执行的软件代码模块中体现和经由这些软件代码模块全自动化以上描述的方法和过程中的所有方法和过程。可以在任何类型的计算机可读存储介质或者其他计算机存储设备中存储代码模块。可以备选地在专门化的计算机硬件中体现方法中的一些或者所有方法。
在这里描述和/或在附图中描绘的流程图中的任何例程描述、元件或者块应当被理解为潜在地代表代码模块、段或者部分,这些代码模块、段或者部分包括用于在例程中实施具体逻辑功能或者元件的一个或者多个可执行指令。在这里描述的示例的范围内包括备选实现方式,在这些备选实现方式中可以如本领域技术人员将理解的那样,元件或者功能根据涉及到的功能性可以被删除或者不按照示出或讨论的顺序、包括基本上同步地或者按照相反顺序被执行。应当强调可以对以上描述的示例做出许多变化和修改,这些示例的元件将被理解为在其他可接受的示例之中。所有这样的修改和变化旨在于在这里被包括在本公开的范围内并且为所附权利要求所保护。
Claims (20)
1.一种用于使用基于硬件的处理来提供分布式树遍历的系统,包括:
数据库管理系统(DBMS),至少部分地在由一个或者多个硬件处理器可执行的计算机可读介质中被体现,其中所述DBMS响应于接收到外部查询而被配置为发送查询;
驱动器,至少部分地在由一个或者多个硬件处理器可执行的计算机可读介质中被体现,其中所述驱动器响应于从所述DBMS接收到所述查询而被配置为发送修改的查询;以及
逻辑设备,至少部分地在硬件中被体现,所述逻辑设备包括用于存储树型关系数据库数据结构的高速缓存存储器,所述树型关系数据库数据结构与关联于所述DBMS的一个或者多个树型关系数据库数据结构的至少部分关联,所述逻辑设备响应于接收到所述修改的查询而被配置为:
至少基于所述修改的查询来遍历在所述高速缓存存储器中被存储的所述树型关系数据库数据结构的节点;
取回位于每个所遍历的节点处的数据的部分,每个所遍历的节点包括每个所遍历的节点的边界数据;
确定所遍历的节点的所述边界数据的有序位置;
向所述驱动器发送取回的所述数据的部分和所述边界数据的所述有序位置;以及
从所述驱动器接收关于没有通过有效性校验的所遍历的节点的信息,所述有效性校验由所述驱动器使用以下对在所遍历的节点处的取回的所述数据的部分进行:来自所述逻辑设备的所遍历的节点的所述边界数据。
2.根据权利要求1所述的系统,其中遍历在存储器中被先前高速缓存的所述树型关系数据库数据结构的节点包括执行急切遍历。
3.根据权利要求1所述的系统,其中所述驱动器响应于接收到所述数据的部分,
至少基于在关联于所述DBMS的所述树型关系数据库数据结构之一处被存储的数据证实所述数据的所述部分;以及
向所述DBMS发送证实的所述数据的所述部分。
4.根据权利要求1所述的系统,其中所述查询是至少包括查询值和位于关联节点处的数据的节点级查询,其中所述修改的查询是包括所述查询值和节点标识符的树级请求。
5.根据权利要求1所述的系统,其中所述驱动器响应于接收到数据的部分,
确定所述数据的接收的所述部分是否不一致;以及
响应于确定所述数据的接收的所述部分不一致,向所述逻辑设备发送所述查询、节点数据和路径信息,以及
所述逻辑设备响应于接收到所述查询、所述节点数据和所述路径信息来执行以下各项中的至少一项:
分配用于与所述节点数据关联的节点的页面;或者
更新在与所述节点数据关联的先前高速缓存的页面中被包括的数据值或者指针信息中的至少一个。
6.根据权利要求1所述的系统,其中所述逻辑设备响应于接收到所述修改的查询、节点数据和路径信息,
在与所述逻辑设备关联的高速缓存存储器当前不包括与关联于接收的所述修改的查询的节点关联的页面时,至少基于分配规则为与接收的所述修改的查询、所述节点数据和所述路径信息关联的所述节点依次地分配在所述高速缓存存储器内的页面。
7.根据权利要求1所述的系统,其中所述驱动器,
尝试证实从所述逻辑设备发送的数据的部分;以及
响应于不能够证实所述数据的部分,发送所述查询、节点数据和路径信息,以及
其中所述逻辑设备响应于在所述逻辑设备先前发送所述数据的部分之后接收到所述查询、所述节点数据和所述路径信息,更新在与接收的所述节点数据或者接收的所述路径信息中的至少一个关联的所述先前高速缓存的页面中被包括的数据值或者指针信息中的至少一个。
8.根据权利要求1所述的系统,其中所述驱动器,
在查找表(LUT)内存储从所述逻辑设备接收的接收的数据的部分作为节点;
响应于从所述DBMS接收到所述查询,
确定在所述LUT内被存储的信息是否与接收的所述查询关联;以及
至少基于在所述LUT内被存储的所述信息与接收的所述查询关联的确定,向所述DBMS发送在所述LUT内被存储的信息。
9.根据权利要求1所述的系统,其中位于所遍历的节点处的取回的所述数据的部分包括与节点标识符关联的至少一个第一数据值和所述第一数据值在关联的高速缓存的页面内的有序位置,以及位于相对于所述第一数据值的预定义的位置处的至少一个第二数据值和所述第二数据值在所述高速缓存的节点内的有序位置。
10.根据权利要求1所述的系统,其中所述至少一个第一数据值包括与所述节点标识符关联的下界值或者上界值中的至少一个值,并且其中所述至少一个第二值包括位于比所述下界值小至少一的有序位置处的值或者位于比所述上界值大至少一的有序位置处的值中的至少一个值。
11.一种用于使用基于硬件的处理来提供分布式树遍历的方法,包括:
在至少部分地在由一个或者多个硬件处理器可执行的计算机可读介质中被体现的数据库管理系统(DBMS)处,响应于接收到外部查询,向驱动器发送查询;
在至少部分地在由一个或者多个硬件处理器可执行的计算机可读介质中被体现的所述驱动器处,响应于从所述DBMS接收到所述查询,向硬件逻辑设备发送修改的查询;
在所述硬件逻辑设备处,响应于接收到所述修改的查询,
至少基于所述修改的查询来遍历在与所述硬件逻辑设备关联的存储器中被先前高速缓存的树型关系数据库数据结构的节点,所述树型关系数据库数据结构与由所述DBMS维持的完整树型数据结构关联;
取回位于高速缓存的存储器中的每个所遍历的节点处的数据的至少部分,每个所遍历的节点包括每个所遍历的节点的边界数据;
确定所遍历的节点的所述边界数据的有序位置;以及
向所述驱动器发送取回的所述数据的部分和所述边界数据的所述有序位置;以及
在所述驱动器处,使用每个所遍历的节点的所述边界数据对在每个所遍历的节点处的取回的所述数据的部分进行有效性校验,并且响应于所遍历的节点没有通过有效性校验,向所述硬件逻辑设备发送关于没有通过所述有效性校验的所遍历的节点的信息。
12.根据权利要求11所述的方法,其中遍历在存储器中被先前高速缓存的所述树型关系数据库数据结构的节点包括执行急切遍历。
13.根据权利要求11所述的方法,还包括:
在所述驱动器处:
响应于从所述硬件逻辑设备接收到数据的部分,至少基于在关联于所述DBMS的一个或者多个所述树型关系数据库数据结构之一处被存储的关联的数据证实所述数据的所述部分;以及
响应于证实所述数据的所述部分,向所述DBMS发送证实的所述数据的所述部分。
14.根据权利要求11所述的方法,其中所述查询是至少包括查询值和位于关联节点处的数据的节点级查询,其中所述修改的查询是包括所述查询值和节点标识符的树级请求。
15.根据权利要求11所述的方法,还包括:
在所述驱动器处,
响应于从所述硬件逻辑设备接收到数据的部分,确定所述数据的接收的所述部分是否不一致;以及
响应于确定接收的所述部分不一致,向所述硬件逻辑设备发送所述查询、节点数据和路径信息;以及
在所述硬件逻辑设备处,响应于接收到所述查询、所述节点数据和所述路径信息,执行以下各项中的至少一项:
分配用于与所述节点数据关联的节点的页面;或者
更新在与所述节点数据关联的先前高速缓存的页面中被包括的数据值或者指针信息中的至少一个。
16.根据权利要求11所述的方法,还包括:
在所述硬件逻辑设备处,响应于接收到所述修改的查询、节点数据和路径信息,
在与所述硬件逻辑设备关联的高速缓存存储器当前不包括与关联于接收的所述修改的查询的节点关联的页面时,至少基于分配规则为与接收的所述修改的查询、所述节点数据和所述路径信息关联的所述节点依次地分配在所述高速缓存存储器内的页面。
17.根据权利要求11所述的方法,还包括:
在所述驱动器处,
尝试证实从所述硬件逻辑设备发送的数据的部分;以及
响应于不能够证实所述数据的部分,向所述硬件逻辑设备发送所述查询、节点数据和路径信息;以及
在所述硬件逻辑设备处,响应于接收到所述查询、所述节点数据和所述路径信息,并且在所述硬件逻辑设备先前发送所述数据的部分之后,更新在与接收的所述节点数据或者接收的所述路径信息中的至少一个关联的所述先前高速缓存的页面中被包括的数据值或者指针信息中的至少一个。
18.根据权利要求11所述的方法,还包括:
在所述驱动器处,
在查找表(LUT)内存储从所述硬件逻辑设备接收的数据的部分;
响应于从所述DBMS接收到所述查询,
确定在所述LUT内被存储的信息是否与接收的所述查询关联;以及
基于在所述LUT内被存储的信息与接收的所述查询关联的确定,向所述DBMS发送在所述LUT内被存储的所述信息。
19.根据权利要求11所述的方法,其中位于所遍历的节点处的取回的所述数据的部分包括以下各项中的至少一项:与节点标识符关联的第一数据值和所述第一数据值在关联的高速缓存的页面内的所述第一数据值的有序位置,以及位于相对于所述第一数据值的预定义的位置处的至少一个第二数据值和所述第二数据值在所述高速缓存的页面内的有序位置。
20.根据权利要求11所述的方法,其中位于所遍历的节点处的取回的所述数据的部分包括:与节点标识符关联的至少一个第一数据值和所述至少一个第一数据值在关联的高速缓存的页面内的有序位置,以及位于相对于所述至少一个第一数据值的预定义的位置处的至少一个第二数据值和所述至少一个第二数据值在所述高速缓存的页面内的有序位置,并且
其中所述至少一个第一数据值包括以下各项中的至少一项:与所述节点标识符关联的下界值或上界值,其中所述至少一个第二值包括以下各项中的至少一项:位于至少比所述下界值小一的有序位置处的值或位于至少比所述上界值大一的有序位置处的值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/555,275 | 2014-11-26 | ||
US14/555,275 US10572442B2 (en) | 2014-11-26 | 2014-11-26 | Systems and methods for providing distributed tree traversal using hardware-based processing |
PCT/US2015/061715 WO2016085772A1 (en) | 2014-11-26 | 2015-11-20 | Systems and methods for providing distributed tree traversal using hardware-based processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107004013A CN107004013A (zh) | 2017-08-01 |
CN107004013B true CN107004013B (zh) | 2020-12-25 |
Family
ID=54754831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580064313.6A Active CN107004013B (zh) | 2014-11-26 | 2015-11-20 | 用于使用基于硬件的处理来提供分布式树遍历的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10572442B2 (zh) |
EP (1) | EP3224740A1 (zh) |
JP (1) | JP2018502373A (zh) |
CN (1) | CN107004013B (zh) |
BR (1) | BR112017007705A2 (zh) |
RU (1) | RU2017118151A (zh) |
WO (1) | WO2016085772A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10243727B2 (en) * | 2013-10-31 | 2019-03-26 | Ati Technologies Ulc | Method and system for constant time cryptography using a co-processor |
US9990308B2 (en) * | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
US10554384B2 (en) | 2016-03-17 | 2020-02-04 | Microsoft Technology Licensing, Llc | Aggregation of encrypted data |
US10187199B2 (en) * | 2016-09-09 | 2019-01-22 | Microsoft Technology Licensing, Llc | Aggregation based on splayed data |
US10445361B2 (en) * | 2016-12-15 | 2019-10-15 | Microsoft Technology Licensing, Llc | Caching of subgraphs and integration of cached subgraphs into graph query results |
US10242223B2 (en) | 2017-02-27 | 2019-03-26 | Microsoft Technology Licensing, Llc | Access controlled graph query spanning |
US10523428B2 (en) | 2017-11-22 | 2019-12-31 | Advanced Micro Devices, Inc. | Method and apparatus for providing asymmetric cryptographic keys |
US11281648B2 (en) * | 2018-04-11 | 2022-03-22 | Intel Corporation | Technologies for flexible tree-based lookups for network devices |
CN109495541B (zh) * | 2018-10-15 | 2021-04-02 | 上海交通大学 | 基于跨数据中心的云服务工作流调度方法 |
EP3644196B1 (en) * | 2018-10-26 | 2022-05-11 | Tata Consultancy Services Limited | Systems and methods for storing data in an integrated array and linked list based structure |
US11082493B2 (en) * | 2018-11-16 | 2021-08-03 | Arm Limited | Distributed memory system, device and process |
US11514055B2 (en) | 2019-09-13 | 2022-11-29 | Oracle International Corporation | Querying on hybrid formats and storages |
US11132326B1 (en) * | 2020-03-11 | 2021-09-28 | Nvidia Corporation | Techniques to transfer data among hardware devices |
CN111767315B (zh) * | 2020-06-29 | 2023-07-04 | 北京奇艺世纪科技有限公司 | 黑产识别方法、装置、电子设备及存储介质 |
CN113255264B (zh) * | 2021-06-07 | 2021-10-01 | 上海国微思尔芯技术股份有限公司 | 增量分割处理方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5475837A (en) * | 1991-05-29 | 1995-12-12 | Hewlett-Packard Company | Method and system for restructuring a B-Tree for managing data during a node splitting operation |
US5546579A (en) * | 1994-05-02 | 1996-08-13 | International Business Machines Corporation | Page refreshing procedure using two locking granularities to ensure cache coherency in a multisystem database processing environment having a high-speed shared electronic store |
CN1815468A (zh) * | 2005-01-31 | 2006-08-09 | 微软公司 | 非关系型查询语言与关系型数据存储的集成 |
CN101329686A (zh) * | 2008-07-31 | 2008-12-24 | 中国科学院计算技术研究所 | 一种实现网络查询缓存的系统和查询方法 |
CN101339538A (zh) * | 2007-07-04 | 2009-01-07 | 三星电子株式会社 | 使用页结构的数据树存储方法、系统和计算机程序产品 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822749A (en) * | 1994-07-12 | 1998-10-13 | Sybase, Inc. | Database system with methods for improving query performance with cache optimization strategies |
US5842196A (en) * | 1996-04-03 | 1998-11-24 | Sybase, Inc. | Database system with improved methods for updating records |
US6148294A (en) * | 1996-12-20 | 2000-11-14 | Siemens Information And Communication Networks, Inc. | System and method for computer directory updating and presentation based on frequency of access |
US5978789A (en) * | 1997-05-07 | 1999-11-02 | Lucent Technologies Inc. | Efficient hypothetical query evaluation in a database system |
US6052720A (en) * | 1998-05-14 | 2000-04-18 | Sun Microsystems, Inc. | Generic schema for storing configuration information on a server computer |
US6144983A (en) * | 1998-06-09 | 2000-11-07 | Oracle Corporation | Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system |
US20010049747A1 (en) * | 1999-08-06 | 2001-12-06 | Namezero.Com, Inc. | Multi-threaded name server |
US6405252B1 (en) * | 1999-11-22 | 2002-06-11 | Speedera Networks, Inc. | Integrated point of presence server network |
KR100345445B1 (ko) * | 1999-12-09 | 2002-07-26 | 한국전자통신연구원 | 주기억장치 데이터베이스 관리시스템에서의 티-트리 인덱스 키 관리방법 |
US6801905B2 (en) * | 2002-03-06 | 2004-10-05 | Sybase, Inc. | Database system providing methodology for property enforcement |
US6950823B2 (en) | 2002-12-23 | 2005-09-27 | International Business Machines Corporation | Transparent edge-of-network data cache |
US20050198062A1 (en) | 2004-03-05 | 2005-09-08 | Shapiro Richard B. | Method and apparatus for accelerating data access operations in a database system |
CN100418090C (zh) * | 2005-08-31 | 2008-09-10 | 国际商业机器公司 | 一种存储数据的方法 |
US7774321B2 (en) * | 2005-11-07 | 2010-08-10 | Microsoft Corporation | Partial XML validation |
US20070250471A1 (en) * | 2006-04-25 | 2007-10-25 | International Business Machines Corporation | Running XPath queries over XML streams with incremental predicate evaluation |
US7480782B2 (en) * | 2006-06-14 | 2009-01-20 | Sun Microsystems, Inc. | Reference-updating using per-chunk referenced-address ranges in a compacting garbage collector |
US20080189251A1 (en) | 2006-08-25 | 2008-08-07 | Jeremy Branscome | Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries |
US7584294B2 (en) | 2007-03-12 | 2009-09-01 | Citrix Systems, Inc. | Systems and methods for prefetching objects for caching using QOS |
US7991956B2 (en) | 2007-06-27 | 2011-08-02 | Intel Corporation | Providing application-level information for use in cache management |
US7788275B2 (en) * | 2007-09-18 | 2010-08-31 | Microsoft Corporation | Customization of relationship traversal |
US8799239B2 (en) * | 2008-04-04 | 2014-08-05 | Nokia Corporation | Method, apparatus and computer program product for performing a query using a decision diagram |
US8813091B2 (en) * | 2008-08-04 | 2014-08-19 | Oracle America, Inc. | Distribution data structures for locality-guided work stealing |
US8078642B1 (en) | 2009-07-24 | 2011-12-13 | Yahoo! Inc. | Concurrent traversal of multiple binary trees |
US8468705B2 (en) * | 2011-07-08 | 2013-06-25 | John Schneider | Electronic scaling ruler |
US8515916B2 (en) * | 2011-09-28 | 2013-08-20 | Hewlett-Packard Development Company, L.P. | Data archiving methods and data archiving apparatus |
US9002824B1 (en) * | 2012-06-21 | 2015-04-07 | Pivotal Software, Inc. | Query plan management in shared distributed data stores |
US8768977B2 (en) * | 2012-07-31 | 2014-07-01 | Hewlett-Packard Development Company, L.P. | Data management using writeable snapshots in multi-versioned distributed B-trees |
US9195778B2 (en) | 2013-03-05 | 2015-11-24 | Qualcomm Innvoation Center, Inc. | Systems, methods, and apparatus for prefetching node data for linked data structure traversal |
WO2015108521A1 (en) * | 2014-01-16 | 2015-07-23 | Hewlett-Packard Development Company, L. P. | Latch-free concurrent searching |
-
2014
- 2014-11-26 US US14/555,275 patent/US10572442B2/en active Active
-
2015
- 2015-11-20 BR BR112017007705A patent/BR112017007705A2/pt not_active Application Discontinuation
- 2015-11-20 EP EP15802327.5A patent/EP3224740A1/en not_active Ceased
- 2015-11-20 JP JP2017528446A patent/JP2018502373A/ja active Pending
- 2015-11-20 RU RU2017118151A patent/RU2017118151A/ru not_active Application Discontinuation
- 2015-11-20 CN CN201580064313.6A patent/CN107004013B/zh active Active
- 2015-11-20 WO PCT/US2015/061715 patent/WO2016085772A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5475837A (en) * | 1991-05-29 | 1995-12-12 | Hewlett-Packard Company | Method and system for restructuring a B-Tree for managing data during a node splitting operation |
US5546579A (en) * | 1994-05-02 | 1996-08-13 | International Business Machines Corporation | Page refreshing procedure using two locking granularities to ensure cache coherency in a multisystem database processing environment having a high-speed shared electronic store |
CN1815468A (zh) * | 2005-01-31 | 2006-08-09 | 微软公司 | 非关系型查询语言与关系型数据存储的集成 |
CN101339538A (zh) * | 2007-07-04 | 2009-01-07 | 三星电子株式会社 | 使用页结构的数据树存储方法、系统和计算机程序产品 |
CN101329686A (zh) * | 2008-07-31 | 2008-12-24 | 中国科学院计算技术研究所 | 一种实现网络查询缓存的系统和查询方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2016085772A1 (en) | 2016-06-02 |
RU2017118151A (ru) | 2018-11-26 |
JP2018502373A (ja) | 2018-01-25 |
EP3224740A1 (en) | 2017-10-04 |
US20160147779A1 (en) | 2016-05-26 |
BR112017007705A2 (pt) | 2017-12-19 |
US10572442B2 (en) | 2020-02-25 |
CN107004013A (zh) | 2017-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107004013B (zh) | 用于使用基于硬件的处理来提供分布式树遍历的系统和方法 | |
US11449507B2 (en) | Database engine | |
US9003162B2 (en) | Structuring storage based on latch-free B-trees | |
US9575976B2 (en) | Methods and apparatuses to optimize updates in a file system based on birth time | |
US9495398B2 (en) | Index for hybrid database | |
US8620924B2 (en) | Refreshing a full-text search index in a partitioned database | |
CN108984639B (zh) | 服务器集群的数据处理方法和装置 | |
US10248693B2 (en) | Multi-layered row mapping data structure in a database system | |
US10678784B2 (en) | Dynamic column synopsis for analytical databases | |
AU2018290753B2 (en) | Systems and methods of creation and deletion of tenants within a database | |
US9928178B1 (en) | Memory-efficient management of computer network resources | |
AU2020256331B2 (en) | Table-per-partition | |
US11113249B2 (en) | Multitenant application server using a union file system | |
US20210405904A1 (en) | Method, device, and computer program product for managing storage system | |
US20240126750A1 (en) | Accelerating query execution by optimizing data transfer between storage nodes and database nodes |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |