CN106021266A - 支持动态更新的快速多层索引 - Google Patents
支持动态更新的快速多层索引 Download PDFInfo
- Publication number
- CN106021266A CN106021266A CN201610177902.1A CN201610177902A CN106021266A CN 106021266 A CN106021266 A CN 106021266A CN 201610177902 A CN201610177902 A CN 201610177902A CN 106021266 A CN106021266 A CN 106021266A
- Authority
- CN
- China
- Prior art keywords
- data structure
- index
- key
- level
- new
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开涉及支持动态更新的快速多层索引。一种方法包括利用键执行对多层数据结构的根节点的查找,以找到用于执行插入的分区。对键的查找是对作为链接数据结构的一部分的第一级索引执行。有效载荷或引用基于数据结构标准被添加到链接数据结构中,否则如果没有找到键,则键和有效载荷被添加到链接数据结构。当链接数据结构保持不变时,新的第一级索引被创建并且被添加到链接数据结构。键和有效载荷或引用被添加到新的索引。基于合并标准,新的第二级索引被创建并且来自所选的第一级和第二级索引的内容的一部分被合并,用于组合到新的第二级索引中。
Description
技术领域
本发明的实施例涉及数据结构处理,尤其涉及对支持动态更新操作的数据结构的多层索引处理(multi-tier indexing processing)。
背景技术
对数据库或表格数据中的实时数据进行商业智能(BI)查询有增加的趋势。传统上,在BI系统和联机事务处理(OLTP)系统之间存在着严格的分离。对于操作型BI以及对于要在同一数据库上执行事务和分析两者存在日益增长的市场压力。
诸如B+树的树是用于索引持久性数据(将键映射到数据记录)的标准数据结构。它们具有很多好处,诸如:支持并发插入、删除和查找;按页面自然地组织,并且可以跨存储器盘层次结构的许多层经由缓冲池很好地传播;存在已知的技术使插入和删除在事务的意义上可恢复和原子化。但是,即使当树数据结构和存储器中散列表两者的数据结构都适合于存储器时,树数据结构的性能也比存储器中散列表的性能差得多。
发明内容
本发明的实施例涉及对支持动态更新操作的数据结构的多层索引处理。一种实施例包括一种方法,该方法包括通过散列处理器利用键执行对多层数据结构的根节点的查找以找到用于执行插入操作的分区。通过散列处理器对第一级索引执行对键的查找,该第一级索引是保持用于所找到分区的条目的链接数据结构的一部分。基于数据结构标准,散列处理器将有效载荷或对有效载荷的引用添加到链接数据结构,否则,如果没有找到键,则将键和有效载荷添加到链接数据结构。当链接数据结构自从开始对键的查找以来保持不变时,基于数据结构标准,数据结构处理器创建新的第一级索引并且将新的第一级索引添加到链接数据结构,并且将键和有效载荷或对有效载荷的引用添加到新的索引。基于合并标准,数据结构处理器创建新的第二级索引并且合并来自所选的第一级和第二级索引的内容的一部分以组合到新的第二级索引中。
参考下面的描述、所附权利要求和附图,本发明的这些和其它特征、方面和优点将会被理解。
附图说明
图1绘出了根据一实施例的云计算节点;
图2绘出了根据一实施例的云计算环境;
图3绘出了根据一实施例的一组抽象模型层;
图4是示出根据一实施例的、用于对支持动态更新操作的数据结构进行多层索引处理的系统的框图;
图5示出了根据一实施例的、用于全局深度为1的可扩展散列例子;
图6A-6C示出了根据一实施例的、用于全局深度为2的可扩展散列例子;
图7示出了根据一实施例的、在可扩展散列中使用的简要散列表(concise hashtable,CHT);
图8A-8C示出了根据一实施例的、用于其中CHT包括两级(位图页面和叶子页面)的CHT可扩展散列例子;
图9示出了根据一实施例的可以被实现的CHT;
图10示出了根据一实施例的示例两层数据结构;
图11示出了根据一实施例的用于索引查找过程的过程;
图12示出了根据一实施例的插入到索引中的过程;
图13示出了根据一实施例的索引层次结构;及
图14是根据一实施例的、用于对支持动态更新操作的数据结构进行多层索引处理的过程的框图。
具体实施方式
已为说明的目的给出了本发明的各种实施例的描述,但是这并不是要穷举或限制到所公开的实施例。在不背离所描述实施例的范围和主旨的情况下,许多修改和变化将对本领域普通技术人员显而易见。本文所使用的术语被选择为最好地解释实施例的原理、实践应用或者优于市场上见到的技术的技术改进,或者使本领域其他普通技术人员能够理解本文所公开的实施例。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机(VM)和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,从而为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用的能力。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用的能力,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源的能力。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,其中显示了云计算节点的一个例子。图1显示的云计算节点10仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。
云计算节点10具有计算机系统/服务器12,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器12一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图1所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器12一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参考图2,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图3,其中显示了云计算环境50(图2)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图3所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:大型主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器71、虚拟存储72、虚拟网络(包括虚拟私有网络)73、虚拟应用和操作系统74,以及虚拟客户端75。
在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价82功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能85:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供云计算环境可以供其使用的功能的示例。从这个层可以提供的工作负载或功能的例子包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室教学提供93;数据分析处理94;以及事务处理95。如以上所提到的,关于图3描述的所有前面的例子都仅仅是说明性的,并且本发明不限于这些例子。
应当理解,如本文所描述的一个或多种实施例的所有功能通常可以由系统400(图4)来执行,系统400可以被有形地体现为程序/实用程序40(图1)的程序代码42的模块。但是,情况不必如此。更确切地说,本文所描述的功能可以由图3中所示的层60、70、80和90当中任何一个执行/实现和/或启用。
重申一遍,虽然本公开内容包括关于云计算的详细描述,但是本文所描述的示教的实现不限于云计算环境。更确切地说,本发明的实施例可以利用现在已知或以后开发的任何类型的集群计算环境执行。
散列表(HT)由两部分组成:数组(其中存储要被搜索的数据的实际的表)和被称为散列函数的映射函数。利用散列表,任何值都可以被用作索引,诸如浮点值、串、另一个数组、或者甚至结构作为索引。这种索引被称为键(key),并且在该索引处的数组元素的内容被称为值。因此,HT是存储键/值对并且能够通过键进行快速搜索的数据结构。散列函数是从输入空间到定义数组的索引的整数空间的映射。散列函数提供了用于将数字分配给输入数据以使得数据然后可以在对应于所分配数字的数组索引处被存储的方式。
本发明的实施例涉及对支持动态更新操作的数据结构的多层索引处理。一种实施例包括用于进行插入的方法,包括通过散列处理器执行对多层数据结构的根的查找。查找利用从要被插入的值或记录得出的键值来执行。这种查找产生用于执行插入操作的分区。在那个分区内,存在包含一个或多个索引的链接数据结构。通过散列处理器对这种链接数据结构的第一级索引执行探查,以查找键。当找到键时,散列处理器将有效载荷添加到第一级索引。否则,如果没有找到键,则它将键和有效载荷添加到第一级索引。如果没有足够的空间来添加键,则数据结构处理器创建新的第一级索引并且将新的第一级索引作为第一个条目添加到链接数据结构,并且将键和有效载荷添加到新的索引。但是,如果链接数据结构自从开始探查以来已改变过(例如,由于其它并发的插入操作),则在改变的结构上重试探查。如果在第一级索引中的数据量超过阈值,则数据结构处理器创建新的第二级索引并且将来自所选的第一级和第二级索引的内容合并到新的第二级索引中。
一种实施例提供了一种索引,该索引将基于键值得出的量(例如,从键计算出的散列值)映射到持有这个键的记录的记录定位符集合的超集上。由于映射和更新,这个有效载荷是超集并且可以包括非匹配的条目(即,可以具有冲突)。在一种实施例中,多层系统包括顶层/上层和底层/下层。在一个例子中,在顶层处存在内部被分成两级的存储器高效的数据结构(例如,散列表)。第一(根)级是从每个得出的量的一部分(通常是几个前缀位)映射到第二级数据结构的类似可扩展散列的字典数据结构。在一个例子中,根的大小被限制以适合单个页面。字典数据结构支持查找和插入操作,例如,封闭寻址(链接)的散列表。第二级是固定大小的字典数据结构。在一个例子中,固定大小的字典数据结构被设定为是单个页面。顶层具有用于快速查找和插入的高效的存储器中字典,但是其可能不是空间高效的。
在一种实施例中,当索引对于顶层变得太大时,使用下层字典。当根级和第二级上的一个字典两者都满了时,整个满的第二级页面被迁移到下层。为了这样做,它与用于那个第二级子节点的任何现有的下层字典合并,形成新的下层字典(或者如果这是第一次,则新的下层字典可以被直接创建)。下层字典是不可变的并且不支持插入或删除操作。这提供了利用非常紧凑和高效的数据结构。例如,可以执行通过键进行的完全排序并且可以建造完美平衡的树数据结构。或者可以建造紧凑的散列表数据结构,诸如完美散列、杜鹃散列(cuckoo hashing)或紧凑散列表。
在一种实施例中,索引将散列值映射到一组元组序列号(TSNS,也被称为元组或行标识符)。键(仅其散列值)和任何其它属性都不存储在索引本身中。这种方法也反映了主存储器和OLTP优化设计,其中具有集群的索引几乎没什么益处。在索引中不存储任何键或属性允许索引页在存储器中具有相同的布局,而与它们的类型无关。一种实施例支持使用多版本并发控制以及既行向存储又列向存储的系统。在一个例子中,索引具有以下接口:
uint64 lookup(uint64 hash,uint64*resultBuffer,uint64resultBufferSize)
insert(uint64 hash,uint64 tsn)
delete(uint64 hash,uint64 tsn)
在一种实施例中,查找功能采用散列值、结果缓冲区和其最大尺寸作为输入参数。返回值是为期望的散列键找到的TSN的数量。如果结果缓冲区太小,则调用者必须分配更大的缓冲区并且重试查找。查找和删除功能两者都采用散列值和TSN。这种接口允许索引用于唯一的和非唯一的索引。
图4是示出根据一实施例的、用于对支持动态更新操作的数据结构进行多层索引处理的系统400的框图。在一种实施例中,系统400包括服务器12、数据结构处理器410、更新处理器415和散列处理器420,其中服务器12包括存储单元1 405至存储单元N 406(其中N是大于1的整数)。在一种实施例中,存储单元1-N 405-406对于服务器12可以是外部的。在一种实施例中,存储单元1-N 405-406可以存储对象,诸如行/列/各个值、表等。在关系数据库中,表(或文件)将关于单个主题的信息组织到行和列中。在一种实施例中,存储单元1-N405-406可以包括不同类型的存储器储存装置,诸如缓冲池、基于云的储存装置、不同类型的对象池等。
在一种实施例中,数据结构处理器410对包括根节点和多级索引的分层数据结构(参见,图13)执行处理。更新处理器415提供更新处理,其包括通过利用新的索引替换合并的索引更新链接数据结构(例如,链接列表)。在一种实施例中,散列处理器执行探查、查找、以及将键和有效载荷添加到链接数据结构中的索引。
散列表取决于其中的条目数量具有非常不同的要求和性能特征。这些要求中的一些互相冲突。例如,插入到紧凑的散列表中比插入到具有更多空间的数据结构中更昂贵。通过加倍增长的散列表以高的最坏延迟为代价而具有良好的插入性能。没有单个数据结构在所有情况下都将很好工作。因此,在一种实施例中,散列索引使用多个不同的结构并且动态地使其内部结构适于能够实现良好的总体特征。在一种实施例中,对于小型和中型尺寸的索引,使用可扩展散列来通过分割索引页使索引平滑地增长。链接的散列表存储固定数量的(散列,TSN)对并且允许就地插入和删除。对于大的索引,实现紧凑散列表。在一种实施例中,简要散列表的变体被实现并且紧凑地存储所有条目中的大多数。
图5示出了根据一实施例的、用于全局深度为一(1)的可扩展散列例子500。可扩展散列是用于增长散列表的技术。在一种实施例中,可扩展散列用于具有小于10百万个条目的小型和中型尺寸的索引。散列索引的根页面包含可扩展散列的字典结构,这是到散列表页面的指针数组。在一个例子中,字典的大小始终是二的幂,其对数被称为全局深度。通过利用散列的全局深度位作为对字典的索引,索引操作可以非常高效地直接跳转到下一级。在初始状态下,由可扩展散列字典510和散列表A 530所示,可扩展散列字典510具有全局深度零(0)(即,尺寸1),并且指向散列表A 530的一个索引页。
在一个例子中,如果散列表A 530的索引页变满,则字典需要通过在515处增加全局深度加倍其大小来增长,并且由具有全局深度一(1)的可扩展散列字典520指示。在这个临时状态下,两个指针都仍然指向散列表A 530的相同(满)页。在第二步骤中,通过取决于散列键的第一位将条目分配给两个新页中的一个,索引页在540处被分割成两页(散列表A'536和散列表A”537)。最后,这两个新的指针被安装在可扩展散列字典520中。
一旦散列表A'536的页变满,可扩展散列字典520就再一次被加倍,并且页被分割以达到具有散列表A'536的页和散列表A”537的页的状态。这时,散列表A”537的页可以被分割,而无需使可扩展散列字典520加倍,这是因为有多个指向它的指针。为了找出可扩展散列字典是否需要增长,本地深度(缩写为“ld”)被存储在每个页面。如果页面的本地深度等于全局深度(“gd”),则只有一个指针指向这个页面,因此可扩展散列字典510必须首先增长。如图所示。散列表A'536具有本地深度2并且全局深度为1,因此可扩展字典520不需要增长。
可扩展散列的一个优点是它非常快;查找仅仅包括利用多个散列位作为对字典数组的索引。此外,在一种示例实施例中,可扩展散列允许低开销同步,这是因为对可扩展散列字典的修改是非常不频繁的。应当注意,对于非常大的索引,使字典加倍最终变为昂贵、高延迟的操作。但是,在一个例子中,当只利用可扩展散列到其中字典填满一页的程度时,这不是问题。例如,利用32KB和8B指针,最大可扩展散列扇出是4096,在那之后,对于大的索引,字典保持这个最大尺寸,并且实际上充当大的索引到更多可管理区块的初始散列分区。
图6A-6C示出了根据一实施例的、用于全局深度为二(2)的可扩展散列例子。如在图6A中所示,可扩展散列字典610具有全局深度一(1)并且指向散列表A 615的页和散列表B616的页,其中每个页具有本地深度1。在图6B中,可扩展散列字典620具有全局深度二(2)并且具有两个到散列表A 615的页的指针和两个到散列表B 616的页的指针。在图6C中,可扩展散列表620具有加倍的数组,这导致将散列表A 615分割为散列表A'630和散列表A”635,其中每个具有本地深度二(2)。这导致来自可扩展散列表620的一个指针指向散列表A'630的页面、一个指针指向散列表A”635的页面、并且两个指针保持指向散列表B 616的页面。
图7示出了根据一实施例的、在可扩展散列中使用的简要散列表(CHT)。在大多数的数据库中,表大小分布是极不平衡的,并且单个或多个表及其索引主宰大部分总的空间消耗。因此,对于大的索引,空间消耗成为关键因素。大多数动态索引数据结构,包括可扩展散列、线性散列和B-树,通过分割页面来增长。因此,页平均只有大约75%满,并且附加的空间往往被浪费在允许快速查找和就地更新。因此,一旦索引达到最大可扩展散列扇出(例如,4096),页面的分割就停止,并且作为替代,引入更紧凑的数据结构。
简要散列表(CHT)最初被提议用于空间高效的散列连接并且允许快速的批量构建和高效的查找。通过不允许就地更新和删除,可以预先计算不浪费空间的完美布局。CHT结构被引入到可扩展散列字典710和散列表B 716的一个链接页面的下方,并且包括CHT位图页面A 725和CHT叶子页面A 726。对于大的索引,绝大多数的数据将在CHT中被紧凑地存储。CHT结构上方的链接散列表B 716变为用于更改的暂存区域。如在图7中所示,CHT包括两级,位图页面(例如,CHT位图页面A 725)和叶子页面(例如,CHT叶子页面A 726)。
在索引的根处的可扩展散列字典710的散列分区使每个CHT的大小保持可管理。例如,具有100亿个条目(80GB大小)的索引的每个CHT分区只有大约22MB。此外,可扩展散列字典710的扇出启用并行化。虽然CHT结构在主存储器中具有非常出色的性能,但是如果叶子级别被放到盘或SSD中,它也能表现良好。位图页面用作允许避免不必要的访问的布隆(bloom)过滤器。此外,类似于日志结构的合并树(Log-Structured Merge-Trees),多次写入被组合到链接的散列表中。这利用高效得多的顺序I/O替换频繁的随机I/O。
在一个例子中,散列表A 715的页面具有最大本地深度。空的页被安装在散列表B716中。然后CHT利用散列表B 716进行创建,作为CHT的根,其包括CHT位图页面A 725和CHT叶子页面A726。总结索引的增长过程:初始地,索引水平地增长并且可扩展散列扇出在根页面处增加。根页面只包含指向链接的散列表的指针,其中每一个都具有固定大小并且存储在单个页面上。除了可扩展散列避免了显式的隔离键和在根节点处的二进制搜索之外,这种方法类似于具有两级的B+树。一旦达到最大可扩展散列扇出,索引就开始通过周期性地将索引条目合并到CHT中垂直地增长。
在一种实施例中,链数组将索引存储到条目数组中。每个条目存储另一个索引,其接下来用于在用于指示列表的末尾的特殊值的链中的下一个条目。在页面的前面,存储只在插入和删除期间才被使用的多个字段。在一个例子中,查找使用12个散列位来加载链的开始。由于链数组具有4096个条目,因此可以避免12个位的存储。
图8A-8C示出了根据一实施例的、其中CHT包括两级(位图页面和叶子页面)的CHT可扩展散列例子。在图8A中,链包括可扩展散列字典810、散列表B 815(CHT的根)和CHT,其中CHT包括CHT位图页面A 820和CHT叶子页面A 821。图8B示出了具有散列表C 825的页面的链的增长。在一个例子中,散列表B 815的页面如在图8C中所示被合并,其中散列表C 825是用于合并后的CHT的根。合并后的CHT包括CHT位图页面AB 840和CHT叶子页面AB 841。
图9示出了可以被实施例修改的简要散列表(CHT)900。CHT 900是紧凑数据结构。CHT 900通过将条目存储在密集的并且大多数排序的数组中实现空间效率。在一个例子中,CHT 900包括位图数组910、用于实际值的条目数组920和溢出数据结构930(例如,不同种类的散列表)。位图数组910被调整大小,使得大约8位中的1位被设置,并且位图数组910被分成存储32位的桶(例如,由于图形原因在这个例子中使用每桶8位)。通过观察条目的散列位的适当数量,可以确定它在数组中的位的位置。概念上,它在条目数组中的位置然后可以通过累加其位置左侧的位集合的数量(填充计数)来计算。因为每次查找对许多桶实际计算填充计数是不实际的,因此前缀填充计数与位图数组交错。在这个例子中,用于桶2的前缀填充是4,这是因为桶0和桶1两者在条目数组920中都具有2个条目。这允许快速找到条目的可能位置。在散列冲突的情况下(例如,该例子中的h4),使用了相邻位(以及因此还使用位置)。但是,如果多于两个条目散列到相同的位的位置,则这些条目必须被存储在单独的数据结构中,如在该例子中为h4所示出的。
原始CHT 900数据结构是为空间高效的存储器中散列联接设计的。因此,位图数组910结构和条目数组920两者都只是大数组。因为索引被布置在固定大小的页面上,因此,在一种实施例中,CHT 900被修改。在一种实施例中,叶子页面指针以与前缀计数相同的方式在位图数组910内交错。为了腾出空间给该附加信息,在一种实施例中,每个位图的大小从32位增加到64位。因此每桶存在64位,其中48位用于叶子指针并且16位用于前缀计数。散列到位图桶的所有条目都存储在同一叶子上。此外,前缀计数现在与叶子的开始有关,这就是为什么给它16位是足够的。当构建数据结构时,尽可能多的连续位图桶被分配给叶子。因此,通常除了最后的叶子之外的所有叶子几乎都是满的。
在一种实施例中,对CHT 900的另一个修改涉及由于重复键或散列冲突而发生的溢出如何被处理。在一种实施例中,原始CHT 900方案对唯一的键进行优化:一旦用于一项的两个可能位置都被采用,则这个条目就被存储在完全不同的数据结构中。在一个例子中,使用了使溢出条目保持接近常规条目的方法。因此,在一种实施例中,散列索引不仅对唯一的键工作良好,而且当每个键有多个TSN时也能工作良好。
在一个例子中,散列的39个位和48位的TSN被存储。这些值对于32KB的页面和8B的指针进行优化:可扩展散列预先确定12个散列位(由于4096的扇出),并且修改后的CHT 900位图页面预先确定附加的11个位(由于2048个桶)。因此,散列的23个位可以被“压缩”,使得每个叶子页面条目只需存储剩余的16位。如果添加了48位的TSN位,则每个叶子条目总共只有8个字节。
图10示出了根据一实施例的示例数据结构1000。在一种实施例中,数据结构1000包括可变层1010和不可变层1020,其中可变层1010包括可扩展散列1011和散列表1012,并且不可变层1020包括CHT位图1021(例如,修改后的位图数组910)和CHT叶子页面1022。在一种实施例中,叶子页面指针以与前缀计数相同的方式在位图数组910内交错。为了腾出空间给该附加的信息,在一种实施例中,每个位图的大小从32位增加到64位。因此,每桶存在64位,其中48位用于叶子指针并且16位用于前缀计数。散列到位图桶的所有条目都存储在同一叶子上。此外,前缀计数现在与叶子的开始有关,这就是为什么给它16位是足够的。当构建数据结构时,尽可能多的连续位图桶被分配给叶子。因此,通常除了最后的叶子之外的所有叶子几乎都是满的。
在一种实施例中,对CHT 900的另一个修改涉及由于重复键或散列冲突而发生的溢出如何被处理。在一种实施例中,数据结构1000方案对唯一的键进行优化:一旦用于一项的两个可能位置都被采用,则这个条目被存储在完全不同的数据结构中。在一个例子中,使用了使溢出条目保持接近常规条目的方法。因此,在一种实施例中,散列索引不仅对唯一的键工作良好,而且当每个键有多个TSN时也能工作良好。
在一个例子中,散列的39个位和48位的TSN被存储。这些值对于32KB的页面和8B的指针进行优化:可扩展散列预先确定12个散列位(由于4096的扇出),并且修改后的CHT 900位图页面预先确定数据结构1000中附加的11个位(由于2048个桶)。因此,散列的23个位可以被“压缩”,使得每个叶子页面条目只需存储剩余的16位。如果添加了48位的TSN位,则每个叶子条目总共只有8个字节。
图11示出了根据一实施例的用于索引查找过程的过程1100。在一种实施例中,过程1100在框1105处开始并且继续到方框1110。在方框1110中,查找操作对根(例如,图13中,根1310)索引数据结构执行,以确定要搜索/插入的分区。在方框1120中,为了所选的键而执行对第一级(1级)索引的探查操作。如果找到键,则将有效载荷添加到结果。如果找到键(在方框1120中)并且重复不被允许,则过程1100前进到方框1130,其中过程1100通过前进到返回1160停止。如果存在更多的第一级索引,则在每个第一级(1级)索引上进行循环(即,返回到方框1120)。
在方框1140中,为了所选的键而执行对第二级(2级)索引的探查。如果找到键,则它被添加到有效载荷结果。如果找到键并且不允许重复,则过程1100继续到方框1150,其中过程1100通过前进到框1160停止。如果存在更多的第二级索引,则在每个第二级(2级)索引上进行循环(即,返回到方框1140),否则过程1100在框1160处退出。
图12示出了根据一实施例的插入到索引中的过程1200。过程1200在框1205处开始并且前进到方框1210。在一种实施例中,在方框1210中,执行对根(例如,图13中,根1310)数据结构的查找,以确定要搜索/插入的分区。在方框1220中,为了所选的键而执行对第一级(1级)索引的探查操作。如果找到键,则有效载荷被添加到第一级索引。否则,键和有效载荷被添加到第一级索引。如果在第一级中有足够的空间,则过程在方框1270处停止。否则,如果没有足够的空间,则在方框1230处开始(创建)新的第一级索引。
在方框1230中,如果链接数据结构自从探查操作方框1220的开始以来没有被并发插入改变过,则附加的第一级索引被创建并且作为第一索引被添加到用于该分区的链接数据结构。如果自从探查操作以来链接数据结构已被改变,则过程继续返回到方框1210进行重试。否则,键和有效载荷被添加到新的索引。过程1200继续到方框1240,其中如果另一个线程上发生对所确定的分区的正在进行的合并,或者如果不需要合并(例如,没有足够的内容要合并,或要被探查的索引的数量并未过多),则方框1240退出到方框1270。过程1200继续到方框1250,其中新的二级(2级)索引被创建,并且来自所有所选的第一和第二级索引的内容被合并到新的第二级索引中。在方框1260中,通过利用新的第二级索引替换合并的索引更新链接数据结构来执行更新操作。过程1200然后通过方框1270退出。
图13示出了根据一实施例的索引。在索引1300中,根1310指向有效的级1索引1320的数组,级1索引1320被链接到填充的1级索引1330和2级索引1340。
图14是根据一实施例的、用于对支持动态更新操作的数据结构的多层索引处理的过程1400的框图。在一种实施例中,在方框1410中,过程1400通过散列处理器(例如,图4,散列处理器420)执行对多层数据结构(例如,索引1300,图13)的根(例如,图13,根1310)的查找,以找到用于执行插入/搜索操作的分区。在方框1420中,过程1400通过散列处理器对多层数据结构的链接数据结构的第一级(1级)索引(例如,这个第一级索引可以是链接的散列表)执行探查以探查键。在方框1430中,当找到键时,散列处理器基于数据结构标准将有效载荷添加到链接数据结构,否则,如果没有找到键,则散列处理器将键和有效载荷添加到链接数据结构。在方框1440中,当链接数据结构自从在方框1420中开始探查以来保持不变时,基于数据结构标准,通过数据结构处理器(例如,图4,数据结构处理器410)创建新的第一级索引并且将新的第一级索引添加到链接数据结构,以及将键和有效载荷或对有效载荷的引用添加到新的索引。在方框1450中,数据结构处理器基于合并标准创建新的第二级索引并且将来自所选的第一级和第二级索引的内容的一部分合并到新的第二级索引中。
在一种实施例中,过程1400还可以包括通过利用一个或多个新的第二级索引替换其内容已被完全合并的索引,通过更新处理器(例如,图4,更新处理器415)更新链接数据结构。对用于合并到新的第二级索引中的第一级和第二级索引的选择也将所选的第一级和第二级索引标记为不接受进一步的插入。在一种实施例中,数据结构标准可以包括以下当中的一个或多个:在链接数据结构的索引中有足够空间、索引能够接受附加的插入、索引具有不平衡的结构、或查找效率。在一种实施例中,合并标准可以包括以下当中的一个或多个:在分区上不存在正在进行的合并操作、确定由于在所选的第一级和第二级索引中存在的重要内容而使得合并操作是得到保证的(warranted)、或查找效率(例如,具有大数量的索引要被探查)。
在一种实施例中,多层数据结构的上层包括单个节点,该单个节点包含将从键得到的指示器值映射到到多层数据结构的下层中的节点的指针的可变字典数据结构,其中可变字典结构对于执行各个插入操作是高效的。在一个例子中,在多层数据结构的下层中的每个节点具有对于执行查找操作和批量加载是高效的一个不可变字典结构。对多层数据结构的插入操作包括执行对可变字典结构的查找操作,以选择要插入到的下层节点。对下层节点的插入操作被使得插入到在那个节点处的最近添加的可变字典结构中。
在一种实施例中,可变字典结构被周期性地合并到不可变字典结构中,从而产生新的不可变字典结构。不可变字典结构包括简要散列表,该简要散列表包括第一级位图页面和第二级叶子页面。在一种实施例中,查找使用散列值、结果缓冲区和最大尺寸作为输入参数,并且将为期望的散列键找到的多个记录标识符(例如,TSN等)作为值返回,并且将适合装入最大尺寸内的尽可能多的结果有效载荷放置到结果缓冲区中。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令也可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,产生一种计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个方框中所指定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除非明确地如此陈述,否则权利要求中对单数形式的元素的引用并非意在表示“唯一的”,而是指“一个或多个”。目前本领域普通技术人员已知或以后知道的、与上述示例性实施例的元素等同的所有结构和功能要被本权利要求涵盖。本文没有权利要求元素要援引35 U.S.C第112部分第6段来解释,除非该元素明确地利用短语“用于…的装置”或“用于…的步骤”来阐述。
本文所使用的术语仅仅是为了描述特定的实施例而不是要作为本发明的限制。如本文所使用的,除非上下文明确地另外指出,否则单数形式“一个”和“这个”是要也包括复数形式。还应当理解,当在本说明书使用时,术语“包括”规定所述特征、整数、步骤、操作、元素和/或部件的存在,但是并不排除一个或多个其它特征、整数、步骤、操作、元素、部件和/或其组的存在或添加。
以下权利要求中所有方式或步骤加功能元素的对应结构、材料、动作及等同物都是要包括用于结合具体所要求的其它所要求元素执行所述功能的任何结构、材料或动作。已经为了说明和描述给出了本发明的描述,但这不是详尽的或者要把本发明限定到所公开的形式。在不背离本发明范围与精神的情况下,许多修改和变化对本领域普通技术人员都将是显而易见的。实施例的选择和描述是为了最好地解释本发明的原理和实践应用,并使本领域普通技术人员能够理解本发明具有适于预期特定使用的各种修改的各种实施例。
Claims (20)
1.一种用于将条目插入到多层数据结构中的方法,包括:
通过散列处理器利用条目的键执行对多层数据结构的根节点的查找以找到用于执行插入操作的分区;
通过散列处理器对第一级索引执行对键的查找,该第一级索引是保持用于所找到分区的条目的链接数据结构的一部分;
当找到键时,基于数据结构标准,通过散列处理器将有效载荷或对有效载荷的引用添加到链接数据结构,否则,如果没有找到键,则将键和有效载荷添加到链接数据结构;
当链接数据结构自从开始对键的查找以来保持不变时,基于数据结构标准,通过数据结构处理器创建新的第一级索引并且将新的第一级索引添加到链接数据结构,并且将键和有效载荷或对有效载荷的引用添加到新的索引;及
基于合并标准,通过数据结构处理器创建新的第二级索引并且将来自所选的第一级和第二级索引的内容的一部分合并到新的第二级索引中。
2.如权利要求1所述的方法,还包括:
通过利用一个或多个新的第二级索引替换其内容已被完全合并的索引,通过更新处理器更新链接数据结构,
其中对用于合并到新的第二级索引中的第一级和第二级索引的选择还将所选的第一级和第二级索引标记为不接受进一步的插入。
3.如权利要求1所述的方法,其中数据结构标准包括以下中的一个或多个:在链接数据结构的索引中有足够空间、索引能够接受附加的插入、索引具有不平衡结构、或查找效率。
4.如权利要求1所述的方法,其中合并标准包括以下中的一个或多个:
在分区上不存在正在进行的合并操作,
确定由于在所选的第一级和第二级索引中存在重要内容而使得合并操作是得到保证的,或
查找效率。
5.如权利要求2所述的方法,其中:
多层数据结构的上层包括包含可变索引数据结构的单个节点,该可变索引数据结构将从键得到的指示器值映射到指向多层数据结构的下层中的节点的指针上,及
可变索引结构对于执行各个插入操作是高效的。
6.如权利要求5所述的方法,其中:
在多层数据结构的下层中的每个节点具有一个不可变索引数据结构,该不可变索引数据结构对于执行查找操作和批量加载是高效的;
插入到多层数据结构中包括执行对可变索引数据结构的查找操作以选择要插入到的下层节点;
插入到下层节点中被使得插入到在那个节点处的最近添加的可变索引数据结构中;及
可变索引数据结构被周期性地合并到不可变索引数据结构中,从而产生新的不可变索引数据结构。
7.如权利要求6所述的方法,其中不可变索引数据结构包括简要散列表,该简要散列表包括第一级位图页面和第二级叶子页面。
8.如权利要求1所述的方法,其中查找使用散列值、结果缓冲区和最大尺寸作为输入参数,并且将为期望的散列键找到的多个记录标识符作为值返回,并且将适合装入最大尺寸内的尽可能多的结果有效载荷放置到结果缓冲区中。
9.一种用于将条目插入到多层数据结构中的计算机系统,包括:
处理器;
耦合到处理器的存储器;
程序代码,该程序代码被存储在存储器中并且由处理器执行以便:
通过处理器利用条目的键执行对所述多层数据结构的根节点的查找以找到用于执行插入操作的分区;
通过处理器对第一级索引执行对键的查找,该第一级索引是保持用于所找到分区的条目的链接数据结构的一部分;
当找到键时,基于数据结构标准,通过处理器将有效载荷或对有效载荷的引用添加到链接数据结构,否则,如果没有找到键,则将键和有效载荷添加到链接数据结构;
当链接数据结构自从开始对键的查找以来保持不变时,基于数据结构标准,通过数据结构处理器创建新的第一级索引并且将新的第一级索引添加到链接数据结构,并且将键和有效载荷或对有效载荷的引用添加到新的索引;及
基于合并标准,通过数据结构处理器创建新的第二级索引并且将来自所选的第一级和第二级索引的内容的一部分合并到新的第二级索引中。
10.如权利要求9所述的计算机系统,还包括程序代码,该程序代码被存储在存储器中并且由处理器执行以便:
通过利用一个或多个新的第二级索引替换其内容已被完全合并的索引,通过更新处理器更新链接数据结构,
其中对用于合并到新的第二级索引中的第一级和第二级索引的选择还将所选的第一级和第二级索引标记为不接受进一步的插入。
11.如权利要求10所述的计算机系统,其中数据结构标准包括以下中的一个或多个:在链接数据结构的索引中有足够空间、索引能够接受附加的插入、索引具有不平衡结构、或查找效率。
12.如权利要求11所述的计算机系统,其中合并标准包括以下中的一个或多个:
在分区上不存在正在进行的合并操作,
确定由于在所选的第一级和第二级索引中存在重要内容而使得合并操作是得到保证的,或
查找效率。
13.如权利要求9所述的计算机系统,其中:
多层数据结构的上层包括包含可变索引数据结构的单个节点,该可变索引数据结构将从键得到的指示器值映射到指向多层数据结构的下层中的节点的指针上,及
可变索引数据结构对于执行各个插入操作是高效的。
14.如权利要求10所述的计算机系统,其中:
在多层数据结构的下层中的每个节点具有一个不可变索引数据结构,该不可变索引数据结构对于执行查找操作和批量加载是高效的;
插入到多层数据结构中包括执行对可变索引数据结构的查找操作以选择要插入到的下层节点;
插入到下层节点中被使得插入到在那个节点处的最近添加的可变索引数据结构中;及
可变索引数据结构被周期性地合并到不可变索引数据结构中,从而产生新的不可变索引数据结构。
15.如权利要求14所述的计算机系统,其中不可变索引数据结构包括简要散列表,该简要散列表包括第一级位图页面和第二级叶子页面。
16.如权利要求9所述的计算机系统,其中查找使用散列值、结果缓冲区和最大尺寸作为输入参数,并且将为期望的散列键找到的多个记录标识符作为值返回,并且将适合装入最大尺寸内的尽可能多的结果有效载荷放置到结果缓冲区中。
17.一种系统,包括:
散列处理器,利用条目的键执行对多层数据结构的根节点的查找以找到用于执行插入操作的分区,对第一级索引执行对键的查找,该第一级索引是保持用于所找到分区的条目的链接数据结构的一部分,以及当找到键时,基于数据结构标准,将有效载荷或对有效载荷的引用添加到链接数据结构,否则,如果没有找到键,则将键和有效载荷添加到链接数据结构;及
数据结构处理器,当链接数据结构自从开始对键的查找以来保持不变时,基于数据结构标准,创建新的第一级索引并且将新的第一级索引添加到链接数据结构,并且将键和有效载荷或对有效载荷的引用添加到新的索引,以及基于合并标准,创建新的第二级索引并且将来自所选的第一级和第二级索引的内容的一部分合并到新的第二级索引中。
18.如权利要求17所述的系统,还包括:
更新处理器,通过利用一个或多个新的第二级索引替换其内容已被完全合并的索引,更新链接数据结构,
其中对用于合并到新的第二级索引中的第一级和第二级索引的选择还将所选的第一级和第二级索引标记为不接受进一步的插入。
19.如权利要求18所述的系统,其中:
数据结构标准包括以下中的一个或多个:在链接数据结构的索引中有足够空间、索引能够接受附加的插入、索引具有不平衡结构、或查找效率;
合并标准包括以下中的一个或多个:
在分区上不存在正在进行的合并操作,
确定由于在所选的第一级和第二级索引中存在重要内容而使得合并操作是得到保证的,或
查找效率;
多层数据结构的上层包括包含可变索引数据结构的单个节点,该可变索引数据结构将从键得到的指示器值映射到指向多层数据结构的下层中的节点的指针上;
可变索引数据结构对于执行各个插入操作是高效的;
在多层数据结构的下层中的每个节点具有一个不可变索引数据结构,该不可变索引数据结构对于执行查找操作和批量加载是高效的;
插入到多层数据结构中包括执行对可变索引数据结构的查找操作以选择要插入到的下层节点;
通过数据结构处理器使得插入到下层节点中是插入到在那个节点处的最近添加的可变索引数据结构中;及
通过数据结构处理器将可变索引数据结构周期性地合并到不可变索引数据结构中,从而产生新的不可变索引数据结构。
20.如权利要求19所述的系统,其中:
不可变索引数据结构包括简要散列表,该简要散列表包括第一级位图页面和第二级叶子页面;及
查找使用散列值、结果缓冲区和最大尺寸作为输入参数,并且将为期望的散列键找到的多个记录标识符作为值返回,并且将适合装入最大尺寸内的尽可能多的结果有效载荷放置到结果缓冲区中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/671,692 US10831736B2 (en) | 2015-03-27 | 2015-03-27 | Fast multi-tier indexing supporting dynamic update |
US14/671,692 | 2015-03-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106021266A true CN106021266A (zh) | 2016-10-12 |
CN106021266B CN106021266B (zh) | 2020-01-17 |
Family
ID=56890400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610177902.1A Active CN106021266B (zh) | 2015-03-27 | 2016-03-25 | 支持动态更新的快速多层索引 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10831736B2 (zh) |
CN (1) | CN106021266B (zh) |
DE (1) | DE102016105526A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107632779A (zh) * | 2017-08-24 | 2018-01-26 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置、服务器 |
CN108595482A (zh) * | 2018-03-13 | 2018-09-28 | 华为技术有限公司 | 一种数据索引方法及装置 |
CN110597804A (zh) * | 2018-06-13 | 2019-12-20 | 国际商业机器公司 | 促进分布式键值存储库上的空间索引 |
CN113196260A (zh) * | 2018-12-14 | 2021-07-30 | 美光科技公司 | 能够选择性使用键部分的键值存储树 |
CN113297432A (zh) * | 2021-06-01 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 用于分区拆分与合并的方法、处理器可读介质和系统 |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11599552B2 (en) | 2018-10-10 | 2023-03-07 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11657092B2 (en) | 2018-12-26 | 2023-05-23 | Micron Technology, Inc. | Data tree with order-based node traversal |
WO2023143096A1 (zh) * | 2022-01-26 | 2023-08-03 | 阿里云计算有限公司 | 数据查询方法、装置、设备及存储介质 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9311359B2 (en) | 2013-01-30 | 2016-04-12 | International Business Machines Corporation | Join operation partitioning |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US20160299894A1 (en) * | 2015-04-07 | 2016-10-13 | Victor Chernov | Method of sparse array implementation for large arrays |
US10282455B2 (en) | 2015-04-20 | 2019-05-07 | Splunk Inc. | Display of data ingestion information based on counting generated events |
US10817544B2 (en) * | 2015-04-20 | 2020-10-27 | Splunk Inc. | Scaling available storage based on counting generated events |
CN108140021B (zh) * | 2015-09-24 | 2022-11-01 | 慧与发展有限责任合伙企业 | 管理索引的装置和方法、以及机器可读介质 |
US10452297B1 (en) * | 2016-05-02 | 2019-10-22 | Pure Storage, Inc. | Generating and optimizing summary index levels in a deduplication storage system |
CN111143284B (zh) * | 2018-11-02 | 2023-06-20 | 浙江宇视科技有限公司 | 文件系统动态索引方法及装置 |
US10972364B2 (en) * | 2019-05-15 | 2021-04-06 | Cisco Technology, Inc. | Using tiered storage and ISTIO to satisfy SLA in model serving and updates |
US11182356B2 (en) | 2019-05-23 | 2021-11-23 | International Business Machines Corporation | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems |
US11727057B2 (en) | 2019-09-04 | 2023-08-15 | Samsung Electronics Co., Ltd. | Network key value indexing design |
WO2021207937A1 (en) | 2020-04-14 | 2021-10-21 | Huawei Technologies Co., Ltd. | Method and apparatus for consistent page split operation in a multi-master database |
CN111625611A (zh) * | 2020-05-25 | 2020-09-04 | Oppo广东移动通信有限公司 | 地图应用的任务处理、地图构建方法及装置、设备、介质 |
US20220309112A1 (en) * | 2021-03-24 | 2022-09-29 | Microsoft Technology Licensing, Llc | Building a base index for search |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6247014B1 (en) * | 1998-07-01 | 2001-06-12 | Nortel Networks Limited | Method and apparatus for performing hash lookups using valid bit tables with pointers |
CN1968212A (zh) * | 2006-11-24 | 2007-05-23 | 中兴通讯股份有限公司 | 流分类中基于硬件的差异化组织方法 |
CN101388042A (zh) * | 2008-09-17 | 2009-03-18 | 北京六维世纪网络技术有限公司 | 一种建立文件特征库索引的方法及装置 |
CN102893265A (zh) * | 2010-03-10 | 2013-01-23 | 起元技术有限责任公司 | 管理可独立访问的数据单元的存储 |
CN104021205A (zh) * | 2014-06-18 | 2014-09-03 | 中国人民解放军国防科学技术大学 | 一种建立微博索引的方法及装置 |
CN104317966A (zh) * | 2014-11-18 | 2015-01-28 | 国家电网公司 | 一种用于电力大数据快速组合查询的动态索引方法 |
Family Cites Families (124)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04251346A (ja) | 1990-05-16 | 1992-09-07 | Internatl Business Mach Corp <Ibm> | データ処理システムにおいて文書を階層的にグループ化する方法 |
JP3266351B2 (ja) | 1993-01-20 | 2002-03-18 | 株式会社日立製作所 | データベース管理システムおよび問合せの処理方法 |
US5794229A (en) | 1993-04-16 | 1998-08-11 | Sybase, Inc. | Database system with methodology for storing a database table by vertically partitioning all columns of the table |
US5455826A (en) | 1994-06-28 | 1995-10-03 | Oezveren; Cueneyt M. | Method and apparatus for rate based flow control |
DE19515020A1 (de) | 1994-07-01 | 1996-01-04 | Hewlett Packard Co | Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren |
US5740440A (en) | 1995-01-06 | 1998-04-14 | Objective Software Technology | Dynamic object visualization and browsing system |
CA2168287C (en) | 1995-03-31 | 2000-05-23 | Guy M. Lohman | Method for detecting and optimizing relational queries with encoding/decoding tables |
US5706495A (en) | 1996-05-07 | 1998-01-06 | International Business Machines Corporation | Encoded-vector indices for decision support and warehousing |
US6134601A (en) | 1996-06-17 | 2000-10-17 | Networks Associates, Inc. | Computer resource management system |
US6052697A (en) | 1996-12-23 | 2000-04-18 | Microsoft Corporation | Reorganization of collisions in a hash bucket of a hash table to improve system performance |
US5893086A (en) | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Parallel file system and method with extensible hashing |
US6557091B2 (en) | 1997-08-22 | 2003-04-29 | Koninklijke Philips Electronics N.V. | Data processor with localized memory reclamation |
GB9811574D0 (en) | 1998-05-30 | 1998-07-29 | Ibm | Indexed file system and a method and a mechanism for accessing data records from such a system |
US6609131B1 (en) | 1999-09-27 | 2003-08-19 | Oracle International Corporation | Parallel partition-wise joins |
DE19961499A1 (de) | 1999-12-20 | 2001-07-05 | Ericsson Telefon Ab L M | Caching von Objekten in Platten-gestützten Datenbanken |
US20020016820A1 (en) | 2000-05-30 | 2002-02-07 | Jordan Du Val | Distributing datacast signals embedded in broadcast transmissions over a computer network |
US6505189B1 (en) | 2000-06-15 | 2003-01-07 | Ncr Corporation | Aggregate join index for relational databases |
US8692695B2 (en) | 2000-10-03 | 2014-04-08 | Realtime Data, Llc | Methods for encoding and decoding data |
US6954776B1 (en) | 2001-05-07 | 2005-10-11 | Oracle International Corporation | Enabling intra-partition parallelism for partition-based operations |
US7293028B2 (en) | 2001-06-08 | 2007-11-06 | Sap Ag | Cache-conscious concurrency control scheme for database systems |
KR100832222B1 (ko) | 2001-06-09 | 2008-05-23 | 자프 아게 | 메인 메모리 데이터베이스 시스템의 색인 구조를 위한캐쉬에 최적화된 동시성 제어방법 |
US7136883B2 (en) | 2001-09-08 | 2006-11-14 | Siemens Medial Solutions Health Services Corporation | System for managing object storage and retrieval in partitioned storage media |
US7062481B2 (en) | 2001-09-28 | 2006-06-13 | Ncr Corp. | Eliminating group-by operations in a join plan |
US6757677B2 (en) | 2001-09-28 | 2004-06-29 | Ncr Corporation | Providing a join plan using group-by operator |
US7499960B2 (en) | 2001-10-01 | 2009-03-03 | Oracle International Corporation | Adaptive memory allocation |
US6775681B1 (en) | 2002-02-26 | 2004-08-10 | Oracle International Corporation | Evaluation of grouping sets by reduction to group-by clause, with or without a rollup operator, using temporary tables |
US6937652B2 (en) * | 2002-04-19 | 2005-08-30 | Seiko Epson Corporation | Frame compression using radix approximation |
US7287131B1 (en) | 2003-03-21 | 2007-10-23 | Sun Microsystems, Inc. | Method and apparatus for implementing a fully dynamic lock-free hash table |
US8612421B2 (en) | 2003-05-07 | 2013-12-17 | Oracle International Corporation | Efficient processing of relational joins of multidimensional data |
US7472107B2 (en) | 2003-06-23 | 2008-12-30 | Microsoft Corporation | Integrating horizontal partitioning into physical database design |
US20050018683A1 (en) | 2003-07-21 | 2005-01-27 | Zhao Yigiang Q. | IP address storage technique for longest prefix match |
US7412439B2 (en) | 2004-01-07 | 2008-08-12 | International Business Machines Corporation | Method for statistics management |
US8886614B2 (en) | 2004-02-03 | 2014-11-11 | Teradata Us, Inc. | Executing a join plan using data compression |
US8768889B1 (en) | 2004-04-07 | 2014-07-01 | Oracle America, Inc. | Method and apparatus for performing lock-free updates in a linked list |
US7376890B2 (en) | 2004-05-27 | 2008-05-20 | International Business Machines Corporation | Method and system for checking rotate, shift and sign extension functions using a modulo function |
US7827182B1 (en) | 2004-06-02 | 2010-11-02 | Cisco Technology, Inc | Searching for a path to identify where to move entries among hash tables with storage for multiple entries per bucket during insert operations |
US7177883B2 (en) | 2004-07-15 | 2007-02-13 | Hitachi, Ltd. | Method and apparatus for hierarchical storage management based on data value and user interest |
US7343363B1 (en) | 2004-09-29 | 2008-03-11 | Unisys Corporation | Methods and apparatus for grouping elements of element pairs into element sets |
US8145642B2 (en) | 2004-11-30 | 2012-03-27 | Oracle International Corporation | Method and apparatus to support bitmap filtering in a parallel system |
US7308539B2 (en) | 2004-12-17 | 2007-12-11 | International Business Machines Corporation | Concurrent read access and exclusive write access to data in shared memory architecture |
US20060218176A1 (en) | 2005-03-24 | 2006-09-28 | International Business Machines Corporation | System, method, and service for organizing data for fast retrieval |
US7653670B2 (en) | 2005-11-28 | 2010-01-26 | Nec Laboratories America, Inc. | Storage-efficient and collision-free hash-based packet processing architecture and method |
US7685098B2 (en) | 2005-12-08 | 2010-03-23 | International Business Machines Corporation | Estimating the size of a join by generating and combining partial join estimates |
US7716180B2 (en) | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
US8838620B2 (en) | 2006-02-03 | 2014-09-16 | International Business Machines Corporation | Predictive data object retrieval |
US7831793B2 (en) | 2006-03-01 | 2010-11-09 | Quantum Corporation | Data storage system including unique block pool manager and applications in tiered storage |
US20090187586A1 (en) | 2006-03-31 | 2009-07-23 | Qd Technology Llc | Selecting various algorithms to compress columns of analytic data in a read-only relational database in a manner that allows decompression of the compressed data using minimal system resources |
US7965297B2 (en) | 2006-04-17 | 2011-06-21 | Microsoft Corporation | Perfect hashing of variably-sized data |
US7619623B2 (en) | 2006-04-17 | 2009-11-17 | Microsoft Corporation | Perfect multidimensional spatial hashing |
US7574435B2 (en) | 2006-05-03 | 2009-08-11 | International Business Machines Corporation | Hierarchical storage management of metadata |
US7805460B2 (en) | 2006-10-26 | 2010-09-28 | Polytechnic Institute Of New York University | Generating a hierarchical data structure associated with a plurality of known arbitrary-length bit strings used for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit string |
US7827218B1 (en) | 2006-11-18 | 2010-11-02 | X-Engines, Inc. | Deterministic lookup using hashed key in a multi-stride compressed trie structure |
US7676635B2 (en) | 2006-11-29 | 2010-03-09 | International Business Machines Corporation | Recoverable cache preload in clustered computer system based upon monitored preload state of cache |
US8027993B2 (en) | 2006-12-28 | 2011-09-27 | Teradota Us, Inc. | Techniques for establishing and enforcing row level database security |
US7564722B2 (en) | 2007-01-22 | 2009-07-21 | Micron Technology, Inc. | Memory system and method having volatile and non-volatile memory devices at same hierarchical level |
US20080183657A1 (en) | 2007-01-26 | 2008-07-31 | Yuan-Chi Chang | Method and apparatus for providing direct access to unique hierarchical data items |
US7688758B2 (en) | 2007-06-26 | 2010-03-30 | Avaya Inc. | Node merging process for network topology representation |
US20090006399A1 (en) | 2007-06-29 | 2009-01-01 | International Business Machines Corporation | Compression method for relational tables based on combined column and row coding |
US8799272B2 (en) | 2007-07-20 | 2014-08-05 | Hewlett-Packard Development Company, L.P. | Data skew insensitive parallel join scheme |
US9626421B2 (en) | 2007-09-21 | 2017-04-18 | Hasso-Plattner-Institut Fur Softwaresystemtechnik Gmbh | ETL-less zero-redundancy system and method for reporting OLTP data |
JP2009093571A (ja) | 2007-10-11 | 2009-04-30 | Hitachi Ltd | 記憶制御装置、記憶制御装置のデータアーカイブ方法及びストレージシステム |
US9805077B2 (en) | 2008-02-19 | 2017-10-31 | International Business Machines Corporation | Method and system for optimizing data access in a database using multi-class objects |
JP4613969B2 (ja) | 2008-03-03 | 2011-01-19 | ソニー株式会社 | 通信装置、及び通信方法 |
US8271564B2 (en) | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US8078593B1 (en) * | 2008-08-28 | 2011-12-13 | Infineta Systems, Inc. | Dictionary architecture and methodology for revision-tolerant data de-duplication |
US20100088309A1 (en) | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale joining for querying of column based data encoded structures |
US8195644B2 (en) | 2008-10-06 | 2012-06-05 | Teradata Us, Inc. | System, method, and computer-readable medium for optimization of multiple parallel join operations on skewed data |
US8060495B2 (en) | 2008-10-21 | 2011-11-15 | International Business Machines Corporation | Query execution plan efficiency in a database management system |
US8234268B2 (en) | 2008-11-25 | 2012-07-31 | Teradata Us, Inc. | System, method, and computer-readable medium for optimizing processing of distinct and aggregation queries on skewed data in a database system |
US8212695B2 (en) | 2009-02-05 | 2012-07-03 | Polytechnic Institute Of New York University | Generating a log-log hash-based hierarchical data structure associated with a plurality of known arbitrary-length bit strings used for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit strings |
US8805852B2 (en) | 2009-03-02 | 2014-08-12 | International Business Machines Corporation | Automatic query execution plan management and performance stabilization for workloads |
RU2517238C2 (ru) | 2009-04-08 | 2014-05-27 | Интел Корпорейшн | Выполнение параллельного повторного хэширования хеш-таблицы для многопоточных приложений |
US8515965B2 (en) | 2010-05-18 | 2013-08-20 | Lsi Corporation | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors |
US8321385B2 (en) | 2010-03-12 | 2012-11-27 | Lsi Corporation | Hash processing in a network communications processor architecture |
US7868789B1 (en) | 2009-06-28 | 2011-01-11 | Sap Ag | Dictionary-based order-preserving string compression for main memory column stores |
US8438574B1 (en) | 2009-08-14 | 2013-05-07 | Translattice, Inc. | Generating monotone hash preferences |
US9280609B2 (en) | 2009-09-08 | 2016-03-08 | Brocade Communications Systems, Inc. | Exact match lookup scheme |
US8543539B2 (en) | 2009-09-16 | 2013-09-24 | Business Objects Software Limited | Method and system for capturing change of data |
US8244765B2 (en) | 2009-09-30 | 2012-08-14 | International Business Machines Corporation | Avoiding three-valued logic in predicates on dictionary-encoded data |
US9262330B2 (en) | 2009-11-04 | 2016-02-16 | Microsoft Technology Licensing, Llc | Column oriented in-memory page caching |
US8443155B2 (en) | 2009-12-31 | 2013-05-14 | Facebook, Inc. | Lock-free concurrent object dictionary |
GB201004449D0 (en) | 2010-02-22 | 2010-05-05 | Corbett Sean | Data accelerator |
US8788543B2 (en) | 2010-05-13 | 2014-07-22 | International Business Machines Corporation | Scalable, concurrent resizing of hash tables |
CN102870098B (zh) | 2010-05-27 | 2015-09-30 | 株式会社日立制作所 | 经由通信网络向远程文件服务器传送文件的本地文件服务器及具有该文件服务器的存储系统 |
US20110307471A1 (en) | 2010-06-09 | 2011-12-15 | International Business Machines Corporation | Accelerating Database Management System Operations |
US9355109B2 (en) * | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
US20120011144A1 (en) | 2010-07-12 | 2012-01-12 | Frederik Transier | Aggregation in parallel computation environments with shared memory |
US20120136846A1 (en) | 2010-11-30 | 2012-05-31 | Haoyu Song | Methods of hashing for networks and systems thereof |
US8312066B2 (en) | 2010-11-30 | 2012-11-13 | Telefonaktiebolaget L M Ericsson (Publ) | Hash collision resolution with key compression in a MAC forwarding data structure |
US8880554B2 (en) | 2010-12-03 | 2014-11-04 | Futurewei Technologies, Inc. | Method and apparatus for high performance, updatable, and deterministic hash table for network equipment |
US20120166400A1 (en) | 2010-12-28 | 2012-06-28 | Teradata Us, Inc. | Techniques for processing operations on column partitions in a database |
US8423522B2 (en) | 2011-01-04 | 2013-04-16 | International Business Machines Corporation | Query-aware compression of join results |
JP5624510B2 (ja) | 2011-04-08 | 2014-11-12 | 株式会社東芝 | 記憶装置、記憶システム及び認証方法 |
US10044548B2 (en) | 2012-10-15 | 2018-08-07 | Jetflow Technologies | Flowlet-based processing |
US8346810B2 (en) | 2011-05-13 | 2013-01-01 | Simplivity Corporation | Reference count propagation |
US20120303633A1 (en) | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Systems and methods for querying column oriented databases |
US20120310917A1 (en) | 2011-05-31 | 2012-12-06 | International Business Machines Corporation | Accelerated Join Process in Relational Database Management System |
US9098201B2 (en) | 2011-06-23 | 2015-08-04 | Cohort Fs, Llc | Dynamic data placement for distributed storage |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US8661005B2 (en) | 2011-12-08 | 2014-02-25 | International Business Machines Corporation | Optimized deletion and insertion for high-performance resizable RCU-protected hash tables |
US8768927B2 (en) | 2011-12-22 | 2014-07-01 | Sap Ag | Hybrid database table stored as both row and column store |
US20130218934A1 (en) | 2012-02-17 | 2013-08-22 | Hitachi, Ltd. | Method for directory entries split and merge in distributed file system |
EP2829976A4 (en) | 2012-03-22 | 2015-11-11 | Nec Corp | DISTRIBUTED STORAGE SYSTEM, STORAGE CONTROL METHOD, AND PROGRAM |
US9092141B2 (en) | 2012-04-18 | 2015-07-28 | Hitachi, Ltd. | Method and apparatus to manage data location |
US9535939B2 (en) | 2012-05-31 | 2017-01-03 | International Business Machines Corporation | Intra-block partitioning for database management |
US9355146B2 (en) | 2012-06-29 | 2016-05-31 | International Business Machines Corporation | Efficient partitioned joins in a database with column-major layout |
US8862571B2 (en) | 2012-06-29 | 2014-10-14 | International Business Machines Corporation | Predicate pushdown with late materialization in database query processing |
WO2014010038A1 (ja) | 2012-07-11 | 2014-01-16 | 株式会社日立製作所 | 情報処理システム |
US9665572B2 (en) | 2012-09-12 | 2017-05-30 | Oracle International Corporation | Optimal data representation and auxiliary structures for in-memory database query processing |
US9298723B1 (en) * | 2012-09-19 | 2016-03-29 | Amazon Technologies, Inc. | Deduplication architecture |
US20150301743A1 (en) | 2012-09-24 | 2015-10-22 | Hitachi, Ltd. | Computer and method for controlling allocation of data in storage apparatus hierarchical pool |
US9646105B2 (en) | 2012-11-08 | 2017-05-09 | Texas Instruments Incorporated | Reduced complexity hashing |
US9355060B1 (en) | 2012-12-14 | 2016-05-31 | Amazon Technologies, Inc. | Storage service lifecycle policy transition management |
US9098537B2 (en) | 2012-12-20 | 2015-08-04 | Oracle International Corporation | Techniques for aligned run-length encoding |
US9596312B2 (en) | 2013-01-28 | 2017-03-14 | Facebook, Inc. | Static resource caching |
US9171043B2 (en) | 2013-01-31 | 2015-10-27 | International Business Machines Corporation | Dynamically determining join order |
US20140337375A1 (en) | 2013-05-07 | 2014-11-13 | Exeray Inc. | Data search and storage with hash table-based data structures |
US9367556B2 (en) | 2013-06-14 | 2016-06-14 | International Business Machines Corporation | Hashing scheme using compact array tables |
US9430390B2 (en) | 2013-09-21 | 2016-08-30 | Oracle International Corporation | Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications |
US10311154B2 (en) | 2013-09-21 | 2019-06-04 | Oracle International Corporation | Combined row and columnar storage for in-memory databases for OLTP and analytics workloads |
US9684682B2 (en) | 2013-09-21 | 2017-06-20 | Oracle International Corporation | Sharding of in-memory objects across NUMA nodes |
CN104679746A (zh) | 2013-11-26 | 2015-06-03 | 南京中兴新软件有限责任公司 | 去重复数据的恢复方法及装置 |
US9891831B2 (en) | 2014-11-25 | 2018-02-13 | Sap Se | Dual data storage using an in-memory array and an on-disk page structure |
US9792318B2 (en) | 2014-11-25 | 2017-10-17 | Sap Se | Supporting cursor snapshot semantics |
-
2015
- 2015-03-27 US US14/671,692 patent/US10831736B2/en active Active
-
2016
- 2016-03-24 DE DE102016105526.3A patent/DE102016105526A1/de active Pending
- 2016-03-25 CN CN201610177902.1A patent/CN106021266B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6247014B1 (en) * | 1998-07-01 | 2001-06-12 | Nortel Networks Limited | Method and apparatus for performing hash lookups using valid bit tables with pointers |
CN1968212A (zh) * | 2006-11-24 | 2007-05-23 | 中兴通讯股份有限公司 | 流分类中基于硬件的差异化组织方法 |
CN101388042A (zh) * | 2008-09-17 | 2009-03-18 | 北京六维世纪网络技术有限公司 | 一种建立文件特征库索引的方法及装置 |
CN102893265A (zh) * | 2010-03-10 | 2013-01-23 | 起元技术有限责任公司 | 管理可独立访问的数据单元的存储 |
CN104021205A (zh) * | 2014-06-18 | 2014-09-03 | 中国人民解放军国防科学技术大学 | 一种建立微博索引的方法及装置 |
CN104317966A (zh) * | 2014-11-18 | 2015-01-28 | 国家电网公司 | 一种用于电力大数据快速组合查询的动态索引方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107632779B (zh) * | 2017-08-24 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置、服务器 |
CN107632779A (zh) * | 2017-08-24 | 2018-01-26 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置、服务器 |
CN108595482B (zh) * | 2018-03-13 | 2022-06-10 | 华为云计算技术有限公司 | 一种数据索引方法及装置 |
CN108595482A (zh) * | 2018-03-13 | 2018-09-28 | 华为技术有限公司 | 一种数据索引方法及装置 |
CN110597804A (zh) * | 2018-06-13 | 2019-12-20 | 国际商业机器公司 | 促进分布式键值存储库上的空间索引 |
CN110597804B (zh) * | 2018-06-13 | 2023-06-09 | 国际商业机器公司 | 促进分布式键值存储库上的空间索引 |
US11599552B2 (en) | 2018-10-10 | 2023-03-07 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11334270B2 (en) | 2018-12-14 | 2022-05-17 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
CN113196260B (zh) * | 2018-12-14 | 2022-06-17 | 美光科技公司 | 能够选择性使用键部分的键值存储树 |
CN113196260A (zh) * | 2018-12-14 | 2021-07-30 | 美光科技公司 | 能够选择性使用键部分的键值存储树 |
US11657092B2 (en) | 2018-12-26 | 2023-05-23 | Micron Technology, Inc. | Data tree with order-based node traversal |
CN113297432A (zh) * | 2021-06-01 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 用于分区拆分与合并的方法、处理器可读介质和系统 |
CN113297432B (zh) * | 2021-06-01 | 2023-11-07 | 阿里巴巴新加坡控股有限公司 | 用于分区拆分与合并的方法、处理器可读介质和系统 |
WO2023143096A1 (zh) * | 2022-01-26 | 2023-08-03 | 阿里云计算有限公司 | 数据查询方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20160283538A1 (en) | 2016-09-29 |
DE102016105526A1 (de) | 2016-09-29 |
US10831736B2 (en) | 2020-11-10 |
CN106021266B (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021266A (zh) | 支持动态更新的快速多层索引 | |
US9767131B2 (en) | Hierarchical tablespace space management | |
CN102770849B (zh) | 当应用基于用户的安全性时优化数据高速缓存 | |
CN106021267B (zh) | 对数据结构的并发读取和插入的方法和系统 | |
US9805080B2 (en) | Data driven relational algorithm formation for execution against big data | |
US9858303B2 (en) | In-memory latch-free index structure | |
CN103902632B (zh) | 键值存储系统中构建文件系统的方法、装置及电子设备 | |
JP6188732B2 (ja) | マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム | |
CN104050223B (zh) | 用于文本挖掘和搜索的数据透视面 | |
US10242050B2 (en) | Database caching in a database system | |
US10915532B2 (en) | Supporting a join operation against multiple NoSQL databases | |
US20150310051A1 (en) | Data partitioning for high-efficiency data retrieval | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
CN103678442A (zh) | 基于用户数据访问模式的数据库表格式转换的方法和系统 | |
CN106682110B (zh) | 一种基于哈希格网索引的影像文件存储和管理系统及方法 | |
EP3767486B1 (en) | Multi-record index structure for key-value stores | |
US11475151B2 (en) | Security policy management for database | |
CN107408132A (zh) | 在列存储中的插入和点查询操作的有效性能 | |
Wu et al. | NFL: robust learned index via distribution transformation | |
US11847121B2 (en) | Compound predicate query statement transformation | |
US20220019907A1 (en) | Dynamic In-Memory Construction of a Knowledge Graph | |
CN105518672A (zh) | 跨多个模型的数据检索 | |
JP6006740B2 (ja) | インデックス管理装置 | |
WO2023201002A1 (en) | Implementing graph search with in-structure metadata of a graph-organized file system | |
JP5998112B2 (ja) | アクセス制御方法、データ蓄積方法、アクセス制御システム、データ蓄積装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |