CN113874852A - 用于在多主混合事务和分析处理系统中演进大规模数据集的索引 - Google Patents
用于在多主混合事务和分析处理系统中演进大规模数据集的索引 Download PDFInfo
- Publication number
- CN113874852A CN113874852A CN202080037664.9A CN202080037664A CN113874852A CN 113874852 A CN113874852 A CN 113874852A CN 202080037664 A CN202080037664 A CN 202080037664A CN 113874852 A CN113874852 A CN 113874852A
- Authority
- CN
- China
- Prior art keywords
- index
- run
- index run
- data
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/213—Schema design and management with details for schema evolution support
-
- 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/221—Column-oriented storage; 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/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/14—Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
根据本发明的一个或多个实施例,一种计算机实现的方法包括创建用于多区域数据存储系统的混合索引,其中第一区域具有被组织用于事务处理的数据,并且第二区具有被组织用于分析处理的数据。混合索引中的每个索引条目包括索引键,该索引键包括相等列、开始时间戳列和元组序列号列。该方法还包括构建要被包括在混合索引中的索引运行,该索引运行包括多个索引条目。通过扫描来自第一区域的数据块来选择列、计算要被包括在混合索引中的索引条目的元组序列号值、以及使用要被包括在索引运行中的列根据预定顺序对索引条目进行排序,来创建索引运行。
Description
背景技术
本发明一般涉及计算机技术,尤其涉及用于在多主混合事务/分析处理系统中演进大规模数据集的索引。
实时分析(例如,风险分析、在线推荐和欺诈检测等)的普及,要求数据管理系统处理快速并发事务(例如,在线事务处理或OLTP)和对新鲜数据的大规模分析查询(例如,在线分析处理或OLAP)。OLTP应用促进高速摄取数据,将它们持久化到磁盘或共享存储设备中,并且OLAP应用促进在新摄取的数据上同时运行分析查询以迅速导出洞察。实时分析的必要性已经促使混合交易和分析处理(HTAP)系统的出现。HTAP系统在单个系统中支持OLTP和OLAP查询,从而允许对新摄取的数据进行实时分析。细粒度索引在HTAP系统中是强制性的,以支持用于高速事务处理和实时分析的高效点查找和范围查询。
发明内容
根据本发明的一个或多个实施例,一种计算机实现的方法包括创建用于多区域数据存储系统的混合索引,在该多区数据存储系统中,第一区用于被组织用于事务处理的数据,并且第二区用于被组织用于分析处理的数据。混合索引中的每个索引条目至少包括索引键,该索引键还包括相等列。索引条目还包括开始时间戳列,其指示对应于索引条目的数据被插入时的时间戳。所述索引条目进一步包含元组序列号列,其指示所述索引条目在分层存储装置中的位置。该方法还包括构建要包括在混合索引中的索引运行。索引运行包括多个索引条目。构建索引运行包括确定通过从第一区域扫描数据块而在索引运行中创建的列,所述数据块将与索引运行相关联。构建索引运行还包括计算要被包括在混合索引中的索引条目的元组序列号值。元组序列号值存储在元组序号列中。构建索引运行还包括使用将被包括在索引运行中的列根据预定顺序对索引条目进行排序。
在一个或多个示例中,构建索引运行还包括创建索引运行的头部,以及将索引运行指针的值设置为指向头部。头部包括被设置为索引运行指针的当前值的指针。在一个或多个示例中,存储在索引运行内的数据元素的概要被存储在头部内。此外,在一个或多个示例中,构建索引运行包括计算索引运行的偏移数组。偏移数组可以存储在头部中。偏移数组将散列值的最高有效n位映射到索引运行中的索引条目的偏移。
在一个或多个示例中,索引条目还包括索引键中的排序列。
在一个或多个示例中,每个索引运行被分配级别编号,其中级别编号指示用于构造索引运行的数据的源。在一个或多个示例中,级别编号还指示与索引运行相关联的数据被存储在其中的区域,该区域是来自多区域数据存储系统中的多个区域中的一个区域。在一个或多个示例中,分配单独的线程用于维护来自每个级别的一个或多个索引运行。
此外,根据本发明的一个或多个实施例,一种计算机实现的方法包括响应于接收到合并数据库中的两个索引运行第一索引运行和第二索引运行的请求,创建第三索引运行以包括来自第一索引运行和来自第二索引运行的列,在数据库中使用分层数据存储装置来存储数据。该方法还包括使用合并排序对来自第一索引运行的列和来自第二索引运行的列进行全局排序。该方法还包括基于确定第三索引运行属于非持久化级别,将第三索引运行仅存储到高速缓存存储装置。该方法进一步包括基于确定第三索引运行属于持久化级别,并且第三索引运行的级别编号低于清除级别,将第三索引运行存储到高速缓存存储装置和共享存储装置。该方法还包括基于确定第三索引运行属于持久化级别,并且第三索引运行的级别数等于或高于清除级别,将第三索引运行仅存储到共享存储装置。
在一个或多个示例中,该方法还包括更新数据库中的索引运行的列表。更新列表包括改变指向第一索引运行的地址的第四索引运行的指针,该指针被改变为第三索引运行的地址,以及删除第一索引运行和第二索引运行。此外,在一个或多个示例中,在第一索引运行和第二索引运行被合并成属于持久化级别的索引运行之后,第一索引运行和第二索引运行被删除。
上述特征还可以至少由系统、计算机程序产品和机器以及其他类型的实现来提供。
通过本发明的技术实现了额外的技术特征和益处。本发明的实施例和方面在本文中详细描述,并且被认为是所要求保护的主题的一部分。为了更好地理解,参考具体实施方式和附图。
附图说明
在说明书的结尾处的权利要求中特别指出并清楚地要求了本文描述的专有权的细节。从下面结合附图的详细描述中,本发明的实施例的前述和其它特征和优点将变得显而易见,其中:
图1描绘了根据本发明实施例的云计算环境;
图2描绘了根据本发明实施例的抽象模型层;
图3描绘了基于HTAP的系统中的数据生命周期;
图4描绘了根据本发明的一个或多个实施例的混合索引的代表性视图;
图5描绘了根据本发明的一个或多个实施例的示例性索引运行;
图6描绘根据本发明的一个或多个实施例的用于索引维护的示例性运行分配;
图7描绘了根据本发明的一个或多个实施例的用于构建索引运行的示例方法的流程图;
图8描绘了根据本发明的一个或多个实施例的用于清除索引运行的示例方法的流程图;
图9描绘了在示例场景中根据本发明的一个或多个实施例的清除操作的视觉图示;
图10描绘了根据本发明的一个或多个实施例的用于索引合并操作的示例方法的流程图;
图11和图12描绘了在示例场景中根据本发明的一个或多个实施例的索引合并操作的视觉图示;
图13示出了根据本发明的一个或多个实施方式的执行索引演进操作的示例方法的流程图;
图14示出了根据本发明的一个或多个实施例的演进索引的示例性场景;
图15提供根据本发明的一个或多个实施例的用于索引维护操作的伪代码;
图16示出根据本发明的一个或多个实施例的恢复运行列表的伪代码;以及
图17描绘了根据本发明的一个或多个实施例的用于对单个索引运行执行范围扫描查询的示例方法的流程图。
这里描述的图是说明性的。在不脱离本发明的精神的情况下,可以对其中描述的图或操作进行许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。此外,术语“耦合”及其变型描述了在两个元件之间具有通信路径,并且不暗示元件之间的直接连接,而在它们之间没有中间元件/连接。所有这些变化都被认为是说明书的一部分。
在附图和以下对所公开的实施例的详细描述中,附图中所示的各种元件具有两个或三个数字附图标记。除了次要的例外,每个附图标记的最左边的(多个)数字对应于其中首先示出其元件的图。
具体实施方式
在此参考相关附图描述本发明的各种实施例。在不偏离本发明的范围的情况下,可以设计本发明的替代实施例。在以下描述和附图中,阐述了在元件之间的各种连接和位置关系(例如,上方、下方、相邻等)。除非另有说明,这些连接和/或位置关系可以是直接的或间接的,并且本发明并不旨在在这方面进行限制。因此,实体的偶联可以指直接或间接偶联,并且实体之间的位置关系可以是直接或间接位置关系。此外,本文所述的各种任务和过程步骤可并入具有本文未详细描述的额外步骤或功能性的更综合程序或过程中。
以下定义和缩写用于解释权利要求和说明书。如本文所用,术语“包含”、“包括”、“具有”、“含有”或其任何其它变型旨在涵盖非排他性的包括。例如,包括一系列元素的组合物、混合物、工艺、方法、制品或装置不一定仅限于那些元素,而是可以包括未明确列出的或此类组合物、混合物、工艺、方法、制品或装置固有的其他元素。
另外,术语“示例性”在本文中用于表示“用作示例、实例或说明”,本文描述为“示例性”的任何实施例或设计不一定被解释为比其它实施例或设计优选或有利。术语“至少一个”和“一个或多个”可以理解为包括大于或等于一的任何整数,即一、二、三、四等。术语“多个”可以理解为包括大于或等于二的任何整数,即二、三、四、五等。术语“连接”可包括间接“连接”和直接“连接”两者。
术语“约”、“基本上”、“大约”及其变体旨在包括与基于提交本申请时可用的设备的特定量的测量相关联的误差度。例如,“约”可以包括给定值的±8%或5%或2%的范围。
为了简洁起见,与制造和使用本发明的方面相关的常规技术可以或可以不在本文中详细描述。特别地,用于实现本文描述的各种技术特征的计算系统和特定计算机程序的各个方面是公知的。因此,为了简洁起见,许多常规实现细节在本文中仅简要提及或完全省略,而不提供众所周知的系统和/或过程细节。
如前所述,HTAP系统在单个系统中支持OLTP和OLAP查询,从而允许对新摄取的数据进行实时分析。细粒度索引在HTAP系统中是强制性的,以支持用于高速事务处理和实时分析的高效点查找和范围查询。然而,至少由于共享存储和数据演进所面临的挑战,在HTAP系统中索引大量数据是非常重要的。
首先,对于大规模HTAP,仅存储器解决方案是不够的,至少是因为防止分析查询对操作工作负载的干扰的限制。结果,大多数HTAP系统将数据持久化在高可用容错共享存储装置中,包括分布式文件系统。然而,这些共享存储选项中的大多数不能很好地进行随机存取和原地更新。例如,HDFS仅支持只附加操作并优化块级别传输,并且对象存储完全不允许对象内部的随机访问和对对象的更新。为了适应共享存储装置的独特特性,索引操作,例如插入、更新和删除,必须使用顺序I/O而不用原地更新。
此外,通过网络访问远程共享存储装置以进行索引查找是昂贵的,例如,对于通过HTTP上的REST API来访问对象存储装置。结果,HTAP上的索引方法必须充分利用分布式集群环境中的存储分层结构来进行高速缓存。特别地,现有解决方案可以利用现代硬件中的大存储器和固态驱动器(SSD)。然而,由于HTAP系统中的大规模数据,仅索引的最频繁访问的部分可以被本地高速缓存,而在共享存储装置中留下冷条目。必须开发有效的高速缓存机制以便于索引查找。
此外,关于数据演进,因为HTAP系统必须有效地支持事务和分析工作量,所以通常数据存储在不同的组织中,通常一个组织对更近的数据的事务有好处,而一个组织对更旧的数据的分析有好处。这里,“组织”指所存储数据的一部分,该部分是基于时间确定的。每个部分可以使用不同的数据结构来存储。使用这种“组织”是因为随着数据变得更旧,它被处理并且基于处理的结果来存储它。例如,来自最近一秒(或任何其它持续时间)的事务数据可能尚未被完全分析用于分析查询,然而,当它被分析和存储时,它被组织用于执行这样的分析查询。本文将这些时间上分离的数据称为不同的数据“区域”。随着系统中数据的老化,它们从交易友好区域演进到分析友好区域。将数据从一个区演进到另一个区可包括根据与不同数据区域相关联的模式来重新组织数据。在一个或多个示例中,不同的数据区域可以存储在不同类型的存储设备中,诸如RAM、SSD等。
这种区域可以以各种方式实现。例如,在本发明的一个或多个实施例中,松散耦合的HTAP解决方案采用非关系存储库用于操作的工作负载,并且周期性地将数据从非关系存储库复制到共享存储设备上的成列格式的文件中,使得分布式数据库引擎可以有效地查询它们。在一个或多个示例中,数据被组织到读优化的主存储库和写优化的增量存储库中。写入首先被缓冲到以行为主的增量存储库中,其被进一步变换到列式主存储库中以便于分析查询。
在使用HTAP的一个或多个示例系统中,事务首先将写入附加到事务日志中,然后将事务日志整理成列式数据块。通过创建对于查询最优的数据版本和数据分区,将整理的数据进一步周期性地后整理到分析友好的组织。在这些HTAP系统中,不同区域上的数据演进是持续进行的,这对构建和维护索引提出了重大挑战。
多区域HTAP系统上的现有索引解决方案或者仅支持事务友好区域和松散耦合HTAP解决方案上的索引,或者支持不同区域上的单独索引。
因此,为了解决这样的技术挑战,本发明的一个或多个实施例提供了多版本和多区域日志结构合并类(LSM类)索引。这样的索引有助于高效地查询历史数据,诸如用于实时分析,尤其是用于作为真实HTAP场景中的事务的一部分的分析查询。结果,历史数据需求被这样的索引覆盖。此外,在不同区域上具有单独的索引暴露了数据的划分视图,从而需要额外的工作来组合跨越多个区域的索引查询结果。特别地,由于HTAP数据的不断发展的特性,必须确保在最终结果中没有重复或丢失的数据。由本发明的一个或多个实施方式描述的索引在HTAP系统中的不同区域上提供一致和统一的索引。
在此,在大规模HTAP系统的上下文中描述本发明的一个或多个实施例,该系统利用复杂的分析和分列式数据处理来同时实现快速事务和分析。然而,应该理解,本发明的一个或多个实施例不限于这种实现,并且这里描述的特征也可应用于使用不同类型的HTAP系统和数据处理的其他环境。
现在,以下是背景技术的简要描述,之后,描述本发明的一个或多个实施例所使用的混合索引的特定特征。预先理解,尽管本公开包括关于云计算的详细描述,但是本文中记载的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,所述可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。
广域网接入:能力在网络上可用,并且通过标准机制来访问,该标准机制促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和个人数字助理等)使用。
资源池化:供应商的计算资源被池化以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
快速弹性:在一些情况下,可以自动快速且弹性地提供快速向外扩展和快速释放快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用程序可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储装置、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储装置的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储装置、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图1,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,所述本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图1中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图2,示出了由云计算环境50(图1)提供的一组功能抽象层。应当预先理解,图2中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层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;以及源代码版本化96,可以理解,这些仅仅是一些示例,并且在其它实施例中,这些层可包括不同的服务。
在一个或多个示例中,HTAP系统可实现为具有若干松散耦合的进程的多主HTAP系统。此外,在一个或多个示例中,高速事务被支持为具有对新数据的弱形式的快照隔离和并发分析查询,例如使用应用编程接口来实现这一点。
图3描述了基于HTAP的系统中的数据生命周期。如可以看到的,并且如进一步描述的,数据在系统100中的多个区域上演进,该系统是HTAP系统。系统100包括处理单元190,其可以包括多个处理器。在一个或多个示例中,多个处理器是分布式计算系统的不同计算机服务器的一部分。计算机服务器也被称为“节点”。系统100还包括各种类型的非瞬态存储器设备。处理单元190的存储器使用根据存储器装置的类型而变化。
系统100中的表可以使用用户提供的分片键(作为主键的子集)来“分片”。在数据库计算中,“分片”是一种便于通过跨多个数据库分割数据来缩放数据库的技术。表碎片被复制到多个节点中,其中一个副本充当碎片领导者,而其余的是从。插入的记录由分片键路由到不同的分片。碎片的任何副本可以摄取数据。
作为数据摄取的一部分,事务首先将写入附加到存储器内事务日志缓冲器101中。系统100中的每个碎片具有指定的整理器,其在引导者副本上运行。整理器是由处理单元190中的处理器中的一个或多个处理器执行的过程,尤其是被指派给领导者副本的那些处理器。
整理器周期性地(例如,每秒、每5秒等)按照时间顺序将来自碎片副本的来自事务日志缓冲器101的事务日志合并,为每个记录设置单调递增的开始时间戳(beginTS),并且在共享存储装置160以及本地高速缓存155中创建列式格式数据文件,也称为块。共享存储装置160通常访问较慢(较高的等待时间),从而激发本地高速缓存155的使用。例如,共享存储装置160可以是硬盘驱动器、磁带、分布式文件系统、云存储等,而本地高速缓存155可以是固态驱动器、非易失性存储器(NVM)设备等。本地高速缓存155被做成非易失性的,使得由本发明的一个或多个实施例生成的混合索引的高速缓存的组件172可被持久保存。混合索引是整理的索引173和后整理的索引174的组合,其中高速缓存的组件172是高速缓存在本地高速缓存155中的混合索引的一部分。持久化高速缓存的组件172的各种优点包括高速缓存的组件172如果/在系统100经历故障并且必须重启时可容易地供系统100使用。通过以这种方式持久化高速缓存的组件172,索引过程不必再次执行。
每个整理的块由称为整理的块ID的单调递增ID唯一地标识。系统100中的事务的提交时间被有效地延迟到整理时间。另一个单独的过程,称为后整理器,周期性地(例如,每10分钟、15分钟、30分钟等)对在整理的区域(103)中的新整理的块执行后整理操作,以使数据更分析友好,并将数据从整理的区域(103)移动和转换到组织的(或后整理的)区域(104)。后整理操作在来自整理的区域(103)的新整理的数据上执行一系列任务,诸如设置用于版本化的更新记录的结束时间戳、基于针对查询优化的用户定义的分区键(通常不同于分片键)划分数据、以及将最新版本与历史版本分离以便于对最新数据的查询。后整理操作公布文件列表,该列表包括单调递增的后整理的序列号、来自在该操作中演进的整理的区域(103)的整理的块的ID范围、以及后整理的区域(104)中生成的块的列表。系统100在单独的整理的区域(103)和后整理的区域(104)中组织数据以支持快速摄取到整理的区域(103)中。同时,整理的区域(103)中的数据由后整理器在后台使用优化策略来优化以用于分析查询,该优化策略延迟数据的一部分的优化直到需要该部分以避免使用计算资源来优化未被使用的数据。
根据新鲜度要求,查询可能需要一起访问后整理的区域(104)和整理的区域(103)中的数据。然而,事务日志缓冲器(101)中的数据不被查询访问,因为它包含未提交的数据。为了便于点查找和交易处理,我们的目标是在整理的区域(103)和后整理的区域(104)中的数据上建立索引,如图1所示。
因此,混合索引在后台随着数据从一个区域到另一个区域的不断演进而为查询提供统一的视图。随着数据从整理的区域(103)演进到后整理的区域(104),混合指数也通过更新整理的索引173和后整理的索引174而更新。混合索引(图3中的块172、173、174的组合)基于日志结构的合并树(LSM树)。
作为LSM树的背景:LSM树是针对高容量摄取而优化的持久性索引结构。代替更新可能需要随机I/O的适当位置的条目,LSM树批量地插入到存储器中,并且当存储器满时使用顺序I/O将数据冲刷到磁盘。每个冲刷操作创建新的运行。LSM树运行是不可变的。通过将新的条目插入到存储器中来处理修改(插入、更新和删除)。插入或更新简单地插入具有相同键的新条目,而删除放置指示该键已被删除的墓碑条目。查询必须使条目与来自多个运行的相同键一致,其中来自较新(即,较新)运行的条目优先于来自较旧运行的条目。这里使用的“运行”可以以各种方式来构造,例如使用B树、具有存储在存储器中以引导搜索的页面指针列表的排序数组、或任何其它这样的数据结构。
为了保持运行的数量较小,这改进了查询性能,周期性地将运行合并成较大的运行。通常,在实践中通常使用的合并过程包括分级和分层。下面简要讨论,然而,应当理解,在本发明的一个或多个实施例中可以使用任何其它合并过程。在分级和分层方案中,运行被组织成级别,其中新的运行被添加到最低级别0,并且运行逐渐被合并到更高的级别。分级策略通过在每个级别中仅限制一次运行来优化索引查找。级别L中的运行立即与级别L+1中的运行合并,然而,分层策略允许层别L中至多N个运行,并且这些运行被合并在一起成为级别L+1中的新运行,以查找成本为代价减少分摊的插入成本。
尽管在现有技术中已经使用了类LSM索引,但是还没有解决利用多级存储分层结构进行索引和数据演进的技术挑战,这是本发明的一个或多个实施例正在完成的。
图4描绘了根据本发明的一个或多个实施例的混合索引的代表性视图。混合索引200是类似LSM的索引,其中运行250被组织成跨多个区(103,104)的级别。混合索引200还包括头部块402,其包括用于混合索引200的元数据,诸如包括在混合索引200中的数据的概要。此外,索引运行250被组织成多个级别(例如,级别0到5)。应当注意,在一个或多个示例中,取决于数据的年龄,每个级别可以不存在。例如,在图4中,数据被组织成级别0、级别1和级别6,在其它示例中,索引运行250可以被组织成不同数量的级别(例如,0-4个级别),和/或被组织成不同的级别(级别0、1、2和3)。数据摄取创建新的索引运行250。每个索引运行250具有排序行(即,索引条目)的列表。如进一步所述,使用对读取器非阻塞的后台索引维护操作来维护混合索引200。索引维护操作包括在下一级别中产生新的索引运行250的合并操作、用于空间管理的索引清除和垃圾收集、以及在数据从一个区域到另一个区域进行或更新之后执行的索引演进操作。
混合索引200可以分别以单运行格式(250)和多运行结构使用,如将在此描述的。这里,索引运行250(由三角形表示)是包含来自一组整理的块的数据的索引条目的索引文件。在每个索引运行中标记块ID范围(在图4中描绘为三角形)。
如图4所示,混合指数200可包括多个运行250,其中0至5级(2至5级未示出)被构造用于整理的区域103,而6至9级(7至9级未示出)被构造用于后整理的区域104。为了清楚起见,每个运行250被标有其对应的整理的块ID的范围。在所示的例子中,标记为23-24和21-22的整理的运行属于级别0,而标记为16-20和11-15的运行属于级别1,标记为6-10和0-5的后的整理的运行属于级别6。
索引运行250包括索引键,并且零个或多个包括列220。索引键210被定义为具有零个或多个相等列212(用于相等谓词)和零个或多个排序列214(用于范围谓词)的复合键。包含列220是包括在索引运行250中以通过允许仅索引访问来促进查询处理的列。混合索引200包括在索引键210中指定的至少一个相等列212或排序列214。
如果指定了(多个)相等列212,则相等列值的散列值也被存储在索引运行250中以加速索引查询。以此方式,索引运行250是散列和范围索引的组合。在示例物联网(IoT)应用中,将设备ID作为相等列212,而将消息号(msg)作为排序列214。作为特殊情况,(多个)相等列212被省去,这使得混合索引200成为范围索引。在以上示例中,正被摄取的记录可以至少包括设备ID、msg和消息以及其他数据元素。
在一个或多个示例中,索引键是表的主键,即,混合索引200是主索引。
索引运行可以在逻辑上被看作是行表。除了以上索引定义中指定的列之外,该表还包含两个额外的列:开始TS列230和元组序列号(TSN)列235。开始TS列230指示记录被插入时的时间戳。系统100中的开始TS由整理操作生成。TSN列235指定索引记录的精确位置。在一个或一个以上实例中,系统100中的TSN可为64位整数,其中高阶位指示块ID,而低阶位指定所述块内的记录偏移。
因此,索引运行中的每一行具有散列列225、相等列212、排序列214、开始TS 230、包括列220和TSN 235。在一个或多个示例中,索引运行中的行按照散列列225、相等列212、排序列214和开始TS的降序230来排序。
作为特殊情况,如果没有指定相等列212,则从索引运行中省略散列列225。降序的开始TS列230便于访问较新版本。所有排序列,即散列列225、相等列212、排序列214和开始列230,以词典式可比较格式存储,使得在处理索引查询时可通过使用存储器比较操作来比较键。
物理上,索引运行被存储为头部块加上一个或多个固定基数数据块(除了最后的数据块之外)。头部块包含索引运行的元数据信息,例如数据块的数量、该运行所属的合并级别、以及该运行所对应的整理的块ID的范围。
在本发明的一个或多个实施例中,为了在索引查询期间删除不相关的运行,将概要存储在头部块中。概要包含存储在该运行中的每个键列的范围。如果某个键列的输入值不与由概要指定的范围重叠,则索引查询可以跳过运行。
当在混合索引200定义中指定相等列212时,头部块包括2n个整数的偏移数组以便于索引查询。偏移数组将散列值的最高有效n位的值映射到索引运行中的偏移。当处理索引查询时,可以使用偏移数组来提供用于二分搜索的更紧凑的开始和结束偏移,从而有效地限制要访问的块的数量。
图5示出了根据本发明的一个或多个实施例的示例性索引运行。在所描述的示例场景中,考虑设备ID(在图5中标记为“设备”)是相等列212,msg是排序列214。为了简单起见,索引运行中的其他列未示出,并且假设散列值仅取一个字节。表a示出了该运行中的索引条目,其中散列值以二进制格式示出,并且表b示出了具有散列值的最高有效3位的偏移数组。该索引运行250的物理布局在表c中示出,其中索引运行250包含一个头部块402和两个数据块504。
根据本发明的一个或多个实施例,混合索引200可以包括被组织为多个级别的多个运行。较低级别的运行,例如0级,对应于最近的数据,并且周期性地合并到较高的级别中以限制运行的总数。然而,HTAP系统中的数据通常如本文所述被组织成多个区域(103,104),并且数据从一个区域到另一个区域逐渐演进。为了说明HTAP系统中的这种多区域数据组织,混合索引200相应地将级别分成多个区域。在一个或多个示例中,混合索引200包含两个区域,一个用于整理的区域(103),一个用于后整理的区域(104)。在每个区域内,基于它们创建时间将运行链接在一起成为链表,其中头部402指向最近的运行。运行只能被合并到相同的区域中。也就是说,在整理的区域103中的运行不能被合并到在后整理的区域104中的新运行中。相反,随着数据在系统中随时间演进,运行通过索引演进操作周期性地演进到另一区域。索引维护操作的细节,例如合并和演进,在此进一步讨论。
在一个或多个示例中,用户可将一个或多个较低级别设置为非持久的,以避免向共享存储设备写入太多的小文件,因为较低级别的运行通常较小且频繁地合并。非持久级别中的运行仅存在于存储器150和SSD高速缓存155中,而不持久存在于共享存储装置160中,这可以显著地提高合并性能。然而,对于可恢复性,级别0必须被设置为持久的,使得系统在系统崩溃/故障之后不需要重建索引运行。
图6描绘了根据本发明的一个或多个实施例的用于索引维护的示例性运行分配。在该图示中,每个运行250被标记有其所属的级别。为了最小化由索引维护引起的并发索引修改,每个级别被分配给专用索引维护线程610。每个线程610周期性地仅对分配给该线程610的运行250执行索引维护操作。这保证了索引运行250一次只能由一个线程610修改,从而最小化了并发索引修改中的锁定和竞争。索引维护操作包括索引建立、清除、合并和演进操作。索引维护与索引查询和其他索引修改同时执行。为了实现索引查询的最大并发性,使用原子指针交换而不是锁定。所有索引维护操作使得每个索引修改,即指针交换,导致索引的有效状态。结果,索引查询是非阻塞且无锁的。
此外,如图6所示,线程610的分配被移位一个运行250,即,用于级别L的线程610处理了级别L中的除第一运行之外的所有运行加上级别L+1中的第一运行。
图7描绘了根据本发明的一个或多个实施例的用于构建索引运行的示例方法的流程图。索引维护包括索引构建操作,该操作在整理的区域103中的数据块上创建新的索引运行250,使得整理的数据可从索引中查询。为了构建索引运行250,在702,扫描整理的区域103中的整理的块以确定哪些列,即相等列212、分类列214和包括列220要被包括在索引运行250中。此外,在704计算TSN 235。此外,在706,计算等式列212(如果有的话)的散列值225。
此外,在708,索引条目以散列值225、排序列214、相等列212的升序和开始TS 230的降序排序。在708,排序后的条目被顺序地写入索引数据块。此外,基本上同时计算偏移数组510。
在所有条目被写出之后,在710处,创建头部块402,包括写出具有其他必要字段的偏移数组510。在712,通过将新索引运行250设置为指向所创建的头部402,并将头部402重新设置为新索引运行250,来将新索引运行250添加到整理的运行列表。注意,指针交换的顺序对于保证并发读取器的正确性是重要的。
图8描绘了根据本发明的一个或多个实施例的用于清除索引运行的示例方法的流程图。索引维护包括从高速缓存155中移除一些索引条目以释放高速缓存空间的索引清除操作。通常,大规模HTAP系统包括具有存储器150、高速缓存155和共享存储装置160的多层存储分层结构(图3)。可以是SSD的高速缓存155用作共享存储装置160的高速缓存层以加速索引查询。通常,索引运行250适合SSD高速缓存155,使得共享存储装置160用于备份。然而,当SSD高速缓存155满时,索引清除从SSD高速缓存155中移除一些索引条目以释放高速缓存空间。在一个或多个示例中,假设最近的数据被更频繁地访问。因此,随着索引200增长,从SSD高速缓存155中清除旧的运行,即,高级运行,以释放高速缓存空间。
索引清除操作由上面参考图6描述的索引维护线程610处理,为了确保运行以正确的顺序被清除,即,首先清除较旧的运行,跟踪当前清除级别。当前清除级别将清除的和缓存的运行分开。换句话说,清除在清除水平之上的所有运行250,而高速缓存在清除水平之下的运行。
仅允许当前清除级别的线程清除索引运行250。当SSD高速缓存空间满时,在802、804,与当前清除级别相关联的该线程610通过从SSD高速缓存155丢弃数据块来清除其分配的运行250。如果所有分配的运行都已经被清除,则线程610递减清除级别,将所有权转移到下一个较低级别线程,806。
图9描绘了在示例场景中根据本发明的一个或多个实施例的清除操作的视觉图示。在所描述的情况下,块ID 0-18和19-36的索引运行250从高速缓存155中丢弃,并且因此仅存储在共享存储装置160中。
相反,如果SSD高速缓存155具有空闲空间,则在808,将最近运行250加载(在清除的相反方向)到SSD高速缓存155中以加速索引查询。在加载的情况下,被分配给当前清除级别的线程610通过将数据块从共享存储装置160高速缓存到SSD高速缓存155,810中,来从当前清除级别加载相应的运行250。此外,在812、814,当所有分配的运行都已被高速缓存时,线程610递增清除级别,将所有权转移到下一个更高级别的线程。
索引维护操作还包括索引合并。索引运行250被周期性地合并以形成更大的索引运行250,以限制运行250的数量并提高查询性能。如本文前面所述,可以使用通过在每个级别中仅限制一个索引运行250来优化索引查询的分级策略来执行合并。在这种情况下,当第一索引运行250的大小超过预定阈值时,将级别L中的第一索引运行250与下一级别(L+1)中的第二索引运行250合并。因此,第一索引运行250在其填充并合并到下一级之前被合并多次。相反,分层策略通过允许每级中的多个索引运行250来优化写入放大。在这种情况下,L级中的索引运行被合并到L+1级中的新索引运行中本发明的一个或多个实施例通过使用组合了分级和分层合并技术的混合合并来平衡写放大和查询性能之间的折衷。类似于分层策略,我们允许在每个级别中的多个索引运行250。另一方面,类似于分级策略,合并级L中的运行不总是创建级L+1中的新运行,如果级L+1中的第一运行不够大(作为可配置参数),则它与级L中的运行合并在一起,否则,级L中的运行被合并到级L+1中的新运行中,因此,级L的索引维护线程负责除了级L的第一索引运行250之外的所有运行加上级L+1中的第一索引运行250,这导致如图6所示的一次运行移位分配。
图10描绘了根据本发明的一个或多个实施例的用于索引合并操作的示例方法的流程图。最初,该方法包括在902通过扫描要被合并的第一索引运行和第二索引运行中的列来确定要在作为合并索引运行的新索引运行中创建的列250。在合并操作期间形成新的索引运行250,当与从整理的区域103中的整理的块创建索引运行250相比时,具有的差别是被合并的每个索引运行中的条目已经被排序。因此,在904,在合并的情况下,必须执行合并排序以对被合并的两个索引运行250进行全局排序。
新的运行的写入目标取决于混合索引200的当前索引清除级别和非持久级别。具体地,如果新的运行250属于非持久保存的级别,则在906、908,它仅被写入SSD高速缓存155。否则,如果其合并级别低于当前索引清除级别,则在906、910和912,将新索引运行250写入SSD高速缓存155和共享存储装置160,这减轻了索引合并之后的高速缓存未命中。最后,如果新的索引运行250被保持并且高于当前索引清除水平,则在906、910和908,它仅被写入共享存储装置160。
然后,新索引运行250替换运行列表中的合并索引运行。具体地,在914,新索引运行250被设置成指向由最后合并的运行最初指向的索引运行250,并且然后在第一合并的运行之前的索引运行被设置成指向新索引运行250。需要对运行列表进行锁定以确保运行替换的正确性,因为读取并设置了两个指针,这不是原子操作,并且指针可以由下一级线程同时修改。然而,锁定开销是可忽略的,因为它仅影响不经常发生的索引维护操作,例如每秒或每分钟,并且这些锁定不阻止任何索引查询。
此外,在916,当最后一个读取器退出时,删除合并的运行250。然而,在非持久化的级别之前的第一级别中的索引运行不能在被合并之后立即被移除,因为否则索引运行可能在系统崩溃时丢失。相反,仅在这些运行被合并到非持久化级别之后的第一级别之后,才跟踪并删除这些运行。例如,假设非持久化的级别被配置为级别1到2;也就是说,当将级别0中的运行合并到级别1中时,不能立即删除它们以便恢复。系统跟踪这些运行,并且仅在它们已经被合并到再次被持久化在共享存储装置160上的第3级别中时才删除它们。
索引维护还包括随着数据从整理的区域103中的块演进到后整理的区域104中的块而演进索引。如前所述,后整理器周期性地将整理的区域103中的数据块移动到后整理的区域104,将它们标记为弃用并最终被删除。相应地,索引条目也必须从整理的运行列表演进到后整理的运行列表,使得弃用整理的区块不再被引用。然而,由于至少以下挑战,索引演进是重要的。
首先,在一个或多个HTAP系统中,数据演进由单独的进程处理。例如,后整理器是在与索引进程不同的节点上运行的单独进程。因此,一个挑战是在索引演进操作期间最小化多个进程之间的通信和协调。此外,索引演进操作本身对索引应用多次修改,例如,将新的运行添加到后整理的运行列表并清除后整理的运行列表中的旧的运行,这对实现索引查询的非阻塞提出了另一挑战。
图13描绘了根据本发明的一个或多个实施方式的执行索引演进操作的示例方法的流程图。为了处理由单独的进程处理的数据演进,在本发明的一个或多个实施例中的索引演进操作由索引过程异步地执行,而没有任何协调。在每次后整理操作之后,后整理器发布并保持用于该操作的后整理的序列号(PSN)。PSN是递增的序列号,以唯一地识别后整理程序的每次运行。同时,索引过程跟踪已经被索引的最大后整理的序列号,即IndexedPSN,并保持轮询最近的PSN。如果IndexedPSN小于PSN,则在1002、1010和1020,索引进程对IndexedPSN+1执行索引演进操作,这保证了索引以正确的顺序演进,并且当操作完成时递增IndexedPSN。应当注意,异步索引演进对索引查询没有影响,因为后整理操作仅将数据从一个区域移动到另一个区域而不产生任何新数据。对于查询,从整理的区域103或后整理的区域104访问记录没有差别。
为了清除整理的运行列表中的旧运行以实现索引查询的无阻塞,本发明的一个或多个实施例将索引演进操作分解为原子子操作序列。每个子操作是索引状态的原子修改。进一步保证任何子操作导致正确的索引状态,从而实现索引查询的非阻塞和无锁。例如,对于给定的后整理序列号,索引演进操作是如下执行的。首先,建立由这个后整理的操作产生的数据块的索引运行250,并且随后将其添加到后整理的运行列表1012。应注意,运行头部块仍包含此运行所对应的整理块ID的范围。其次,在1014处更新由后整理的运作列表中的运作所覆盖的最大整理的块ID。此时,在整理的运行列表中具有不大于该更新值的结束整理的块ID的所有运行被索引查询自动弃用并忽略,因为这些运行中的条目已经被后整理的列表覆盖。最后,在1016,整理运行列表中的弃用运行是由每个索引维护线程收集的垃圾。在一个或多个示例中,一旦整理的列表中的运行数量超过预定阈值,就执行垃圾收集。在执行其他索引维护操作之前,线程首先从运行列表中移除弃用的运行,避免与对这些运行的其他索引维护操作的并发修改。
在上述中,每个步骤仅对混合索引200进行一次修改,因此是原子的。在上述步骤中的任何两个之间,混合索引200可包含重复条目,即,具有相同版本的记录可由整理的运行和后整理的运行两者来索引。此外,即使在索引演进操作的最后步骤之后,混合索引200仍可包含重复,因为整理的区域103中由后整理操作消耗的整理的块可能不与索引运行250的边界完全对齐。然而,重复对索引查询无害。在查询处理期间,它们被即时移除,以保证对于每个匹配键仅返回一个版本,而丢弃包括重复的其余版本。查询处理的细节在此进一步描述。
图11和图12描绘了在示例场景中根据本发明的一个或多个实施例的索引合并操作的视觉图示。这里,被合并的索引运行250是用于块ID 67-70和71-72、块ID 55-60和61-66以及块ID 0-18和19-36的那些。图11描绘了合并的索引运行250的创建。图12描绘了合并操作的第二阶段,其中在创建合并的索引运行250之后执行原子指针更新。此外,现在被合并在新创建的索引运行中的较早索引运行被垃圾收集。可以看出,可以在任何级别中执行合并操作,并且进一步地,可以将合并后的运行分配给与被合并以创建合并索引运行的索引运行250不同的级别。
图14示出了根据本发明的一个或多个实施例的演进索引的示例场景。所示的特定例子示出了在整理的块11至18被后整理的结果指数,其中原始指数在图4中示出。这里,为新的后整理的数据创建块ID 11-18的新索引运行1110。块ID11-15的运行-1 250被随后的查询忽略,因为其条目被新索引运行1110完全覆盖。当线程610下次唤醒时,它进一步是索引维护线程610收集的垃圾。此外,应当注意,块ID 16-20的索引运行-2 250仍然包含具有新索引run 1110的重复条目。这些重复在查询处理期间被移除。
图15提供了根据本发明的一个或多个实施例的用于索引维护操作的伪代码。如前所述,索引维护操作由索引维护线程610执行,每个线程被分配给来自特定级别的索引运行列表250。线程610首先垃圾收集所分配的索引运行250,如果它们中的任何一个已经演进到另一个区域的话。随后,如果当前清除级别等于所分配的级别,则线程基于当前高速缓存空间清除或加载索引运行。最后,如果在该级别中的运行数量超过预定义阈值,则线程610合并所分配的索引运行250。
在本发明的一个或多个实施例中,在整理或后整理操作之后构建新的索引运行未被索引维护线程610处理。相反,在整理的区域103中的数据上构建新的索引运行250是整理操作的一部分,其由整理器线程处理。在后整理的区域104中对数据编制索引是由索引编制进程的专用线程执行的,该线程周期性地读取最新的PSN以查看是否有任何新的后整理操作被执行。
如在此所述,根据本发明的一个或多个实施例的混合索引200是持久化索引,其便于系统的高效恢复而不必再次执行索引,诸如在系统故障的情况下。这是因为,除了非持久化级别中的那些之外的所有索引运行250都被安全地持久化在共享存储装置160中。在每一索引运行250被构建并被添加到混合索引200之后,该经整理/后整理的运行列表的最大经整理的块ID被更新并持久化。然而,索引进程可能崩溃,丢失本地节点中的所有数据结构。因此,为了恢复混合索引200,必须基于存储在共享存储装置160中的索引运行250来重构运行列表,并且如果存在垃圾和不完整的运行,则清除垃圾和不完整的运行。
图16描绘了根据本发明的一个或多个实施例的恢复运行列表的伪代码。在所示的示例中,函数RecoverRunList将该运行列表的最大整理的区块ID(maxID)和最小整理的区块ID(minID)作为输入。从maxID开始,函数找到在最高级别中的运行,其中结束块ID是maxID。然后,该函数通过将maxID设置为该运行的起始块ID减一来向后搜索。重复该过程直到maxID小于minID。
为了恢复两个运行列表,用适当的maxID和minID调用RecoverRunList函数。对于两个列表,maxID被设为持久化的相应最大整理的块ID。然而,将用于整理的运行列表的minID设定为用于后整理的运行列表的最大整理的区块ID加一,因为其下方的所有索引条目已演进至后整理的运行列表。虽然后整理的运行列表的minID被简单地设为0,但假定整理的区块ID从0开始,在恢复两个运行列表之后,所有未使用的运行块文件被简单地删除,因为它们对应于合并的或不完整的运行。
在恢复了运行列表之后,索引准备好处理索引查询。如果IndexedPSN小于当前PSN,则如前所述异步地执行索引演进操作,直到IndexedPSN最终赶上为止。
与现有技术相比,以这种方式创建和维护的混合索引200便于以高效的方式处理查询,并且如本文所述,便于多区域查询。因为混合索引200是多版本索引,所以查询必须指定查询时间戳(QueryTS),并且仅返回每个匹配键的最新版本,即,具有最大开始TS 230的版本,使得开始TS≤查询TS。
通常,支持两种类型的索引查询。首先,范围扫描查询指定所有相等列212(如果有的话)的值和排序列214的边界,并返回每个匹配键的最新版本。其次,点查找查询指定整个索引键(即,主键)并且返回至多一个匹配记录。
为了处理索引查询,通过迭代运行列表并检查运行概要来初始地收集候选运行。仅当查询中指定的所有列值满足概要中的列范围时,索引运行250才被认为是候选。还注意,从SSD高速缓存155读取所有索引运行250。在查询需要访问清除的运行的情况下,索引运行首先基于块从共享存储装置160传送到SSD高速缓存155,即,一次传送整个运行数据块402,以便于将来的访问。在查询完成之后,释放高速缓存的数据块,在高速缓存替换的情况下进一步丢弃该数据块。
图17描绘了根据本发明的一个或多个实施例的用于对单个索引运行执行范围扫描查询的示例方法的流程图。在1402,搜索单个运行返回在该索引运行250中的每个匹配键的最新版本,以用于接收的查询。在1408,首先定位单次运行中的第一匹配键。因为索引运行250是排序行的表,所以在本发明的一个或多个实施例中,使用具有连接的下限(即散列值、相等列值和排序列值的下限)的二分搜索。如果偏移数组可用,则在1404、1406处,可通过计算散列值的最高有效n位(表示为i)并取偏移数组中的第i和第i+1个值来缩小初始搜索范围。
在确定第一匹配键之后,重复索引条目,直到达到连接的上限,即散列值、相等列值和排序列值的上限的连接。在1410,在迭代期间,过滤出条目故障的时间戳谓词开始TS≤查询TS。对于剩余的条目,在1412,对于每个键,返回具有最大开始TS的条目,因为条目是按照索引键和开始TS的降序排序的。
再次考虑图5中的示例运行,其中设备是相等列212,而Msg是排序列214。考虑具有设备=4的范围扫描查询,msg的界限是[1,3],查询TS=100。这里,散列(4)=10010001的最高有效3位,即100,用于从偏移数组510获得初始搜索范围,即2到6。在该示例中,第一匹配键是在具有输入下限(10010001,4,1)的二分搜索之后的条目2。然后,索引条目从条目2开始迭代,返回条目2,因为它是键(4,1)的最新版本,而过滤出条目3,因为它是条目2的较旧版本,然而,过滤出条目4,因为其开始TS 102超出查询TS。在超出输入上界(10010001,4,3)的条目5处停止迭代。
因此,使用单次运行索引针对范围扫描查询高效地识别匹配条目。
在多个运行索引的情况下,独立地扫描每个运行以识别匹配的条目,如上所述。此外,在独立地搜索每个索引运行之后,协调从多个运行返回的结果,以确保对于每个匹配键仅返回最近的版本。例如,可以使用两种方法来进行协调。
在第一种基于集合的方法中,顺序地执行从最新索引运行250到最老运行的搜索,并且为已经返回到查询的键维护键集合。如果之前没有返回键,即不在集合中,则将其添加到集合中,并将相应的条目返回到查询中;否则,忽略该条目,因为已经返回了来自较新运行的较新版本。
或者,在优先级队列方法中,多个索引运行被一起搜索,并且从每个索引运行250返回的结果被馈送到优先级队列中以保持键的全局排序。一旦键被排序,则选择每个键的最新版本,并且丢弃其余的版本而无需记住中间结果。
点查找查询可以被视为范围扫描查询的特殊情况,其中整个主键被指定,使得至多一个条目被返回。作为一种特殊的优化,从最新的运行到最老的运行顺序地执行搜索,并且一旦找到匹配就提早停止搜索。因此,使用用于搜索单次运行的方法(图17),其中排序列值的下限和上限是相同的。
对于大规模批处理点查找,即作为从次索引到主索引的访问路径,输入键首先由散列值225、相等列值212和排序列值214排序,而不是直接评估每个点查找。此外,每个输入键与指示到目前为止是否已经找到该输入的布尔值相关联。然后,从最新到最老顺序地对照每个索引运行搜索排序的输入键,每次一个运行,直到所有布尔值被设置为真,以便每个运行块最多被访问一次。
因此,本发明的一个或多个实施例促进混合索引结构以提高HTAP系统的性能。本文描述的混合索引提供了易于恢复/重启的分布式日志结构的多版本化多区域索引。索引的部分易于在存储分层结构内移动,并且仍然有助于快速恢复。根据本文描述的索引的结构,信息不是仅保持在存储器中;相反,索引级别可以是持久化的或非持久化的。如果级别是非持久化的,则它们的内容可从最后一个先前持久化的级别或提交的日志恢复。
此外,本文描述的混合索引结构便于从分布式日志结构的多版本索引高效地返回数据的正确版本。大规模混合事务/分析处理系统跨多个区不同地组织数据,通常在作为事务/插入/更新/删除友好的区的数据区中具有较新的数据,并且在分析/扫描友好的区中具有较旧的数据。甚至可以存在多个分析友好的区域。在该系统中,数据随着数据的年限从一个区域演进到另一个区域。为了查找和返回键/元组的正确版本,使用优先级队列,并且同时搜索多个索引运行(来自相同数据区或不同数据区)以保持键的全局排序。一旦键被排序,则可以选择每个键的最新版本,并且可以丢弃其余的版本,而不必记住中间结果。
应当注意,尽管本发明的一个或多个实施方式是用具有两个数据区的HTAP系统来描述的,但是这里描述的特征也可用于支持具有多区数据组织的其他HTAP系统。为了支持多个区,而不是如本文所呈现的两个区,混合索引被构造为具有多个运行列表,每个运行列表对应于一个数据区域。当数据从一个区域向另一个区域演进时,通过索引演进操作,相应的索引条目也从一个运行列表向另一个演进。
本发明的一个或多个实施例因此促进了可恢复分布式多版本多区域索引,其利用LSM树获得可恢复索引结构,LSM树可以针对事务处理和分析两者被优化。
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门数组(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所描述的实施例。
Claims (25)
1.一种计算机实现的方法,包括:
创建针对包括多个区域的多区域数据存储系统的混合索引,在所述多个区域中第一区域包括被组织用于事务处理的数据,并且第二区域包括被组织用于分析处理的数据,所述混合索引中的每个索引条目至少包括:
索引键,所述索引键包括相等列;
开始时间戳列,所述开始时间戳列指示与所述索引条目相对应的数据被插入时的时间戳;
元组序列号列,所述元组序列号列指示所述索引条目在分层存储装置中的位置;以及
构建要被包括在所述混合索引中的索引运行,所述索引运行包括多个索引条目,其中构建所述索引运行包括:
通过从所述第一区域扫描所述数据块来确定要在所述索引运行中创建的列,所述数据块要与所述索引运行相关联;
计算要被包括在所述混合索引中的所述索引条目的元组序列号值,所述元组序列号值被存储在所述元组序列号列中;以及
使用要被包括在所述索引运行中的所述列根据预定顺序对所述索引条目进行排序。
2.根据权利要求1所述的计算机实现的方法,其中构建所述索引运行还包括:
创建用于索引运行的头部,所述头部包括被设置为索引运行指针的当前值的指针;以及
将所述索引运行指针的值设置为指向所述头部。
3.根据权利要求2所述的计算机实现的方法,其中存储在所述索引运行内的数据元素的概要被存储在所述头部中。
4.根据权利要求1所述的计算机实现的方法,其中,所述索引条目还包括散列列,并且构建所述索引运行还包括:
根据所述索引条目计算所述相等列的散列值,所述散列值被存储在所述散列列中。
5.根据权利要求4所述的计算机实现的方法,其中构建所述索引运行还包括:
计算针对所述索引运行的偏移数组,所述偏移数组被存储在所述头部中,所述偏移数组将所述散列值的最高有效N位映射到所述索引运行中的所述索引条目的偏移。
6.根据权利要求1所述的计算机实现的方法,其中所述索引条目还包括所述索引键中的排序列。
7.根据权利要求1所述的计算机实现的方法,其中所述索引运行被分配级别编号,其中所述级别编号指示被用于构造所述索引运行的数据的源。
8.根据权利要求7所述的计算机实现的方法,其中所述级别编号还指示与所述索引运行相关联的所述数据被存储在其中的区域,所述区是来自所述多区数据存储系统中的所述多个区域中的一个区域。
9.根据权利要求7所述的计算机实现的方法,还包括分配单独的线程以用于维护来自每个级别的一个或多个索引运行。
10.一种系统,包括:
一种存储系统,包括分层数据存储装置;以及
与所述存储系统耦合的一个或多个处理节点,所述一个或多个处理节点被配置为创建和维护针对多区域数据存储系统的混合索引,所述多区域数据存储系统包括多个区域,在所述多个区域中第一区包括被组织用于事务处理的数据,并且第二区包括被组织用于分析处理的数据,所述混合索引中的每个索引条目至少包括:
索引键,所述索引键包括相等列;
开始时间戳列,所述开始时间戳列指示与所述索引条目相对应的数据被插入时的时间戳;
元组序列号列,所述元组序列号列指示所述索引条目在分层存储装置中的位置;以及
所述一个或多个处理节点被配置为构建要被包括在所述混合索引中的索引运行,所述索引运行包括多个索引条目,其中构建所述索引运行包括:
通过从第一区域扫描所述数据块来确定要在所述索引运行中创建的列,所述数据块要与所述索引运行相关联;
计算要被包括在所述混合索引中的所述索引条目的元组序列号值,所述元组序列号值被存储在所述元组序列号列中;以及
使用要被包括在所述索引运行中的所述列根据预定顺序对所述索引条目进行排序。
11.根据权利要求10所述的系统,其中,构建所述索引运行还包括:
创建用于索引运行的头部,所述头部包括被设置为索引运行指针的当前值的指针;以及
将所述索引运行指针的值设置为指向所述头部。
12.根据权利要求11所述的计算机实现的方法,其中被存储在所述索引运行内的数据元素的概要被存储在所述头部内。
13.根据权利要求10所述的系统,其中所述索引条目还包括散列列,并且构建所述索引运行还包括:
根据所述索引条目计算所述等同列的散列值,所述散列值被存储在所述散列列中;以及
计算针对所述索引运行的偏移数组,所述偏移数组存储在所述头部中,所述偏移数组将所述散列值的最高有效N位映射到所述索引运行中的所述索引条目的偏移。
14.根据权利要求10所述的系统,其中所述索引运行被分配有级别,其中,级别编号指示用于构造所述索引运行的数据的源,其中,所述级别编号还指示与所述索引运行相关联的所述数据被存储在其中的区域,所述区域是所述多区域数据存储系统中的所述多个区域中的一个区域。
15.一种包括计算机可读存储介质的计算机程序产品,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令由处理电路可执行以执行用于创建和维护针对多区域数据存储系统的混合索引的方法:
其中,所述多区域数据存储系统包括多个区域,在所述多个区域中第一区域包括被组织用于事务处理的数据,并且第二区域包括被组织用于分析处理的数据;
其中,所述混合索引中的每个索引条目至少包括:
索引键,所述索引键包括相等列;
开始时间戳列,所述开始时间戳列指示与索引条目相对应的数据被插入时的时间戳;
元组序列号列,所述元组序列号列指示所述索引条目在分层存储装置中的位置;以及
其中,所述方法包括构建要被包括在所述混合索引中的索引运行,所述索引运行包括多个索引条目,其中构建所述索引运行包括:
通过从所述第一区域扫描所述数据块来确定要在所述索引运行中创建的列,数据块要与所述索引运行相关联;
计算要被包括在所述混合索引中的所述索引条目的元组序列号值,所述元组序列号值被存储在所述元组序列号列中;以及
使用要被包括在所述索引运行中的所述列根据预定顺序对所述索引条目进行排序。
16.根据权利要求15所述的计算机程序产品,其中,构建所述索引运行还包括:
创建用于所述索引运行的头部,所述头部包括被设置为索引运行指针的当前值的指针;以及
将所述索引运行指针的值设置为指向所述头部。
17.根据权利要求15所述的计算机程序产品,其中所述索引条目还包括散列列,并且构建所述索引运行还包括:
根据所述索引条目计算所述相等列的散列值,所述散列值被存储在所述散列列中,其中构建所述索引运行还包括:
计算所述索引运行的偏移数组,所述偏移数组被存储在所述头部中,所述偏移数组将所述散列值的最高有效N位映射到所述索引运行中的所述索引条目的偏移。
18.根据权利要求15所述的计算机程序产品,其中所述索引运行被分配有级别,其中级别编号指示用于构造所述索引运行的数据的源,并且其中,所述级别编号还指示与所述索引运行相关联的所述数据被存储在其中的区域,所述区域是所述多区域数据存储系统中的所述多个区域中的一个区域。
19.一种计算机实现的方法,包括:
响应于接收到合并数据库中的两个索引运行第一索引运行和第二索引运行的请求,数据使用分层数据存储装置被存储在所述数据库中:
创建第三索引运行以包括来自所述第一索引运行和来自所述第二索引运行的列;
使用合并排序对来自所述第一索引运行的所述列和来自所述第二索引运行的所述列进行全局排序;
基于确定所述第三索引运行属于非持久化级别,将所述第三索引运行仅存储到高速缓存存储装置;
基于确定所述第三索引运行属于持久化级别,并且所述第三索引运行的级别编号低于清除级别,将所述第三索引运行存储到所述高速缓存存储装置和共享存储装置;以及
基于确定所述第三索引运行属于持久化级别,并且所述第三索引运行的所述级别编号等于或高于所述清除级别,将所述第三索引运行仅存储到所述共享存储装置。
20.根据权利要求19所述的计算机实现的方法,还包括:
更新所述数据库中的索引运行的列表,其包括:
改变指向所述第一索引运行的地址的第四索引运行的指针,所述指针被改变为所述第三索引运行的地址;以及
删除所述第一索引运行和所述第二索引运行。
21.根据权利要求20所述的计算机实现的方法,其中在所述第一索引运行和所述第二索引运行被合并到属于所述持久化级别的索引运行中之后,所述第一索引运行和所述第二索引运行被删除。
22.一种系统,包括:
存储系统,包括分层数据存储装置;以及
与所述存储系统耦合的一个或多个处理节点,所述一个或多个处理节点被配置为:
创建和维护针对包括多个区域的多区域数据存储系统的混合索引,在所述多个区域中第一区域包括被组织用于事务处理的数据,并且第二区包括被组织用于分析处理的数据,其中所述混合索引包括多个索引运行,并且其中每个索引运行包括使用要被包括在所述索引运行中的一个或多个列根据预定顺序而被排序的索引条目;以及
通过执行方法来合并两个索引运行,第一索引运行和第二索引运行,所述方法包括:
创建第三索引运行以包括来自所述第一索引运行和来自所述第二索引运行的列;
使用合并排序对来自所述第一索引运行的所述列和来自所述第二索引运行的所述列进行全局排序;
基于确定所述第三索引运行属于非持久化级别,将所述第三索引运行仅存储到高速缓存存储装置;
基于确定所述第三索引运行属于持久化级别,并且所述第三索引运行的级别编号低于清除级别,将所述第三索引运行存储到所述高速缓存存储装置和共享存储装置;以及
基于确定所述第三索引运行属于持久化级别,并且所述第三索引运行的所述级别编号等于或高于所述清除级别,将所述第三索引运行仅存储到所述共享存储装置。
23.根据权利要求22所述的系统,其中所述方法还包括:
更新所述数据库中的索引运行的列表,其包括:
改变指向所述第一索引运行的地址的第四索引运行的指针,所述指针被改变为所述第三索引运行的地址;以及
删除所述第一索引运行和所述第二索引运行。
24.根据权利要求23所述的系统,其中在所述第一索引运行和所述第二索引运行被合并到属于所述持久化级别的索引运行中之后,所述第一索引运行和所述第二索引运行被删除。
25.根据权利要求21所述的系统,其中每个索引运行被分配有级别,其中级别编号指示用于构造所述索引运行的数据的源,并且其中所述级别编号还指示与所述索引运行相关联的所述数据被存储在其中的区域,所述区域是所述多区域数据存储系统中的所述多个区域中的一个区域。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/420,394 | 2019-05-23 | ||
US16/420,394 US11182356B2 (en) | 2019-05-23 | 2019-05-23 | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems |
PCT/IB2020/054619 WO2020234719A1 (en) | 2019-05-23 | 2020-05-15 | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113874852A true CN113874852A (zh) | 2021-12-31 |
Family
ID=73456775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080037664.9A Pending CN113874852A (zh) | 2019-05-23 | 2020-05-15 | 用于在多主混合事务和分析处理系统中演进大规模数据集的索引 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11182356B2 (zh) |
JP (1) | JP7410181B2 (zh) |
CN (1) | CN113874852A (zh) |
DE (1) | DE112020000749T5 (zh) |
GB (1) | GB2599538A (zh) |
WO (1) | WO2020234719A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579596A (zh) * | 2022-05-06 | 2022-06-03 | 达而观数据(成都)有限公司 | 一种实时更新搜索引擎索引数据的方法及系统 |
CN117519839A (zh) * | 2024-01-05 | 2024-02-06 | 恒生电子股份有限公司 | 数据加载方法及装置 |
WO2024082693A1 (zh) * | 2022-10-21 | 2024-04-25 | 华为云计算技术有限公司 | 数据处理方法及装置 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112236759B (zh) * | 2018-09-14 | 2024-08-06 | 谷歌有限责任公司 | 日志结构合并森林中的交错合并 |
US11599583B2 (en) * | 2020-04-23 | 2023-03-07 | Paypal, Inc. | Deep pagination system |
US11366810B2 (en) * | 2020-04-27 | 2022-06-21 | Salesforce.Com, Inc. | Index contention under high concurrency in a database system |
US11860844B2 (en) * | 2020-09-07 | 2024-01-02 | Pliops Ltd. | Managing a LSM tree of key value pairs that is stored in a non-volatile memory |
US20220075877A1 (en) | 2020-09-09 | 2022-03-10 | Self Financial, Inc. | Interface and system for updating isolated repositories |
US11475010B2 (en) * | 2020-09-09 | 2022-10-18 | Self Financial, Inc. | Asynchronous database caching |
US11641665B2 (en) | 2020-09-09 | 2023-05-02 | Self Financial, Inc. | Resource utilization retrieval and modification |
US11782954B2 (en) * | 2020-10-20 | 2023-10-10 | Salesforce, Inc. | User identifier match and merge process |
AU2021363795A1 (en) * | 2020-10-20 | 2023-06-08 | Redis Ltd. | Systems, methods, and media for implementing conflict-free replicated data types in in-memory data structures |
US20220244988A1 (en) * | 2021-01-30 | 2022-08-04 | Salesforce.Com, Inc. | Data shards for distributed processing |
CN112817980B (zh) * | 2021-02-05 | 2024-06-11 | 腾讯科技(深圳)有限公司 | 一种数据索引处理方法、装置、设备及存储介质 |
US11543993B1 (en) * | 2021-06-17 | 2023-01-03 | Western Digital Technologies, Inc. | Fast garbage collection in zoned namespaces SSDs |
US20230037619A1 (en) * | 2021-07-09 | 2023-02-09 | Pawel Terlecki | Systems and method for processing timeseries data |
US11947490B2 (en) * | 2021-08-31 | 2024-04-02 | Bmc Software, Inc. | Index generation and use with indeterminate ingestion patterns |
US12086118B2 (en) * | 2021-11-15 | 2024-09-10 | International Business Corporation Machines | Chaining version data bi-directionally in data page to avoid additional version data accesses |
US11947822B2 (en) | 2022-03-31 | 2024-04-02 | Microsoft Technology Licensing, Llc. | Maintaining a record data structure using page metadata of a bookkeeping page |
US12105690B1 (en) * | 2022-07-27 | 2024-10-01 | Databricks, Inc. | Multiple pass sort |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890682B (zh) * | 2011-07-21 | 2017-08-01 | 腾讯科技(深圳)有限公司 | 构建索引的方法、检索方法、装置及系统 |
KR20130049117A (ko) * | 2011-11-03 | 2013-05-13 | 한국전자통신연구원 | 메모리 기반의 서머리 벡터를 구비한 인덱스 구조의 데이터 검색 장치 및 방법 |
US20140279839A1 (en) | 2013-03-14 | 2014-09-18 | Sap Ag | Integration of transactional and analytical capabilities of a database management system |
US9720576B2 (en) * | 2013-09-30 | 2017-08-01 | Sonos, Inc. | Controlling and displaying zones in a multi-zone system |
KR101642072B1 (ko) * | 2014-05-08 | 2016-07-22 | 주식회사 알티베이스 | 하이브리드스토리지장치 및 방법 |
US9767149B2 (en) | 2014-10-10 | 2017-09-19 | International Business Machines Corporation | Joining data across a parallel database and a distributed processing system |
US9703797B2 (en) * | 2015-02-18 | 2017-07-11 | Exagrid Systems, Inc. | Multi-level deduplication |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
US9772911B2 (en) | 2015-03-27 | 2017-09-26 | International Business Machines Corporation | Pooling work across multiple transactions for reducing contention in operational analytics systems |
US10664462B2 (en) * | 2017-03-01 | 2020-05-26 | Sap Se | In-memory row storage architecture |
JP6897248B2 (ja) * | 2017-04-06 | 2021-06-30 | 富士通株式会社 | 更新反映プログラム、更新反映方法及び更新反映装置 |
CN107943927B (zh) | 2017-11-21 | 2018-10-16 | 清华大学 | 一种分布式存储系统中多维数据的存储模式转换方法 |
US10430100B2 (en) * | 2018-02-28 | 2019-10-01 | International Business Machines Corporation | Transactional operations in multi-master distributed data management systems |
-
2019
- 2019-05-23 US US16/420,394 patent/US11182356B2/en active Active
-
2020
- 2020-05-15 DE DE112020000749.9T patent/DE112020000749T5/de active Pending
- 2020-05-15 JP JP2021569234A patent/JP7410181B2/ja active Active
- 2020-05-15 WO PCT/IB2020/054619 patent/WO2020234719A1/en active Application Filing
- 2020-05-15 CN CN202080037664.9A patent/CN113874852A/zh active Pending
- 2020-05-15 GB GB2117963.5A patent/GB2599538A/en not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579596A (zh) * | 2022-05-06 | 2022-06-03 | 达而观数据(成都)有限公司 | 一种实时更新搜索引擎索引数据的方法及系统 |
CN114579596B (zh) * | 2022-05-06 | 2022-09-06 | 达而观数据(成都)有限公司 | 一种实时更新搜索引擎索引数据的方法及系统 |
WO2024082693A1 (zh) * | 2022-10-21 | 2024-04-25 | 华为云计算技术有限公司 | 数据处理方法及装置 |
CN117519839A (zh) * | 2024-01-05 | 2024-02-06 | 恒生电子股份有限公司 | 数据加载方法及装置 |
CN117519839B (zh) * | 2024-01-05 | 2024-04-16 | 恒生电子股份有限公司 | 数据加载方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200372004A1 (en) | 2020-11-26 |
JP7410181B2 (ja) | 2024-01-09 |
DE112020000749T5 (de) | 2021-10-28 |
GB2599538A (en) | 2022-04-06 |
US11182356B2 (en) | 2021-11-23 |
JP2022534215A (ja) | 2022-07-28 |
GB202117963D0 (en) | 2022-01-26 |
WO2020234719A1 (en) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113874852A (zh) | 用于在多主混合事务和分析处理系统中演进大规模数据集的索引 | |
Luo et al. | LSM-based storage techniques: a survey | |
US9740582B2 (en) | System and method of failover recovery | |
US8738673B2 (en) | Index partition maintenance over monotonically addressed document sequences | |
US8386431B2 (en) | Method and system for determining database object associated with tenant-independent or tenant-specific data, configured to store data partition, current version of the respective convertor | |
US11977532B2 (en) | Log record identification using aggregated log indexes | |
Shukla et al. | Schema-agnostic indexing with Azure DocumentDB | |
US20150120656A1 (en) | Compacting data file histories | |
EP2590078B1 (en) | Shadow paging based log segment directory | |
US10402316B2 (en) | Tracing garbage collector for search trees under multi-version concurrency control | |
US20130290295A1 (en) | Maintaining fault domains in a distributed database | |
CN104216955A (zh) | 一种操作数据及管理事务的方法、装置及分布式系统 | |
CN105095261A (zh) | 数据插入方法和装置 | |
CN104572920A (zh) | 一种数据整理方法和装置 | |
US11714794B2 (en) | Method and apparatus for reading data maintained in a tree data structure | |
US9922043B1 (en) | Data management platform | |
US20170177473A1 (en) | Garbage collection scope detection for distributed storage | |
CN111581123B (zh) | 基于分类的存储器分配的锁定 | |
US20130067338A1 (en) | Dynamic navigation region based on site usage | |
US20210357419A1 (en) | Preventing dbms deadlock by eliminating shared locking | |
Kaporis et al. | ISB-tree: A new indexing scheme with efficient expected behaviour | |
Munir et al. | A cost-based storage format selector for materialization in big data frameworks | |
US11803511B2 (en) | Methods and systems for ordering operations on a file system having a hierarchical namespace | |
US20230315708A1 (en) | Updating a secondary index from an audit trail | |
US20230315712A1 (en) | Method of making a file containing a secondary index recoverable during processing |
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 |