基于云存储类别的可变缓存可用性的制作方法
未命名
09-13
阅读:71
评论:0

基于云存储类别的可变缓存可用性
背景技术:
技术领域
1.公开文本总体涉及一种存储系统,并且更具体地,涉及使用缓存集群和对象存储来复制并检索数据。
2.相关技术描述
3.现代数据库系统常规地实现管理系统,这些管理系统使用户能够有组织地存储可被高效访问并操纵的信息的集合。在许多情况下,这些数据库系统包括协同工作以实现数据库服务的数据库节点和存储节点。数据库节点通常处理数据库事务以读取和操纵数据,而存储节点工作以确保那些事务的结果以可被有效访问的方式被存储。管理系统还经常设法确保数据库系统的数据跨各个区域被充分复制,以便在数据库系统的部分故障或变得不可用的情况下,防止数据丢失。
附图说明
4.图1a是示出根据一些实施方案的云环境的示例性元件的框图。
5.图1b描绘的框图示出根据一些实施方案的存储缓存的示例。
6.图2是示出根据一些实施方案的包括云基服务的云环境的示例性元件的框图,该云基服务配置为处理对云基服务的写入请求。
7.图3描绘的框图示出根据一些实施方案的包括云基服务的云环境的示例性元件,该云基服务配置为处理对云基服务的写入和读取请求。
8.图4描绘的框图示出根据一些实施方案的包括具有三个可用区域的云基服务的云环境的示例性元件,该云基服务配置为处理对云基服务的写入和读取请求。
9.图5描绘的框图示出根据一些实施方案的包括云基服务的云环境的示例性元件,该云基服务配置为处理对云基服务的写入和读取请求以及对写入和读取请求的日志的写入和读取。
10.图6描绘的框图示出根据一些实施方案的包括云基服务和集群管理器的云环境的示例性元件。
11.图7描绘的框图示出根据一些实施方案的包括云基服务的云环境的示例性元件,该云基服务配置为将写入请求的存储引导至共享对象储存器以供云基服务的本地存储的随后填充。
12.图8是示出根据一些实施方案的包括云基服务的云环境的示例性元件的框图,该云基服务配置为基于与各种实体相关联的元数据处理来自各种实体的写入和读取请求。
13.图9是示出根据一些实施方案的配置为识别用于存储第一实体的数据的缓存的示例性数据库节点的框图。
14.图10a是示出根据一些实施方案的基于实体分类的缓存空间的示例性分配的框图。
15.图10b是示出根据一些实施方案的给定可用区域中的示例性系统崩溃的框图。
16.图11是示出根据一些实施方案的用于使用基于类别的技术来处理写入请求的示例性方法的流程图。
17.图12是示出根据一些实施方案的用于使用基于类别的技术来处理对存储在一个或多个缓存中的数据的读取请求的示例性方法的框图。
18.图13是示出根据一些实施方案的用于在云基服务中处理写入请求的示例性方法的流程图。
19.图14是示出根据一些实施方案的用于在云基服务中处理写入请求的另一示例性方法的流程图。
20.图15描绘可实现公开文本的各种技术的示例性多租户数据库系统(mts)。
21.图16描绘示例性计算机系统的框图。
具体实施方式
22.随着公司寻求将其基础设施移至云中,云计算服务(或简称为“云”)变得越来越流行。如本文使用的,术语“云”是根据其充分理解含义使用的,并且是指可通过互联网对一个或多个组织可用的计算机资源(诸如数据存储和计算能力)的按需可用性。公有云的一个示例是amazon web services
tm
(aws),其由amazon
tm
(供应商)提供给多个公司(组织)以托管并运行其软件。公有云的资源(例如,计算硬件、存储硬件等)通常分布在多个地理领域(称为“云区”)上,其中,每个云区具有那些资源的多个隔离网络(称为“可用区域”)。公司可在位于地理位置适宜的云区的特定区域内的计算机系统上,实例化其软件。
23.如本文描述的,分布式数据库存储系统可将数据存储在数据存储集群中,该集群包括跨多个可用区域分布的存储服务器。为了数据存储集群中的持久数据存储冗余,可跨附加可用区域中的服务器,复制存储在每个可用区域中的存储服务器上的数据。在许多情况下,这些存储服务器并非原本就是为公有云设计的;相反,存储服务器设计用于单个集中式网络,并且因此不具有云区或可用区域的概念。因此,跨多个可用区域分布的分布式数据库存储系统可能不能正确地解释可用区域故障以及与跨云中的区域的通信相关联的时延和成本。例如,在可用区域中发生故障的情况下,可响应于该故障跨可用区域复制数据。然而,跨可用区域移动数据可降低性能,因为在跨可用区域移动数据时,时延增加。性能降低可能是事务性数据库的问题,该数据库需要高性能(低时延)以快速访问数据。另外,跨可用区域移动数据的成本可能是昂贵的。公开文本至少解决了如下技术问题:在无时延问题以及与跨可用区域移动数据相关联的成本的情况下复制数据。
24.公开文本描述的各种技术用于使云基服务能够通过集成利用短暂存储缓存(如基于内部非易失性存储器(nvme)的存储)和共享对象储存器(如amazon s3
tm
),以实现跨可用区域移动数据。共享对象储存器为持久数据提供成本有效、持久和可扩展存储。然而,共享对象储存器不具有事务性数据库所需的性能能力(诸如低时延以用于快速访问数据)。短暂存储缓存提供低时延数据传送,但是短暂存储缓存是在由于电源故障或其他故障事件而丢失数据的情况下的临时存储。因此,公开文本考虑为分布式数据库存储系统(诸如提供事务性数据库存储的系统)提供低成本、低时延和耐用持久存储的技术。
25.在以下描述的各种实施方案中,云基存储服务具有跨共享对象储存器之前的多个
可用区域实例化的多个存储缓存。存储缓存可在数据存储集群中实例化,其中,存储缓存跨多个可用区域分布,以用于跨可用区域实现数据的复制和可用性。每个可用区域能够单独向共享对象储存器写入数据以及从共享对象储存器读取数据。数据存储集群之后的共享对象储存器提供数据存储集群中的数据的持久且耐用的复制存储。在各种情况下,诸如kubernetes
tm
或apache zookeeper
tm
的编排服务或集群管理器用于实例化不同可用区域内的存储缓存。在各种实施方案中,可用区域包括本文进一步描述的数据库节点。数据库节点处理用于数据存储集群的数据的检索、操纵和存储。例如,数据库节点可响应于在云基存储服务中存储数据的请求,而将数据写入到存储缓存和共享对象储存器两者中。数据库节点可响应于数据检索请求而从存储缓存中检索数据,以通过利用存储缓存的低时延来提供快速数据检索。共享对象储存器在存储缓存故障的情况下,提供数据的备份。
26.这些技术可能是有利的,因为它们在提供持久性数据存储以防止数据丢失的同时,允许低时延的数据检索。另外,这些技术提供云环境内的数据的低时延且低成本移动。例如,在存储缓存中丢失的数据可直接从共享对象储存器而不是另一存储缓存中检索,因为从共享对象储存器检索数据的成本通常小于跨可用区域移动数据的成本。此外,共享对象储存器可用于跨可用区域填充数据,而不是从一个可用区域填充到另一个可用区域。例如,在一个可用区域中的较旧数据或无效数据的替换数据可在识别另一可用区域中的较新数据或有效数据之后,从共享对象储存器检索,其中,较新或有效数据也已存储在共享对象储存器中。现在将开始参考图1a讨论这些技术的示例性应用。
27.现在转向图1a,其示出云环境100的示例性元件的框图。云环境100包括可经由硬件或硬件和软件的组合实现的一组部件。在所示实施方案中,云环境100包括云基服务105,该云基服务包括可用区域110a和110b。在各种实施方案中,云环境100是包括用于向用户提供云计算服务的各种部件(例如,硬件、虚拟化资源、存储和网络资源)的云基础设施。在一些实施方案中,云环境100跨多个地理位置分布,并且每个位置可限定云环境100的“区”。区可包括可聚集在一起的一组数据中心。在一个区内,可存在一个或多个可用区域110。
28.如本文使用的,术语“可用区域”是指地理上分隔并且跨其复制数据的两个或更多个云领域。可用区域110可位于同一区中或者它们可位于独立区中。在各种实施方案中,可用区域110是区域内的部件(例如,计算资源、存储资源等)的逻辑或物理分组。在许多情况下,给定可用区域110的部件与其他可用区域110中的部件的故障无关。例如,可用区域110a可以是某一区域中的第一数据中心,并且可用区域110b可以是同一区域中的第二数据中心。可用区域110a可被隔开,使得可用区域110b的数据中心处的故障不影响可用区域110a的数据中心。在一些情况下,可用区域110a和110b可能是同一数据中心,但对应于单独网络上的部件,使得一个可用区域110可不受另一可用区域110的影响。
29.在各种实施方案中,数据存储集群(例如,本文描述的缓存集群或存储集群)跨两个或更多个可用区域110分布,其中,在可用区域之间复制数据。可跨可用区域复制数据,以在可用区域之间提供数据冗余。在某些实施方案中,可用区域110地理上隔开一定距离,使得一个可用区域中的外部故障(例如,电源故障或自然灾害)不影响另一个可用区域,并且所存储的数据仍可用于检索。在云基服务105的情况下,可用区域110有时可被称为“计算机区域”。应理解,虽然图1a所示的实施方案和本文所述的各种实施方案描绘了两个可用区域110a和110b,但是云基服务105可包括任意多个可用区域。例如,在许多设想的实施方案中,
云基服务105包括三个可用区域110,如图4所示。
30.在某些实施方案中,数据库节点120、存储缓存130和日志储存器140跨可用区域110分布。在所示实施方案中,可用区域110a包括数据库节点120a,并且可用区域110b包括数据库节点120b。如本文使用的,术语“数据库节点”是指处理云环境100中的数据的存储、检索和操纵的部件。数据库节点可以是例如由在云环境100中的服务器上运行的应用实现的部件。例如,数据库节点120可以是由在服务器上运行的应用可执行的软件例程,该数据库节点与存储缓存130和日志储存器140一起并置在可用区域110中。因此,数据库节点120可与存储缓存130、日志储存器140和共享对象储存器150对接以处理云环境100中的数据的存储、检索和操纵。例如,数据库节点可代表云基服务105,提供向存储缓存130、日志储存器140或共享对象储存器150的请求,以用于读取和写入数据。
31.在各种实施方案中,在云环境100中,由集群管理器160实例化数据库节点120。在某些实施方案中,在每个可用区域110中实例化至少一个数据库节点120,使得数据库节点的实例存在于每个可用区域中。可用区域110中的一个或多个数据库节点120可实现可由其他应用使用的数据库(例如,分布式数据库存储系统),以便存储和查询数据。跨每个可用区域110分布数据库节点120提供了数据库节点在可用区域之间的冗余。因此,在一个可用区域中的数据库节点故障的情况下,另一可用区域中的数据库节点可用于替换该故障的数据库节点。例如,在数据库节点120b故障的情况下,可用区域110a中的数据库节点120a能够与可用区域110b中的存储缓冲130b或日志储存器140b对接。
32.在一些实施方案中,在可用区域110内的多个服务器上实例化数据库节点120,以便在可用区域内提供冗余。在这些实施方案中,数据库节点的主实例是在可用区域中的一个服务器上运行,其中,数据库节点的副本在附加服务器上实例化作为备份。因此,在数据库节点的主实例故障的情况下,可激活数据库节点的备份(辅助)实例以替换故障的主实例。
33.在一些实施方案中,只有一个数据库节点120在云环境100中实例化,使得跨可用区域110仅存在数据库节点的一个实例。在各种实施方案中,只有跨可用区域110的数据库节点120的一个实例作为主实例活动,而不活动(复制)数据库节点驻留在其他可用区域中(或在同一可用区域中)。因此,任何可用区域(例如,另一可用区域或相同可用区域)中的不活动(复制)数据库节点可在数据库节点的主实例故障的情况下被激活,以便为数据库节点操作提供冗余。
34.在所示实施方案中,可用区域110a包括存储缓存130a,并且可用区域110b包括存储缓存130b。图1b描绘的框图示出根据一些实施方案的存储缓存130的示例。如本文使用的,术语“存储缓存”是指用于存储数据的短暂(临时)缓存。例如,存储缓存130可包括基于内部非易失性存储器(例如,nvme)的储存器。在各种实施方案中,存储缓存130包括缓存节点180(例如,存储节点)和存储设备190。在某些实施方案中,缓存节点180是可执行以实现存储缓存130的一组软件例程,其能够在云基服务105中提供存储功能。在一些实施方案中,用于执行该组软件程序的硬件视为缓存节点180的一部分。缓存节点180可代表云基服务105并且在各种实例中具体地代表其存储缓存130,来接收读取和写入数据的请求。作为示例,缓存节点180可接收写入或读取存储在存储设备190上的数据的请求。
35.在某些实施方案中,存储设备190是数据存储元件,其中,数据保持在存储缓存130
中。在各种实施方案中,存储设备190是短暂(临时)缓存存储元件,如基于内部非易失性存储器(例如,nvme)的储存器。还可设想缓存存储元件的其他实施方案,诸如但不限于基于易失性存储器的储存器。在某些实施方案中,存储设备190包括与可用区域110中的数据库节点120并置的多个服务器(例如,具有内部非易失性存储器的刀片服务器),其中,服务器共同地并与缓存节点180组合地提供存储缓存130。在一些实施方案中,存储缓存130由数据库节点120实例化。在各种实施方案中,存储缓存130提供低时延数据传送,但是当发生功率损耗或故障时通常容易丢失数据。
36.在各种实施方案中,存储缓存130实现为用于存储在共享对象储存器150中的数据的缓存。存储缓存130可代表云基服务105并且在各种实例中具体地代表其可用区域110,接收读取和写入数据的请求。作为示例,存储缓存130a可从数据库节点120a接收请求,以返回存储在组成存储缓存130a的服务器上的数据。在各种实施方案中,存储缓存130与数据库节点120一起实现数据复制做法,使得由一个存储缓存130存储的数据由至少一个其他存储缓存130存储。例如,由存储缓存130a存储的数据可由存储缓存130b存储。在一些情况下,部分数据可存储在不同的存储缓存130上,使得单个存储缓存130未保持完整副本。在各种实施方案中,存储的数据跨不同的可用区域110复制,使得如果一个可用区域110变得不可用,那么数据仍可通过另一个可用区域110访问;或者如果云基服务105在可用区域110上的某个部分变得不可用,则可通过云基服务105的另一部分来访问数据。
37.在所示实施方案中,可用区域110a包括日志储存器140a,并且可用区域110b包括日志储存器140b。如本文使用的,术语“日志储存器”是指用于随时间存储事务(例如,存储和检索)的日志的存储元件,该日志涉及云基服务105中管理的数据(例如,存储在存储缓存130中且从存储缓存检索的数据)。在一些实施方案中,日志储存器140由数据库节点120实例化。如所示实施方案示出的,日志储存器140a对应可用区域110a和存储缓存130a,而日志储存器140b对应可用区域110b和存储缓存130b。因此,在某些实施方案中,日志储存器140a存储与可用区域110a和存储缓存130a相关联的事务的日志,而日志储存器140b存储与可用区域110b和存储缓存130b相关联的事务的日志。
38.在一些实施方案中,日志储存器140可存储在云基服务105中管理的数据的副本。例如,日志储存器140可存储数据的副本以及日志的记录。在一些实施方案中,存储在日志储存器140中的数据的副本可用于在其他存储元件(例如,存储缓存130或共享对象储存器150)中的一个出现问题的情况下恢复数据。在某些实施方案中,日志储存器140包括持久性数据存储元件,其中,在电力丢失或故障的情况下保持日志和数据。例如,日志储存器140可包括块存储元件,诸如弹性块存储(ebs)元件。在各种实施方案中,日志储存器140实现可执行以提供云基服务105中的存储功能的一组软件例程,该存储功能对应于在存储缓存130中实现的功能。例如,日志储存器140可实现数据复制做法,使得由一个日志储存器140存储的数据由至少一个其他日志储存器140存储。
39.如图1a所示,云环境100包括共享对象储存器150。如本文使用的,术语“共享对象储存器”是指用于对象的可跨资源共享的持久性数据储存器。共享对象储存器的一个示例是来自amazon web services
tm
(aws)的amazon s3
tm
。在某些实施方案中,共享对象储存器150实现网络服务接口以允许以高带宽存储并检索任意量的数据。数据可在任意时间从网络上的任意地方存储和检索。在一些实例中,共享对象储存器150仅针对数据事务产生成
本,而不针对所传送的数据量产生成本。因此,可基于相同的成本在单个事务中存储或检索任意量的数据。在各种实施方案中,云基服务105与共享对象储存器150交互以便存储和检索由云基服务管理的数据。例如,如本文描述的,可用区域110中的数据库节点120可与共享对象储存器150交互,以将数据提供至共享对象储存器以便存储或者从共享对象储存器检索数据。在某些实施方案中,共享对象储存器150由数据库节点120实现为主数据储存器,而存储缓存130实现为用于存储在共享对象储存器150中的数据的子集的本地低时延数据存储。
40.在所示实施方案中,云环境100包括具有元数据存储装置170的集群管理器160。如本文使用的,术语“集群管理器”是指使用可用区域110和共享对象储存器150的资源促进云基服务105的部署的集中管理或编排服务。在各种实施方案中,集群管理器160包括可执行以提供管理或编排服务的一组软件例程。kubernetes
tm
和apache zookeeper
tm
是集群管理器的示例。集群管理器160可部署实现云基服务105的容器化应用。在一些实施方案中,集群管理器160与区域相关联,并且因此负责促进该区域的可用区域110内的部署。如图1a所示,例如,集群管理器160与可用区域110a和可用区域110b两者交互,并且由此可促进数据库节点120、存储缓存130和日志储存器140在那些可用区域110内的部署。虽然集群管理器160描绘为与可用区域110分隔,但是在各种实施方案中,集群管理器160在可用区域110(例如,可用区域110a)内实例化。尽管集群管理器160可在可用区域110的一个可用区域中实例化,但是集群管理器160仍可促进其他可用区域110(例如,可用区域110b)内的部署。然而,在一些实施方案中,集群管理器160可促进仅在其自身可用区域110内的部署。因此,可实例化多个集群管理器160以便管理针对每个可用区域110的部署,并且允许跨那些可用区域110分布云基服务105。
41.在各种实施方案中,集群管理器160保持的资源信息描述集群管理器160可访问以用于部署云基服务105的可用区域110的资源(例如,处理器、存储设备、网络端口、服务器、虚拟机等)。集群管理器160可(例如,从组织的管理员)接收部署云基服务105的部署请求。在各种实施方案中,部署请求包括描述要部署什么类型的云基服务105以及该云基服务应如何部署(例如,应跨至少两个可用区域110部署存储服务或集群)的规范。基于接收部署请求,集群管理器160可考虑规范的要求,以及对其可用的、满足那些要求的可用区域资源。然后,集群管理器160可尝试使用可用区域110的资源来部署所请求的云基服务105。在各种实施方案中,集群管理器160存储描述位置的位置信息,在这些位置处,集群管理器160已实例化云基服务105的部件。例如,该信息可指示所示云基服务105的存储缓存130a在可用区域110a的资源上实例化。
42.在某些实施方案中,集群管理器160保持用于云基服务105的各种元件的信息,诸如数据库节点120、存储缓存130和日志储存器140的健康,以及由各种节点用来确定如何处理对来自各种实体的数据的请求的元数据。在某些实施方案中,元数据存储在元数据存储装置170中,其在集群管理器160中实例化。在各种实施方案中,元数据存储装置170是存储元数据的储存库,其可与云基服务105的操作相关。元数据可指定例如,特定数据已存储在云基服务105中的位置。作为示例,元数据可指定针对特定键范围的记录存储在存储缓存130a和130b处。元数据存储装置170可由云环境100的各种部件(包括数据库节点120)可访问。在一些实施方案中,云环境100实现的方式与图1a所示的方式不同。例如,集群管理器
160和元数据存储装置170可使用可用区域110a和110b内的节点来实现。作为另一示例,元数据存储装置170可跨可用区域110a和110b分布,使得元数据对于特定可用区域110本地可用。
43.在各种实施方案中,云基服务105是提供功能集并且可部署在云环境100的云基础设施上的服务或系统。云基服务105可包括例如,分布式存储服务、数据库管理系统、电子邮件服务、网络应用服务器等。在各种实施方案中,云基服务105通过执行一组程序指令来实现。如此,集群管理器160可通过使其对应程序指令在那些可用区域110的资源上执行,来将云基服务105部署至一个或多个可用区域110。在所示实施方案中,云基服务105是具有已跨可用区域110a和110b实例化的多个存储缓存130的存储服务。在一些情况下,云基服务105的存储缓存130可形成如本文描述的一个或多个集群(例如,缓存集群)。在缓存集群中,某个集群的存储缓存130代表该集群动作。例如,存储缓存130a和130b可形成缓存集群,例如如图2所示的缓存集群200。在一些情况下,云基服务105的日志储存器140可形成如本文描述的一个或多个集群(例如,日志储存器集群)。在日志储存器集群中,特定集群的日志储存器140代表该集群动作。例如,日志储存器140a和140b可形成日志储存器集群,诸如图5所示的日志储存器集群500。
44.现在转向图2,其所示的框图示出包括云基服务的云环境的示例性元件,该云基服务配置为处理对云基服务的写入请求。在某些实施方案中,存储缓存130a和存储缓存130b是缓存集群200的一部分。如本文使用的,术语“缓存集群”是指跨多个可用区域110分布的存储缓存130的组织,以用于跨可用区域实现数据的复制和可用性。在各种实施方案中,云基服务105接收针对数据集204的写入请求202。该请求可来自云基服务105中的本地数据库节点处的实体,诸如用户、租户、组织、企业等。
45.在所示实施方案中,数据库节点120a是接收针对数据集204的写入请求202的本地数据库节点。数据库节点120a确定将数据集204存储在云环境100中的何处。例如,数据库节点120a可基于与写入请求202相关联的元数据(诸如已提交该请求的实体的元数据),确定将数据集204存储在何处。在某些实施方案中,数据库节点120a确定将数据集204存储在共享对象储存器150中。在一些实施方案中,数据库节点120a还确定将数据集204存储在存储缓存130a中,以便在可用区域110a中进行本地存储。如上所述,数据库节点120a可将数据集204存储在共享对象储存器150中作为数据集的主存储位置,而存储缓存130a用于本地存储该数据集。应注意,数据库节点120a可确定存储数据集204,其中,在一个存储元件中进行的存储先于另一存储元件进行,或者在两个存储元件中并行进行存储。例如,由于到存储缓存130a的传输的低时延,数据库节点120a可在共享对象储存器150之前,执行存储缓存130a中的存储。
46.利用存储在存储缓存130a和共享对象储存器150两者中的数据集204,如图2所示,数据集存储在低时延存储元件(存储缓存130a)中以用于数据的快速检索,并且数据集存储在持久性存储元件(共享对象储存器150)中以用于数据的成本有效、持久和可扩展存储。如本文描述的,数据库节点120a可将用于将数据集204存储在存储缓存130a和共享对象储存器150两者中的元数据传输至集群管理器160。
47.在某些实施方案中,位于与可用区域110a中的数据库节点120a不同的可用区域110b中的数据库节点120b,确定从共享对象储存器150检索数据集204。出于各种原因,数据
库节点120b可确定检索数据集204。在一些实施方案中,响应于数据库节点120b接收到检索数据集的请求,数据库节点120b确定从共享对象储存器150中检索数据集204,如以下图3的实施方案所描述的。在各种实施方案中,数据库节点120b基于在云基服务105中已接收到新数据或更新数据(例如,该数据具有更新)的指示,确定从共享对象储存器150中检索数据集204。例如,由数据库节点120b从集群管理器160接收的元数据可包括新数据或更新数据已由数据库节点120a接收(并且随后存储在共享对象储存器150中)的指示。在其他实施方案中,当数据库节点120b确定存储缓存130b中的数据已经历数据故障(例如,数据丢失、具有错误或无效)时,数据库节点120b可确定从共享对象储存器150中检索数据集204,其中,该数据故障可基于从集群管理器160接收的元数据来确定。
48.在某些实施方案中,如图2所示,存储缓存130b(以及本文描述的任何其他存储缓存)直接从共享对象储存器150检索数据,以用于在可用区域110b中的本地存储。例如,存储缓存130b可接收从其并置数据库节点120b或另一可用区域中的数据库节点120接收的指示,以检索数据集204。在各种实施方案中,数据集204的检索由缓存节点180(图1b所示)执行,其中,缓存节点包括可执行以实现直接从共享对象储存器150检索数据的一组软件例程。直接从共享对象储存器150检索数据集204允许存储缓存130b在数据集不经过数据库节点120b或另一数据库节点的情况下,检索数据集。在一些实施方案中,缓存节点180本身可负责确定从共享对象储存器150检索数据并执行检索。在一些实施方案中,缓存节点180还可能能够将数据传输(写入)至共享对象储存器150,而无需使数据经过数据库节点120b(或另一数据库节点)。在一些设想的实施方案中,数据库节点120b首先从共享对象储存器150检索数据集204,并且接着将所检索的数据集传输至存储缓存130b以用于可用区域110b中的本地存储。
49.从共享对象储存器150检索数据通常比跨可用区域的数据传输更便宜。例如,从共享对象储存器150检索数据可基于每个事务来确定,而跨可用区域的数据传输基于传输中的数据量来确定。由此,从共享对象储存器150检索数据集204以便存储在可用区域110b中,而不是从存储缓存130a或数据库节点120a检索数据集,可减少用数据集填充存储缓存130b的成本。
50.利用存储缓存130b中的数据集204的本地存储,现在跨可用区域110a和110b复制数据集,并且可用于在任一可用区域中的本地检索。可用区域110a和110b中的本地存储允许响应于数据检索请求,由任一可用区域中的数据库节点直接从本地存储(例如,本地存储缓存)检索数据。例如,如果请求的源在可用区域110a本地,那么数据库节点120a可从存储缓存130a检索请求的数据,或者如果请求的源在可用区域110b本地,那么数据库节点120b可从存储缓存130b检索请求的数据。由此,可用区域110a和110b中的本地存储为云基服务105提供低时延数据检索,同时共享对象储存器150中的存储提供用于数据的持久的主存储。
51.图3描绘的框图示出包括云基服务的云环境的示例性元件,该云基服务配置为处理对云基服务的写入和读取请求。在所示实施方案中,数据库节点120b接收读取请求302以检索数据集204。如本文描述的,可从实体接收读取请求302。在各种实施方案中,从可用区域110b本地的实体接收读取请求302(例如,可用区域110b是用于做出读取请求的实体的本地可用区域)。响应于接收到读取请求302,数据库节点120b确定请求的数据是否在存储缓
存130b中可用。例如,在接收到读取请求302时,数据库节点120b可从集群管理器160中检索用于数据集204的元数据。然后,数据库节点120b可确定从何处检索数据以满足读取请求302。如果确定数据在存储缓存130b中可用,则数据库节点130b可从存储缓存130b(未示出)检索数据,并且将数据集传输至做出读取请求302的实体。
52.在各种实施方案中,数据库节点120b确定请求的数据在存储缓存130b中不可用,并且数据库节点120b从共享对象储存器150中检索数据。在一些实施方案中,数据库节点120b确定存储缓存130b中的数据更旧,并且数据库节点120b从共享对象储存器150中检索数据。例如,与存储缓存130b中的数据的版本相比,对存储缓存130a和共享对象储存器150中的数据的版本进行更新。在一些实施方案中,数据库节点120b确定存储缓存130b中的数据无效或具有错误,并且数据库节点120b从共享对象储存器150中检索数据。然后,由数据库节点120b检索的数据集204传输至做出读取请求302的实体并传输至存储缓存130b,以用于在可用区域110b中本地存储数据集(例如,利用数据集填充可用区域110b)。在这些实施方案中,数据库节点120b从共享对象储存器150而不是存储缓存130a检索数据集204,以降低检索数据的成本,如上所述。
53.如本文描述的,云基服务105的实施方案可包括多于两个可用区域110。在此类实施方案中,可与上文描述的用于填充可用区域110b的实施方案类似地填充附加可用区域110。图4描绘的框图示出包括具有三个可用区域110的云基服务的云环境的示例性元件,三个可用区域110配置为处理对云基服务的写入和读取请求。在所示实施方案中,存储缓存130a和存储缓存130b已填充有数据集204,如在以上实施方案中描述的。在各种实施方案中,数据库节点120c接收读取请求402以检索数据集204。如本文描述的,可从实体接收读取请求402。
54.响应于接收到读取请求402,数据库节点120c确定从其检索请求数据的存储元件。例如,数据库节点120c确定是否从存储缓存130c或共享对象储存器150检索请求数据。以类似于上述图4的实施方案的由数据库节点120b做出确定的方式,数据库节点120c可确定从何处检索请求数据。然后,由数据库节点120c检索的数据集204传输至做出读取请求402的实体。当数据库节点120c从共享对象储存器150检索数据集204时,数据库节点120c还将数据集204传输至存储缓存130c,以用于将数据集本地存储在可用区域110c中(例如,利用数据集填充可用区域110c)。
55.图5描绘的框图示出包括云基服务的云环境的示例性元件,该云基服务配置为处理对云基服务的写入和读取请求以及对写入和读取请求的日志的写入和读取。在所示实施方案中,除了数据库节点120和存储缓存130(如图1a所示)之外,云基服务105还包括可用区域110中的日志储存器140。日志储存器140a与可用区域110a中的数据库节点120a和存储缓存130a并置。日志储存器140b与可用区域110b中的数据库节点120b和存储缓存130b并置。在某些实施方案中,日志储存器140a和日志储存器140b是日志储存器集群500的一部分。如本文使用的,术语“日志储存器集群”是指跨多个可用区域110分布的日志储存器140的组织,以用于跨可用区域的日志数据的复制和可用性。
56.在各种实施方案中,如本文描述的,数据库节点120a和数据库节点120b处理云环境100中的事务。事务的示例包括:如5图所示,对存储缓存130a、存储缓存130b或共享对象储存器150的“读取/写入请求”及“数据读取/写入”。在一些实施方案中,如果需要(例如,如
果数据在共享对象储存器150中不可用),则数据库节点120a和数据库节点120b还可处理数据库节点之间的数据传送事务。数据库节点120a或数据库节点120b可在事务发生时,生成事务的日志,并且将该事务的日志存储(例如,写入)在对应的日志储存器(例如,分别为日志储存器140a或日志储存器器140b)中。因此,日志储存器140a和140b用于由其相应数据库节点120a和120b存储随时间发生的事务的日志。
57.在某些实施方案中,事务的日志包括事务的时间记录和事务的数据的副本。作为示例,数据库节点120a可生成事务的日志,以便响应于写入请求而将数据写入至存储缓存130a。因此,通过数据库节点120a存储在日志储存器140a中的事务的日志,包括写入存储缓存130a的数据的副本以及事务的时间记录。在各种实施方案中,存储在日志储存器140a和日志储存器140b中的事务的日志用于在云环境100中出现问题的情况下,促进数据的恢复。例如,在涉及将数据写入存储缓存130a的事务发生故障的情况下,可能需要回滚到存储缓存的数据的一次或多次写入。存储在日志储存器140a中的事务的日志可由数据库节点120a读取,并用于确定执行哪些写入以及哪些写入需要回滚或撤销。
58.在一些实施方案中,存储在一个可用区域的日志储存器(例如,可用区域110a的日志储存器140a)中的事务日志被复制到其他可用区域的日志储存器(例如,可用区域110b的日志储存器140b)中。在一个设想的实施方案中,类似于数据集(例如,如上所述的数据集204)的复制,事务日志可复制。例如,用于由数据库节点120a处理的事务的事务日志可与数据集一起存储在共享对象储存器150中(除事务日志存储在日志储存器140a中)。然后,响应于例如读取请求,可由数据库节点120b从共享对象储存器150中检索事务日志以及数据集。除了将数据集存储在存储缓存130b中之外,然后数据库节点120b可将事务日志存储在日志储存器140b中。在从共享对象储存器检索数据的成本是基于事务的情况下,从共享对象储存器150检索事务日志以及数据集可能是更加成本高效的。在另一设想的实施方案中,生成事务日志的数据库节点(例如,数据库节点120a)可直接将事务日志传输至每个可用区域中的每个日志储存器(因为将事务日志传输并存储在日志储存器中的成本可能是合理的)。
59.在各种实施方案中,如本文所述,元数据可由各种节点(例如,与存储缓存130相关联的数据库节点120或缓存节点180)使用,以确定如何在云环境100中处理对数据的请求和事务。图6描绘的框图示出包括云基服务和集群管理器的云环境的示例性元件。如图6所示,在某些实施方案中,元数据存储在由集群管理器160实例化的元数据存储装置170中。元数据中可用的信息的示例包括特定数据已存储在云基服务105中或特定数据正在存储在云基服务105中的位置。元数据中可用的信息的其他示例包括用于已存储在云基服务105中的数据或正在存储在云基服务中的数据的时间戳、标签或分类。
60.在某些实施方案中,云基服务105中的数据库节点120访问元数据存储装置170。例如,如图6所示,数据库节点120可实现从元数据存储装置170读取元数据以及将元数据写入元数据存储装置。在各种实施方案中,数据库节点120访问元数据,以确定将数据存储在何处或者基于元数据来确定将数据存储在何处。例如,在数据库节点120a接收到写入请求的情况下,数据库节点可访问元数据以确定将写入请求中的数据发送到何处以便存储。在一些实施方案中,元数据存储装置170中的元数据可由云基服务105中的存储缓存130直接访问。本文描述由数据库节点120和存储缓存130使用元数据的附加实施方案。
61.可设想各种实施方案,其中,在数据库节点填充本地存储(例如,存储缓存130)之
前,数据库节点120将数据集初始存储在共享对象储存器150中。图7描绘的框图示出包括云基服务的云环境的示例性元件,该云基服务配置为将写入请求的存储引导至共享对象储存器以供云基服务的本地存储的随后填充。所示实施方案可例如在写入请求中的数据集是大数据集的情况下实现。在这种情况下,可能更经济的是:数据库节点将数据直接存储在共享对象储存器150中而不是本地存储缓存中,以利用共享对象储存器的高带宽容量和低交易成本的优势。另外,取决于本地存储缓存130的大小,大数据集的存储可能是困难的。在将数据存储在共享对象储存器150中之后,可用区域110中的本地存储(例如,存储缓存130)可根据需要从共享对象储存器150填充。在一些实例中,填充在本地存储缓存130中的数据可以是存储在共享对象储存器150中的数据的子集(例如,在存储在共享对象储存器150中的数据集对于本地存储缓存来说太大的情况下)。
62.在图7所示的实施方案中,数据库节点120a接收用于存储数据集704的写入请求702。在某些实施方案中,数据库节点120a确定在本地存储在存储缓存130a中之前,数据集704要存储在共享对象储存器150中。例如,对于存储缓存130a,数据集704可能太大,或者数据集可能足够大,其中由于经济原因或其他原因,到共享对象储存器150的高带宽存储首先是优选的。随后,数据库节点120a发送数据集704以便存储在共享对象储存器150中。
63.在一些实施方案中,在数据集704存储在共享对象储存器150中之后,数据库节点120a或数据库节点120b可分别检索该数据集并将其存储在存储缓存130a或存储缓存130b中。在其他设想的实施方案中,存储缓存130a或存储缓存130b可直接从共享对象储存器150中检索数据集704。例如,在存储缓存130中实现的缓存节点180(图1b所示)可直接从共享对象储存器150中检索数据以便存储在存储缓存中。在一些实施方案中,缓存节点180可响应于来自其并置数据库节点120或另一可用区域中的数据库节点120的指示而直接检索数据。应注意,本文描述的各种实施方案还可包括由存储缓存130(通过缓存节点180)从共享对象储存器150直接检索数据。
64.在一些实施方案中,响应于数据集在共享对象储存器150中的存储,数据库节点120(或存储缓存130)检索数据集704或该数据集的子集。例如,数据库节点120可(基于元数据)接收新数据或更新数据已存储在共享对象储存器150中的指示,并且响应于该指示,检索数据集704或该数据集的子集。在一些实施方案中,如上所述,数据库节点120(或存储缓存130)响应于由数据库节点接收的读取请求,检索数据集704或该数据集的子集。在一些实施方案中,响应于确定存储缓存中的数据无效、缺失或具有错误(例如,数据故障),数据库节点120(或存储缓存130)检索数据集704或该数据集的子集。
65.基于类别的缓存管理
66.公开文本描述用于利用分布式存储系统,根据各种实体的分类,管理分布式存储系统中的多个存储缓存的各种技术。传统地,通过使用例如缓存未命中时的显式或隐式缓存填充,来允许缓存数据移除并重新加载(rehydrated,再水化),由分布式存储系统的应用层执行缓存管理。然而,不同数据集可能不是同等重要的。也就是说,为第一实体缓存的数据可比为第二不同实体缓存的数据更有价值。例如,在初始存储之后经常访问并快速访问的数据可被称为“热”数据。如此,针对一些实体存储的数据(例如,热数据)可比针对其他实体存储的数据需要更高的可用性。此外,高价值数据的检索可需要比低价值数据更低的时延。
67.具体地,公开文本提供在由分布式存储系统使用的数据集群的不同可用区域中实现的缓存的可变可用性,以存储数据。如以上参考图1a所讨论的,缓存位于联接至包括在分布式存储系统的数据集群中的数据库节点的不同可用区域中。包括在数据集群中的数据库节点处理针对其对应可用区域的缓存集群和共享对象储存器两者中数据的检索、操纵和存储。在数据存储的正常操作期间,数据库节点将数据写入至缓存集群(用于低时延检索)和共享对象储存器(其提供高带宽)两者中,使得数据在两个存储元件之间复制,其中,缓存集群提供临时(例如,短暂)存储,并且共享对象储存器提供持久存储。在正常数据检索操作期间,从缓存集群(例如,从位于可用区域中的给定缓存)读取数据以用于低时延数据检索
‑‑
假设数据先前存储在缓存中。
68.由于缓存是临时存储数据的,所以在给定缓存中存储的数据可能在给定缓存故障或电力丢失的情况下丢失。在缓存中的数据丢失之后,联接至与丢失数据相关联的缓存的数据库节点可从共享对象储存器直接检索丢失数据,以重新填充给定缓存。在数据丢失的情况下,从共享对象储存器直接检索数据比跨可用区域检索数据更加成本高效。因此,所公开的缓存管理技术可例如在系统故障的情况下,有利地降低与数据管理相关联的成本。此外,所公开的缓存管理技术可有利地增加高优先级数据的空间可用性,从而改善经由云基服务提供的数据库的响应时间。
69.在一些情况下,用于低时延数据检索的缓存的使用可能是昂贵的、或者是可用性受限的或者这两者。因此,公开文本讨论用于基于与待存储数据相关联的类别来改变用于存储各种数据的缓存的可用性的技术。以此方式,基于类别对数据进行优先级排序,以更有效地利用有限的缓存存储。这例如确保大量空间可用于热数据。分派给要存储在缓存集群中的数据集的类别由与该数据集相关联的实体(例如,用户、租户、组织、公司等)或该数据集中包括的数据类型或两者规定。在一些实施方案中,系统管理员将分类分派给不同实体。
70.不同类别的实体指示如何将这些实体的数据标记并最终存储在缓存中。分布式存储系统可基于例如,与数据集相关联的用户的用户id来确定在其中存储数据集的多个可用区域。作为一个特定示例,“黄金”客户可能具有跨三个不同可用区域存储的其数据的副本,而“青铜”客户可能仅具有存储在单个本地可用区域中的其数据的一个副本。如果客户为由分布式存储系统提供的数据库服务支付至少阈值量,那么客户可被分类为“黄金”客户。即,例如,为了服务,黄金客户比青铜客户支付得更多。在该特定示例中,在其本地可用区域处的缓存故障的情况下(例如,由于青铜客户存储其数据的可用区域处的断电),青铜客户必须等待系统从共享对象储存器获取其请求数据(其与更高时延相关联,即,比从缓存检索数据的时延更高)。相反,在系统在其本地可用区域处故障的情况下,用于黄金客户的数据可从另一外部定位的可用区域检索,以用于响应来自黄金客户的查询。在使用来自另一可用区域的数据对黄金客户进行响应期间,该系统还通过从共享对象储存器拉取数据来针对黄金客户在故障的缓存中重新填充数据。
71.从“本地”可用区域检索数据包括:数据库节点从位于与数据库节点相同的可用区域中的缓存检索数据。即,如果缓存与同一地理云区中的给定数据库节点并置,则该缓存相对于该给定数据库节点是本地的。在一些实施方案中,由实体利用以从分布式存储系统请求数据的计算机系统与用来检索请求数据的数据库节点并置。相反,从“外部”可用区域检索数据包括数据库节点从位于与数据库节点不同的可用区域中的缓存检索数据。例如,数
据库节点可从位于与数据库节点不同的地理区中的缓存中,检索请求数据。
72.现在转向图8,其所示的框图示出包括云基服务105的云环境的示例性元件,该云基服务配置为基于与各种实体相关联的元数据822处理来自各种实体的写入请求。在所示实施方案中,云基服务105从本地数据库节点120a处的第一实体810a接收针对数据集804的写入请求802。
73.在所示实施方案中,数据库节点120a与第一实体810a(例如,由该实体利用的计算设备)位于同一地点。例如,数据库节点120a和第一实体810a位于同一地理区内。例如,数据库节点120a位于可用区域110a中,该可用区域位于与第一实体810a类似的地理位置中。为了满足请求802,数据库节点120a与集群管理器160通信,以获得用于第一实体810a的元数据822。第一实体810a可以是用户、客户、租户、组织、企业等。在各种实施方案中,第一实体810a可与标识符相关联。例如,数据库节点120a可将第一实体810a的标识符(id)提供至集群管理器160。
74.集群管理器160将第一实体的元数据822定位在元数据存储装置170内,并且将第一实体810a的该元数据提供至数据库节点120a。元数据822包括第一实体810a的分类。该分类可由各种数据库节点使用,以确定如何存储例如第一实体810a的数据。例如,如果第一实体810a是“黄金”客户,则该客户数据可具有优于“白银”客户的优先级。在一些实施方案中,元数据包括由集群管理器基于与不同数据集相关联的实体的分类,针对不同数据集而保持标签。例如,用于数据集804的标签可指示存储数据集804的副本的一个或多个缓存的可用区域。
75.在获得第一实体810a的元数据822之后,数据库节点120a确定将数据集804存储在何处。数据库节点120a首先将数据集804本地存储在存储缓存130a中,然后将数据集804存储在共享对象储存器150中。应注意,由于与储存器150相关联的较低时延,数据库节点120a可在将数据存储在共享对象储存器150之前,将数据存储在存储缓存130a中。在其他情况下,数据库节点120a可并行地执行两个不同存储元件中的存储。在各种实施方案中,通过数据库节点120对数据的操纵受到不同实体的分类的影响。例如,数据集的存储可需要基于实体的类别来确定缓存分配大小,并确定是否回收(eviction)数据以符合确定大小限制。以下参考图10a和图10b更详细地讨论基于实体分类的数据的操纵。
76.在一些实施方案中,数据库节点120a将数据集804和元数据822传输至数据库节点120b。应注意,数据库节点120b位于与数据库节点120a不同的可用区域110b中。数据库节点120b将数据集804的副本存储在存储缓存130b中。然后,数据库节点120b可基于第一实体810a的元数据822来确定是否将数据集804传输至第三数据库节点120c,以便存储在第三存储缓存130c中。在其他实施方案中,数据库节点120b从数据库节点120a接收元数据822,并且基于元数据822确定是否从存储缓存130a拉取数据以便存储在存储缓存130b中。例如,数据库节点120b基于元数据822做出其自身的存储确定,而不是从数据库节点120a接收存储数据集804的副本的指令。在一些实施方案中,数据库节点120b确定如何基于元数据将数据集804的副本存储在存储缓存130b中。例如,数据库节点120b可指示存储缓存130b将数据集804保持在储存器中十分钟,而用于另一实体的数据可保留一小时。以下参考图9更详细地讨论基于包括在各种实体的元数据中的信息来存储数据。
77.如以上参考图1a讨论的,集群管理器160保持用于云基服务105的各个元件的信
息,诸如数据库节点120的健康(例如,哪些节点已崩溃)以及由各个节点用来确定如何处理来自各种实体的对数据的请求的元数据。即,集群管理器160可操作以保持用于缓存集群200的信息。如此,云基服务105是区域感知(zone-aware)的。例如,服务105能够识别缓存数据的位置(可用区域110)。在各种实施方案中,在将数据缓存在其各自存储缓存130之后,数据库节点120配置为将数据的位置提供至集群管理器160,以便存储在元数据存储装置170中。这可允许云基服务105识别哪个可用区域从例如接收到读取请求时开始检索数据。以此方式,服务105感知其最近访问的可用区域以及请求数据所位于的区。
78.在一些实施方案中,数据库节点120a从一个或多个实体接收读取请求。例如,第一实体810a可请求与写入请求802中指定的数据集804不同的数据集。数据库节点120a配置为基于第一实体810a的元数据822,识别从其检索请求数据的存储位置(例如,共享对象储存器150,或存储缓存130a中的一个)。在各种实施方案中,读取请求受到不同实体的分类的影响。例如,如果数据库节点120a引起缓存未命中,则该节点必须确定是否从较慢的共享对象储存器检索数据,或者是否通过从较快的储存器(例如,位于另一可用区域中的存储缓存)拉取请求数据而引起附加成本。以下参考图10a和图10b更详细地讨论这种基于类别的决定。
79.图9是示出配置为识别用于存储第一实体的数据的缓存的示例性数据库节点的框图。在所示实施方案中,数据库节点120a包括类别识别模块910、存储决策模块920、标记模块930、位置模块940和检索决策模块950。
80.在所示实施方案中,数据库节点120a从集群管理器160接收第一实体810a的元数据822,并且将该元数据提供给类别识别模块910。在所示实施方案中,类别识别模块910识别第一实体810a的分类912,并将该分类发送到存储决策模块930。例如,类别识别模块910可使用第一实体810a的id,在由集群管理器160保持的表中查找该实体的类别。作为另一示例,该实体的分类可被包括在第一实体810a的id中,诸如租户id。在该特定示例中,模块910从租户id中提取分类。在各种实施方案中,类别识别模块910可确定第一实体810a是新客户(例如,仅在两周内利用云基服务105)。基于该确定,模块910可将第一实体810a分类为“低优先级”客户。
81.存储决策模块920基于分类912确定将从第一实体810a接收的数据存储在写入请求中的位置(例如,写入请求820中的数据集804)。例如,存储决策模块920可确定将高优先级实体的数据存储在本地缓存(例如,位于与数据库节点120a相同的可用区域中)以及跨不同可用区域定位的若干缓存两者中。这种多区域数据存储可有利地减少或防止高优先级实体出现缓存未命中(例如,对于重要数据)。例如,大型租户(例如,遍布美国或全球范围的公司)可能同时从多个可用区域中访问数据库。在该示例中,如果在一个数据库节点处需要数据,则很可能相同数据也将由大型实体的其他可用区域中的其他数据库节点请求。因此,所公开的系统配置为预期将要跨各个区请求数据,针对大型实体将数据预加载到跨可用区域的各个缓存中,由此避免缓存未命中。
82.在一些实施方案中,存储决策模块920可确定根本不缓存给定实体的数据。例如,存储决策模块920可确定第二实体(例如,低优先级实体)的数据应仅存储在共享对象储存器(例如,储存器150)中。然后,存储决策模块920输出一个或多个识别的缓存922(例如,缓存130),例如用于存储从第一实体810a接收的数据集804。
83.在所示实施方案中,标记模块930基于识别的缓存922,将标签分派给数据集804。该标签可由数据库节点120a或其他数据库节点120或两者使用,以确定数据集804的附加副本应存储在何处。例如,如果数据库节点120a将标记的数据集804传输至数据库节点120b,则节点120b可将数据集存储在存储缓存130b中,并且接着基于标签,确定是否将数据集804传输至第三数据库节点120c以便存储在第三存储缓存130c中。在该实例中,数据库节点120b基于由标记模块930分派的标签来确定存储和传输数据集804。
84.在一些实施方案中,数据库节点120a还向位置模块940提供元数据822。例如,数据库节点120a可在尝试读取数据时,向模块940提供元数据。如所示实施方案中的虚线所示,位置模块940可基于分派给数据集804的标签,确定当前存储数据集804的副本的一个或多个可用区域942。例如,元数据822可包括指示具有各种不同缓存的不同可用区域的各种标签。如本文讨论的,数据库节点120a可根据由集群管理器160保持的标签,在将该数据存储在缓存中之前,将标签分派给不同数据集。换言之,分派给数据集804并由集群管理器存储在第一实体810a的元数据822内的标签,可指示该数据当前存储在其中的一个或多个可用区域。在定位到该标签中指示的可用区域之后,位置模块940向检索决策模块950发送指示所识别的可用区域942的信息。
85.检索决策模块950选择从其检索数据集804或确定从共享对象储存器150检索数据集(例如,如果请求实体被分类为低优先级实体)的可用区域942。例如,模块950可确定哪个可用区域将提供针对数据804的最有效检索。也就是说,如果数据集804的副本存储在与数据库节点120a相同的可用区域中,则从该相同可用区域检索数据将比从外部可用区域检索数据更高效。检索决策模块950输出识别的缓存(例如,位于可用区域942中的一者中)以用于检索数据集804。
86.在所示实施方案中,数据库节点120a输出数据库指令924。例如,数据库节点120a可基于由标记模块930分派的标签,将指令924传输至指定存储数据集804的存储缓存130a。作为另一示例,数据库节点120a可基于识别缓存130a的检索决策模块950,将指令924传输至请求检索数据集804的存储缓存130a,以用于检索该数据。
87.在一些实施方案中,由数据库节点120a生成的数据库指令924指定数据应由一个或多个缓存存储的时间量。例如,例如基于第一实体810a的分类912和另一实体的分类,指令924可指示将数据集804存储一小时,但是将另一实体的数据仅存储十分钟。作为一个具体示例,黄金客户的数据可比其他客户的数据存储的时间更长。
88.图10a是示出基于实体分类的缓存空间的示例性分配的框图。在所示实施方案中,示例1000a示出基于与第一实体810a和第二实体1010b相关联的元数据822a和1022b,对这两个实体的缓存空间的示例性分配。
89.在所示实施方案中,数据库节点120a从集群管理器160检索第一实体810a的元数据822a和第二实体1010b的元数据1022b。基于该元数据,数据库节点120a将指令发送至存储缓存130a,该指令指定为第一实体分配的空间量1032a比为第二实体分配的空间量更大。在所示实施方案中,在存储缓存130a内,用于第一实体810a的分配空间1032a大于用于第二实体1010b的分配空间1032b。数据库节点120a可基于在用于两个实体的元数据822a和1022b中指定的分类来确定这些空间分配。例如,相比分类为“低优先级”的另一实体,分类为“高优先级”的实体可具有跨各种可用区域1010在存储缓存130中的更大空间分配量。
90.应注意,为了可见性,在图10a中示出单个存储缓存130a,而在其他实施方案中,各种其他存储缓存130中的任一个可从其相应数据库节点120接收指定针对不同实体分配的空间量的指令。此外,不同的存储缓存130可为给定实体分配相同或不同的空间量。例如,与存储缓存130b相比,存储缓存130a可为第一实体810a分配不同的空间量。
91.在一些实施方案中,由数据库节点120a发送的存储空间指令包括定时指令。例如,除了指定分配给第一实体810a的空间量之外,数据库节点120a还可指定将第一实体810a的信息保留在该分配空间1032a中的时间量。作为一个特定示例,存储缓存130a配置为存储100个对象,其中,这些对象槽(object slot)中的十个分配给黄金客户并且这些对象槽中的一个分配给青铜客户。在该具体示例中,数据库节点120a指示存储缓存130a将为黄金客户分配的十个槽中的对象保留一小时,并且将为青铜客户分配的一个槽中的对象仅保留十分钟。
92.在一些实施方案中,给定实体的数据集的副本存储在跨不同可用区域的多个缓存中。在其他实施方案中,给定实体的数据集的单个副本存储在单个缓存中。例如,基于具有高优先级分类的第一实体810a,数据库节点120a在存储缓存130a以及位于可用区域110a外部的一个或多个缓存两者中,存储该实体的数据。作为一个具体示例,黄金客户可使其数据存储在多个不同的可用区域中(例如,以确保其数据的高可用性),而白银客户可使其数据的单个副本存储在本地可用区域中(例如,提供其数据的较低可用性)。可从第一可用区域中的缓存检索用于高优先级实体的数据的副本,以便存储在其他可用区域的缓存中。然而,可从例如共享对象储存器150检索用于低优先级实体的数据。即,用于高优先级实体的数据复制直接发生(例如,更快),而用于低优先级实体的数据复制间接发生。虽然跨可用区域检索数据比从较慢储存器(例如,共享对象储存器150)检索数据更快,但是相比较慢数据检索,该类型的数据检索更昂贵。如此,用于低优先级实体的数据可能不是跨可用区域服务,而是由共享对象储存器服务。
93.在一些实施方案中,在回收第一实体的数据之前,从缓存回收第二实体的数据。例如,当存储缓存达到容量时,它将在回收针对黄金客户存储的数据之前,回收针对白银客户存储的数据。该缓存的可用区域中的数据库节点可指示缓存基于例如从集群管理器160接收的元数据而执行这种回收。
94.在一些实施方案中,数据库节点120a配置为基于这些实体的分类,相对于第二实体1010b的数据存储,优先存储第一实体810a的数据。例如,如果数据库节点120a从第一实体810a和1010b并行接收请求,则数据库节点120a可在将第二实体的数据存储在缓存130a中之前,将第一实体810a的数据存储在存储缓存130a中。此外,在数据库节点120a接收两个写入请求时,如果存储缓存130a接近容量,则数据库节点120a配置为将第一实体810a的数据存储在存储缓存130a中,但是将第二实体1010b的数据存储在共享对象储存器150中(例如,不缓存第二实体的数据)。
95.处理缓存未命中
96.在一些实施方案中,数据库节点配置为基于与缓存未命中相关联的实体的分类来处理缓存未命中。例如,当数据库节点120a从第一实体810a得到读取请求(图10a中未示出)并且发生缓存未命中时,该节点配置为基于第一实体的分类,从较慢的存储源(例如,共享对象储存器150)或从另一可用区域中的存储缓存,检索数据。例如,如果第一实体810a是黄
金客户,则数据库节点120a从另一可用区域中的缓存检索请求数据。也就是说,如果第一实体810a的分类指示跨多个可用区域存储该实体的数据的副本,则数据库节点120a将从另一可用区域中的存储缓存拉取数据,以便响应该读取请求。然而,为了利用缺失数据重新填充缓存,数据库节点120a配置为从共享存储缓存150拉取数据(例如,从较慢的存储器拉取,以避免与较快的跨区域数据检索相关联的高成本)。作为一个具体示例,跨可用区域的数据检索可花费两毫秒,而从共享对象储存器150检索数据可花费100毫秒。
97.在实体具有低优先级分类的情况下,数据库节点120a配置为简单地从共享对象储存器150中检索数据。例如,低优先级实体可能不具有跨可用区域存储的其数据的副本,并且因此必须等待更长时间来接收其请求数据。在一些情况下,最低优先级实体(例如,青铜客户)可能根本不使其数据重新填充在与未命中相关联的缓存内。在此类情形中,对从该实体接收的数据的未来请求,简单地通过从共享对象储存器150中检索数据来实现。在其他情形下,即使实体具有跨多个可用区域存储的其数据的副本,在缓存未命中的情况下,由于该实体的分类(例如,实体是低优先级),从共享对象储存器而不是跨可用区域检索该实体的数据。因此,与其他实体(例如,跨可用区域检索其数据)相比,该实体在检索其数据时可经历较高时延。
98.图10b是示出给定可用区域中的示例性系统崩溃的框图。在所示实施方案中,示例1000b示出在可用区域110a中发生的系统崩溃。
99.在所示实施方案中,可用区域110a经历系统崩溃。该崩溃可能是由于断电或某种系统故障引起的。该崩溃致使存储缓存130a变得暂时不可用,例如,直到云基服务105可使该特定可用区域110a重新上线为止。在所示实施方案中,当可用区域110a恢复时,存储缓存130a从集群管理器160中检索元数据822,以便确定针对各个实体要检索和存储哪些数据。基于该确定,缓存130a向数据库节点120a发送针对属于不同实体的数据的请求1020a。数据库节点120a从共享对象储存器150中检索请求数据1022。例如,基于针对第一实体的指定其为高优先级实体的元数据822,存储缓存130a向数据库节点120a发送请求,该请求指示从另一可用区域中的缓存检索第一实体的数据。作为另一示例,基于针对第二实体的指定其为低优先级实体的元数据822,存储缓存向数据库节点120a发送请求,该请求指示从共享对象储存器150检索第二实体的数据。作为又一示例,当缓存130a在系统崩溃之后重新上线时,它可基于第三实体的元数据822来确定根本不重新填充该实体的数据。也就是说,存储缓存130a可不立即重新填充该第三实体的数据。相反,存储缓存130a可等待,直到第三实体在询问数据库节点120a之前,提交针对该数据的读取请求,以便从共享对象储存器150中检索数据(此时数据还被缓存用于第三实体)。
100.在所示实施方案中,数据库节点120a可例如基于来自存储缓存130a的指定跨可用区域(而不是从共享对象储存器150)检索数据的数据请求1020a,而将数据请求1020b发送至数据库节点120b。数据库节点120b可从存储缓存130b检索数据1022。然后,数据库节点120b可将数据1022提供至数据库节点120a以便存储在缓存130a中。
101.示例性方法
102.图11是示出根据一些实施方案的用于使用基于类别的技术来处理写入请求的示例性方法的流程图。除了其他设备之外,图11所示的方法1100可与本文公开的任何计算机电路、系统、设备、元件或部件结合使用。在各种实施方案中,所示出的一些方法元素可同时
执行、以与示出的顺序不同的顺序执行或者可省略。还可根据需要执行附加方法元素。例如,方法1100可由数据库节点120a执行。
103.在元素1110处,在所示实施方案中,分布式存储系统的数据库节点从多个实体中的第一实体接收存储数据集的请求。在一些实施方案中,数据库节点从多个实体中的第二实体接收针对第二数据集的请求。在一些实施方案中,数据库节点基于与第二实体相关联的元数据,识别存储第二数据集的多个缓存中的第一缓存,其中,第一缓存位于第一可用区域中。在一些实施方案中,数据库节点响应针对第二数据集的请求,其中,该响应是基于从第一缓存检索第二数据集而执行的。
104.在一些实施方案中,数据库节点确定在第一缓存中已经发生缓存未命中。在一些实施方案中,数据库节点基于与缓存未命中相关联的实体的分类,确定是否使用来自共享对象储存器的数据而针对来自第一缓存的数据未命中的提供查询服务。在一些实施方案中,数据库节点从多个实体中的第二实体接收针对第二数据集的请求。在一些实施方案中,数据库节点从共享对象储存器检索第二数据集,其中,基于在与第二实体相关联的元数据中指示的分类而执行该检索。
105.在1120处,数据库节点获得与第一实体相关联的元数据,其中,元数据指定多个实体的多个分类中的一个分类。在一些实施方案中,数据库节点通过从分布式存储系统的集群管理器中接收与多个实体中的不同实体相关联的元数据来获得元数据,其中,该元数据包括由集群管理器基于与不同数据集相关联的实体的分类,针对不同数据集而保持的标签。在一些实施方案中,数据集的标签指示存储数据集的副本的多个缓存的相应可用区域。
106.在一些实施方案中,多个缓存还配置为基于第一实体的分类,跨不同可用区域存储针对第一实体的数据的多个副本。在一些实施方案中,多个缓存还配置为基于多个实体中的第二实体的分类,存储针对第二实体的数据的单个副本。在一些实施方案中,多个缓存还配置为基于第二实体的分类,在执行针对第一实体存储的数据的缓存回收之前,执行针对第二实体存储的数据的缓存回收。在各种实施方案中,多个缓存配置为基于不同实体的分类,根据各种不同的时延标准(例如,实体能够检索其数据的速度)、存储大小分配、缓存的快速刷新等而存储数据。
107.在1130处,数据库节点将数据集提供至多个缓存中的一个或多个缓存以便存储,其中,多个缓存配置为基于在与第一实体相关联的元数据中识别的第一实体的分类而存储数据集,并且其中,多个缓存位于两个或更多个可用区域中。在一些实施方案中,多个缓存还配置为基于在与第一实体相关联的元数据中指示的第一实体的分类以及在与第二实体相关联的元数据中指示的第二实体的分类,为第一实体分配的缓存空间量大于为多个实体中的第二实体分配的缓存空间量。例如,与白银客户相比,黄金客户可分配多个存储缓存中的更多空间。
108.在1140处,数据库节点将数据集存储在联接至数据库节点的共享对象储存器中。在一些实施方案中,响应于系统故障,多个缓存配置为基于第一实体的分类,确定将第一实体的数据从共享对象储存器重新填充入多个缓存中的一个或多个缓存。在一些实施方案中,响应于系统故障,多个缓存配置为基于第二实体的分类,确定不将多个实体中的第二实体的数据重新填充入多个缓存中的一个或多个缓存,其中,第一实体的数据的重新填充是在没有被缓存未命中引发的情况下执行的。
109.在一些实施方案中,基于第一实体的分类,相对于多个实体中的第二实体的数据的存储,优先存储第一实体的数据。在一些实施方案中,第一可用区域包括复制第二可用区域中的至少一个其他缓存的数据的第一缓存。
110.图12是示出根据一些实施方案的用于使用基于类别的技术来处理对存储在一个或多个缓存中的数据的读取请求的示例性方法的框图。除了其他设备之外,图12所示的方法1200可与本文公开的任何计算机电路、系统、设备、元件或部件结合使用。在各种实施方案中,所示出的一些方法元素可同时执行、以与示出的顺序不同的顺序执行或者可省略。还可根据需要执行附加方法元素。例如,方法1200可由数据库节点120b执行。
111.在元素1210处,在所示实施方案中,第一可用区域中的第一数据库节点从多个实体中的第一实体接收针对第一数据集的请求。在一些实施方案中,第一数据库节点还配置为从第一实体接收存储第二数据集的请求。在一些实施方案中,第一数据库节点还配置为将第二数据集提供至多个缓存中的一个或多个缓存以便存储,并且将第二数据集存储在共享对象储存器中。在一些实施方案中,将第二数据集提供至多个缓存中的一个或多个缓存以便存储包括:提供指定将第二数据集的多个副本存储在位于不同可用区域的多个缓存中的指令,其中,基于在与第一实体相关联的元数据中指定的第一实体的分类来提供指令。
112.在1220处,第一数据库节点获得与第一实体相关联的元数据,其中,元数据指定多个实体的多个分类中的一个分类。在一些实施方案中,从分布式存储系统的集群管理器获得与第一实体相关联的元数据,由集群管理器针对多个实体中的不同实体保持的元数据,指示存储针对多个实体中的不同实体的数据的相应可用区域。
113.在1230处,数据库节点与多个存储缓存中的第一缓存通信以便检索第一数据集,其中,第一缓存位于第一可用区域中,并且其中,多个存储缓存配置为基于多个分类存储多个实体的数据。
114.在1240处,数据库节点基于该通信识别已经发生缓存未命中。例如,数据库节点试图从其检索第一数据集的缓存,当前不存储第一数据集。由此,缓存向数据库节点返回指示缺少数据的消息。
115.在1250处,数据库节点基于缓存未命中确定是否使用共享对象储存器或位于第二可用区域中的第二缓存,来响应针对第一数据集的请求。在一些实施方案中,响应于系统故障,多个缓存还配置为基于第一实体的分类,确定使用从共享对象储存器检索的数据将第一实体的数据重新填充到多个缓存中的一个或多个缓存中。在一些实施方案中,响应于系统故障,多个缓存还配置为基于第二实体的分类,确定不将第二实体的数据重新填充入多个存储缓存中的一个或多个存储缓存,其中,第一实体的数据的重新填充是在没有被缓存未命中引发的情况下执行的。
116.图13是示出根据一些实施方案的用于在云基服务中处理写入请求的示例性方法的流程图。除了其他设备之外,图13所示的方法1300可与本文公开的任何计算机电路、系统、设备、元件或部件结合使用。在各种实施方案中,所示出的一些方法元素可同时执行、以与示出的顺序不同的顺序执行或者可省略。还可根据需要执行附加方法元素。方法1300可通过执行存储在非暂时性计算机可读介质上的一组程序指令来执行。
117.在1310处,在所示实施方案中,在第一可用区域中的第一数据库节点处接收存储数据集的请求。
118.在1320处,在所示实施方案中,第一数据库节点将数据集传输至第一可用区域中的第一存储缓存,以用于将数据集存储在该第一可用区域中。在一些实施方案中,第一数据库节点可操作,以响应于数据库查询从第一可用区域中的第一存储缓存检索请求数据。
119.在1330处,在所示实施方案中,第一数据库节点将数据集传输至共享对象储存器,以用于将数据集存储在第一可用区域中。
120.在1340处,在所示实施方案中,第二可用区域中的第二数据库节点从共享对象储存器检索数据集。在一些实施方案中,第二可用区域中的第二数据库节点可操作以响应于第二存储缓存中的数据故障,从共享对象储存器检索数据集。在一些实施方案中,第二可用区域中的第二数据库节点可操作以响应于确定共享对象储存器中的数据集包括由第二可用区域中的第二存储缓存存储的数据集的更新,从共享对象储存器检索数据集。
121.在1350处,在所示实施方案中,第二数据库节点将数据集传输至第二可用区域中的第二存储缓存,以用于将数据集存储在第二可用区域中。在一些实施方案中,第二数据库节点可操作以在第一可用区域中的第一存储缓存中未发现请求数据时,从第二可用区域中的第二存储缓存中检索请求数据。在一些实施方案中,第一数据库节点或第二数据库节点可操作以在第一可用区域中的第一存储缓存或第二可用区域中的第二存储缓存中未发现请求数据时,从共享对象储存器检索数据。
122.在一些实施方案中,存储缓存由在内部非易失性存储器中存储缓存数据的服务器托管,并且共享对象储存器是持久性对象储存器。在一些实施方案中,数据库节点可操作以将用于由多个数据库节点进行的操作的日志传输至日志储存器集群,以便存储在分隔为两个或更多个可用区域的日志存储元件中,其中,用于日志储存器元件的可用区域与存储缓存的可用区域相对应。在一些实施方案中,存储缓存的指定可用区域的日志,存储在日志储存器元件的对应于指定可用区域的可用区域中。
123.图14是示出根据一些实施方案的用于在云基服务中处理写入请求的另一示例性方法的流程图。除了其他设备之外,图14所示的方法1400可与本文公开的任何计算机电路、系统、设备、元件或部件结合使用。在各种实施方案中,所示出的一些方法元素可同时执行、以与示出的顺序不同的顺序执行或者可省略。还可根据需要执行附加方法元素。方法1400可通过执行存储在非暂时性计算机可读介质上的一组程序指令来执行。
124.在1410处,在所示实施方案中,分布式存储系统中的第一数据库节点接收存储数据集的请求,其中,第一数据库节点位于分布式存储系统的第一可用区域中。在一些实施方案中,第一数据库节点将数据集存储在第一可用区域中的第一存储缓存中的日志,传输至具有多个日志储存器元件的日志储存器集群,并且该日志存储在日志储存器元件的与缓存集群中的第一可用区域对应的第一可用区域中。
125.在1420处,在所示实施方案中,第一数据库节点将数据集传输至第一可用区域中的第一存储缓存,以用于将数据集存储在该第一可用区域中。
126.在1430处,在所示实施方案中,第一数据库节点将数据集传输至共享对象储存器,以用于将数据集存储在第一可用区域中。
127.在1440处,在所示实施方案中,第二可用区域中的第二数据库节点接收检索数据集的请求。
128.在1450处,在所示实施方案中,第二数据库节点从共享对象储存器检索数据集。在
一些实施方案中,响应于确定第二存储缓存中的数据集的版本丢失、无效或比共享对象储存器中的该数据集的版本旧,第二数据库节点确定从共享对象储存器检索该数据集的版本。
129.在1460处,在所示实施方案中,第二数据库节点将数据集传输至第二可用区域中的第二存储缓存,以用于将数据集存储在第二可用区域中。在一些实施方案中,第二数据库节点向发起请求的实体传输所检索的数据集。
130.在一些实施方案中,第一数据库节点向集群管理器传输元数据,以用于共享对象储存器和第一存储缓存中的数据集的传输及存储。在一些实施方案中,第二数据库节点响应于该请求从集群管理器检索元数据,并且基于该元数据确定从共享对象储存器检索数据集以满足该请求。在一些实施方案中,确定从共享对象储存器检索数据集包括:确定相比较第二存储缓存中的数据集的版本,第一存储缓存和共享对象储存器中的数据集的版本是更新的。
131.在一些实施方案中,第一数据库节点响应于第一可用区域中的第一存储缓存中的数据集的故障,从共享对象储存器检索数据集的版本,并且用所检索的数据集的版本替换第一可用区域中的第一存储缓存中的具有故障的数据集。
132.在一些实施方案中,第三可用区域中的第三数据库节点接收检索数据集的请求,从共享对象储存器检索数据集,并且将所检索的数据集传输至第三可用区域中的第三存储缓存以便存储在第三可用区域中。
133.示例性多租户数据库系统
134.现在转向图15,其示出可实现公开文本的各种技术的示例性多租户数据库系统(mts)1500。在图15中,mts 1500包括数据库平台1510、应用平台1520以及连接至网络1540的网络接口1530。另外如所示的,数据库平台1510包括数据储存器1512以及与数据储存器1512交互的数据库服务器1514a-1514n的集合,并且应用平台1520包括具有相应环境1524的应用服务器1522a-1522n的集合。在所示实施方案中,mts 1500通过网络1540连接至各种用户系统1550a-1550n。出于说明性目的,包括所公开的多租户系统,而并非旨在限制公开文本的范围。在其他实施方案中,在诸如客户端/服务器环境、云计算环境、集群计算机等非多租户环境中,实现公开文本的技术。
135.在各种实施方案中,mts 1500是一起向与mts 1500交互的用户(替代性地被称为“租户”)提供各种服务的一组计算机系统。在一些实施方案中,mts 1500实现客户关系管理(crm)系统,其为租户(例如,公司、政府机构等)提供管理其与客户及潜在客户的关系和交互的机制。例如,mts 1500可使得租户能够存储客户联系信息(例如,客户的网站、电子邮件地址、电话号码和社交媒体数据)、识别销售机会、记录服务问题并管理营销活动。此外,mts 1500可使得这些租户能够识别如何联系客户、客户已购买了什么、客户何时最后购买物品以及客户怎么支付的。为了提供crm系统的服务和/或其他服务,如所示的,mts 1500包括数据库平台1510和应用平台1520。
136.在各种实施方案中,数据库平台1510是实现用于存储并管理mts 1500的数据(包括租户数据)的数据库服务的硬件元件和软件例程的组合。如所示的,数据库平台1510包括数据储存器1512。在各种实施方案中,数据储存器1512包括在网络(例如,存储附加网络(san))上连接在一起并且配置为冗余地存储数据以防止数据丢失的一组存储设备(例如,
固态驱动器、硬盘驱动器等)。在各种实施方案中,数据储存器1512用于实现包括信息集合的数据库(例如,云基服务105),该信息集合组织为允许对信息的访问、存储和操纵的方式。数据储存器1512可实现单个数据库、分布式数据库、分布式数据库集合、具有冗余在线或离线备份或其他冗余的数据库等。作为实现数据库的一部分,数据储存器1512可存储包括具有相应数据有效载荷(例如,数据库表单的字段的值)和元数据(例如,键值、时间戳、与记录相关联的表单的表单标识符、与记录相关联的租户的租户标识符等)的一个或多个数据库记录的文件(例如,数据集204)。
137.在各种实施方案中,数据库记录可对应于表单的行。表单通常包含逻辑上布置为可视模式中的列或字段的一个或多个数据类别。因而,表单的每条记录可包含用于由字段定义的每个类别的数据的实例。例如,数据库可包括描述具有基本联系信息的字段(诸如姓名、地址、电话号码、传真号码等)的客户的表单。因此,用于该表单的记录可包括表单中每个字段(例如,姓名字段的姓名)的值。另一表单可描述购买订单,包括针对诸如客户、产品、销售价格、日期等的信息的字段。在各种实施方案中,提供标准实体表单以供所有租户使用,诸如用于账户、联系人、领导和机会数据的表单,每一个表单包括预定义字段。mts 1500可将一个或多个租户的数据库记录存储在同一表单中
‑‑
即,租户可共享该表单。因此,在各种实施方案中,数据库记录包括指示数据库记录的所有者的租户标识符。因此,一个租户的数据保持安全并与其他租户的数据分开,使得该租户不能访问另一租户的数据,除非这些数据明确共享。
138.在一些实施方案中,存储在数据储存器1512处的数据被组织为日志结构合并树(lsm树)的一部分。lsm树通常包括两个高级部件:内存缓冲和永久性存储。在操作时,数据库服务器1514可在随后将那些记录刷新到持久性储存器(例如,数据储存器1512)之前,初始地将数据库记录写入到本地内存缓冲中。作为刷新数据库记录的一部分,数据库服务器1514可将数据库记录写入lsm树的“顶”级所包括的新文件中。随着时间的推移,随着数据库记录沿着lsm树的级别下移,数据库服务器1514可将数据库记录重新写入至较低级别所包括的新文件中。在各种实现方式中,随着数据库记录老化并且在lsm树中下移,它们移动至数据储存器1512的越来越慢的存储设备(例如,从固态驱动器至硬盘驱动器)。
139.当数据库服务器1514希望访问针对特定键的数据库记录时,数据库服务器1514可针对可能包括该特定键的数据库记录的文件来遍历lsm树的不同级别。如果数据库服务器1514确定文件可包括相关数据库记录,则数据库服务器1514可将该文件从数据储存器1512提取至数据库服务器1514的存储器中。随后,数据库服务器1514可检查针对具有该特定键的数据库记录所获取的文件。在各种实施方案中,数据库记录一旦被写入数据储存器1512就不可变。因此,如果数据库服务器1514希望修改表单的行(其可从访问的数据库记录中识别)的值,则数据库服务器1514将新的数据库记录写出到lsm树的顶层。随着时间的推移,该数据库记录沿着lsm树的级别合并。因而,lsm树可存储用于数据库键的各种数据库记录,其中,针对该键的较旧的数据库记录位于lsm树的较低级别中,接着是较新的数据库记录。
140.在各种实施方案中,数据库服务器1514是能够提供数据库服务(如数据存储、数据检索和/或数据操纵)的硬件元件、软件例程或其组合。数据库服务器1514可对应于数据库节点120。这种数据库服务可由数据库服务器1514提供给mts 1500内的部件(例如,应用服务器1522)和mts 1500外部的部件。作为示例,数据库服务器1514可从应用服务器1522接收
数据库事务请求,该数据库事务请求请求要被写入数据储存器1512或从数据存储器1512读取数据。数据库事务请求可指定sql select命令,以从一个或多个数据库表单中选择一行或多行。行的内容可在数据库记录中定义,并且因此数据库服务器1514可定位并返回与所选择的一个或多个表单行相对应的一个或多个数据库记录。在各种情况下,数据库事务请求可指示数据库服务器1514写入针对lsm树的一个或多个数据库记录
‑‑
数据库服务器1514保持在数据库平台1510上实现的lsm树。在一些实施方案中,数据库服务器1514实现便于针对数据储存器1512存储和检索信息的关系数据库管理系统(rdms)或面向对象的数据库管理系统(oodbms)。在各种情况下,数据库服务器1514可彼此通信以促进事务的处理。例如,数据库服务器1514a可与数据库服务器1514n通信,以确定数据库服务器1514n是否已针对特定键向其内存缓冲中写入数据库记录。
141.在各种实施方案中,应用平台1520是硬件元件和软件例程的组合,其实现并执行crm软件应用以及将相关数据、代码、表格、网页和其他信息提供至用户系统1550和从用户系统1550提供相关数据、代码、表格、网页和其他信息并且经由数据库平台1510存储相关数据、对象、网页内容和其他租户信息。为了促进这些服务,在各种实施方案中,应用平台1520与数据库平台1510通信以存储、访问和操纵数据。在一些实例中,应用平台1520可经由不同的网络连接与数据库平台1510通信。例如,一个应用服务器1522可经由局域网联接,并且另一应用服务器1522可经由直连网络链路联接。传输控制协议和互联网协议(tcp/ip)是用于在应用平台1520与数据库平台1510之间通信的示例性协议,然而,对于本领域技术人员将显而易见的是,取决于所使用的网络互连,可使用其他传输协议。
142.在各种实施方案中,应用服务器1522是能够提供应用平台1520的服务的硬件元件、软件例程或其组合,该服务包括处理从mts 1500的租户接收的请求。在各种实施方案中,应用服务器1522可生成可用于各种目的的环境1524,诸如为开发者提供开发、执行及管理应用(例如,业务逻辑)的功能。数据可从另一环境1524和/或从数据库平台1510传送至环境1524。在一些情况下,环境1524不能访问来自其他环境1524的数据,除非这些数据明确共享。在一些实施方案中,多个环境1524可与单个租户相关联。
143.应用平台1520可为用户系统1550提供对多个不同托管(标准和/或定制)应用的访问,包括crm应用和/或由租户开发的应用。在各种实施方案中,应用平台1520可管理应用的创建、应用的测试、在数据储存器1512处将应用存储至数据库对象中、在环境1524(例如,进程空间的虚拟机)中执行应用或其任意组合。在一些实施方案中,应用平台1520可在任意时间出于任何原因将应用服务器1522从服务器池中添加和移除,对于用户和/或组织,可能不存在对于特定应用服务器1522的服务器亲和力。在一些实施方案中,实现负载平衡功能(例如,f5大-ip负载平衡器)的接口系统(未示出)位于应用服务器1522与用户系统1550之间,并且配置为将请求分配至应用服务器1522。在一些实施方案中,负载平衡器使用最少连接算法来将用户请求路由至应用服务器1522。也可使用负载平衡算法的其他示例,诸如循环法(round robin)和观察响应时间。例如,在某些实施方案中,来自同一用户的三个连续请求可命中三个不同的服务器1522,并且来自不同用户的三个请求可命中同一服务器1522。
144.在一些实施方案中,mts 1500提供安全机制(如加密)以保持每个租户的数据分隔,除非数据是共享的。如果使用多于一个的服务器1514或1522,则它们可位于彼此非常接近的位置(例如,在位于单个建筑物或校园中的服务器农场中),或者它们可分布在彼此远
离的位置处(例如,位于城市a的一个或多个服务器1514和位于城市b的一个或多个服务器1522)。因此,mts 1500可包括本地分布或跨一个或多个地理位置分布的一个或多个逻辑上和/或物理上连接的服务器。
145.一个或多个用户(例如,经由用户系统1550)可经由网络1540与mts 1500交互。用户系统1550可对应于例如,mts 1500的租户、mts 1500的供应商(例如,管理员)或第三方。每个用户系统1550可以是台式个人计算机、工作站、膝上型计算机、pda、蜂窝电话或任何无线接入协议(wap)使能的设备或能够直接或间接地与互联网或其他网络连接对接的任意其他计算设备。用户系统1550可包括配置为通过网络1540与mts 1500对接的专用硬件。用户系统1550可执行对应于mts 1500的图形用户界面(gui)、http客户端(例如,浏览程序,诸如微软的internet explorer
tm
浏览器、网景公司的navigator
tm
浏览器、欧朋浏览器、或在蜂窝电话、pda或其他无线设备等的情况下的wap使能的浏览器)或者这两者,其允许用户系统1550的用户(例如,crm系统的订户)通过网络1540从mts 1500访问、处理并查看其可用的信息和页面。每个用户系统1550可包括一个或多个用户接口设备,例如键盘、鼠标、触摸屏、笔等,以用于结合由mts 1500或其他系统或服务器提供的页面、表格和其他信息,与浏览器在显示监视器屏幕、lcd显示器等上提供的图形用户接口(gui)进行交互。如以上讨论的,所公开的实施方案适于与互联网一起使用,互联网是指网络的特定全球互联网。然而,应理解,可使用其他网络代替互联网,诸如内联网、外联网、虚拟专用网(vpn)、基于非tcp/ip的网络、任意lan或wan等。
146.由于用户系统1550的用户可以是具有不同能力的用户,所以特定用户系统1550的能力可确定为与当前用户相关联的一个或多个权限级别。例如,当销售人员正在使用特定用户系统1550与mts 1500交互时,该用户系统1550可具有指派给该销售人员的能力(例如,用户特权)。但是当管理人员正在使用相同的用户系统1550与mts 1500交互时,用户系统1550可具有指派给该管理人员的能力(例如,管理特权)。在具有分层次角色模型的系统中,处于一个权限级别的用户可访问可由较低权限级别的用户访问的应用、数据和数据库信息,但是可能不能访问可由较高权限级别的用户访问的某些应用、数据库信息和数据。因此,取决于用户的安全等级或权限等级,不同用户可具有关于访问和修改应用和数据库信息的不同能力。还可存在由mts 1500管理的、以租户级别分配的一些数据结构,而其他数据结构以用户级别管理。
147.在一些实施方案中,用户系统1550及其部件是使用应用(如浏览器)可配置的,这些应用包括在一个或多个处理元件上可执行的计算机代码。类似地,在一些实施方案中,mts 1500(和mts的附加实例,其中,存在不只一个实例)及其部件是运营商可配置的,其使用包括在处理元件上可执行的计算机代码的应用(多个应用)。因此,可通过执行存储在非暂时性计算机可读介质上并由处理元件执行的程序指令而执行本文描述的各种操作。程序指令可存储在诸如硬盘的非易失性介质上,或者可存储在众所周知的任意其他易失性或非易失性存储介质或设备中,诸如rom或ram,或者设置在能够启动程序代码的任意介质上,诸如光盘(cd)介质、数字通用盘(dvd)介质、软盘等。此外,整个程序代码或其部分可例如通过互联网从软件源或从众所周知的另一服务器传输和下载,或使用众所周知的任意通信介质和协议(例如,tcp/ip、http、https、以太网等)通过众所周知的任意其他常规网络连接(例如,外联网、vpn、lan等)传输。还将理解,用于实现所公开的实施方案的各方面的计算机代
码可利用可在服务器或服务器系统上执行的任意编程语言来实现,诸如例如c、c+、html、java、javascript或任意其他脚本语言,如vbscript。
148.网络1540可以是lan(局域网)、wan(广域网)、无线网络、点对点网络、星形网络、令牌环网络、枢纽网络或任何其他适当配置。网络的全球互联网络通常被称为首字母为“i”的“internet(互联网)”,是tcp/ip(传输控制协议和互联网协议)网络的一个示例。然而,应理解,所公开的实施方案可利用各种其他类型网络中的任一种。
149.用户系统1550可使用tcp/ip与mts 1500进行通信,并且在更高的网络级,使用其他常见的互联网协议进行通信,如http、ftp、afs、wap等。例如,在使用http的情况下,用户系统1550可包括通常被称为“浏览器”的http客户端,以用于在mts 1500处从http服务器发送和接收http消息。这样的服务器可实现为mts 1500与网络1540之间的唯一网络接口,但是也可使用或替代地使用其他技术。在一些实现方式中,mts 1500与网络1540之间的接口包括负载分担功能,诸如循环http请求分发器,以在多个服务器上平衡负载并均匀地分发传入的http请求。
150.在各种实施方案中,用户系统1550与应用服务器1522通信以请求并更新来自mts 1500的系统级别和租户级别数据,其可能需要对数据储存器1512的一个或多个查询。在一些实施方案中,mts 1500自动生成设计为访问期望信息的一个或多个sql语句(sql查询)。在一些情况下,用户系统1550可生成具有与mts 1500的至少一部分相对应的特定格式的请求。作为示例,用户系统1550可请求使用对象表示法,将数据对象移动至特定环境中,该对象表示法描述指定多个对象的对象关系映射(例如,javascript对象表示法映射)。
151.示例性计算机系统
152.现在转向图16,其描绘了示例性计算机系统1600的框图,计算机系统1600可实现云环境100、云基服务105、数据库节点120、存储缓存130、日志储存器140、共享对象储存器150、集群管理器160、mts 1500和/或用户系统1550。计算机系统1600包括经由互连件1660(例如,系统总线)联接至系统存储器1620和i/o接口1640的处理器子系统1680。i/o接口1640联接至一个或多个i/o设备1650。虽然为了方便起见,在图16中示出单个计算机系统1600,但是系统1600也可实现为一起操作的两个或更多个计算机系统。
153.处理器子系统1680可包括一个或多个处理器或处理单元。在计算机系统1600的各种实施方案中,处理器子系统1680的多个实例可联接至互连件1660。在各种实施方案中,处理器子系统1680(或1680内的每个处理器单元)可包含缓存或其他形式的板上存储器。
154.系统存储器1620可用于存储由处理器子系统1680可执行的程序指令,以使系统1600执行本文描述的各种操作。系统存储器1620可使用不同物理存储介质来实现,诸如硬盘存储、软盘存储、可移动盘存储、闪存、随机存取存储器(ram-sram、edo ram、sdram、ddr sdram、rambus ram等)、只读存储器(prom、eeprom等)等。计算机系统1600中的存储器不限于诸如存储器1620的主储存器。相反,计算机系统1600还可包括其他形式的储存器,诸如处理器子系统1680中的缓存存储器和i/o设备1650上的辅储存器(例如,硬盘驱动器、存储阵列等)。在一些实施方案中,这些其他形式的储存器还可存储由处理器子系统1680可执行的程序指令。
155.根据各种实施方案,i/o接口1640可以是配置为联接至其他设备并与其他设备通信的各种类型接口中的任一种。在一个实施方案中,i/o接口1640是从前侧至一个或多个后
侧总线的桥接芯片(例如,南桥(southbridge))。i/o接口1640可经由一个或多个相应总线或其他接口联接至一个或多个i/o设备1650。i/o设备1650的示例包括存储设备(硬盘驱动器、光盘驱动器、可移动闪存驱动器、存储阵列、san或其相关联控制器)、网络接口设备(例如,至局域网或广域网)或其他设备(例如,图形、用户接口设备等)。在一个实施方案中,计算机系统1600经由网络接口设备1650(例如,配置为通过wi-fi、蓝牙、以太网等通信)联接至网络。
156.公开文本包括对“实施方案”的引用,这些实施方案是所公开的概念的非限制性实现方式。对“一实施方案”、“一个实施方案”、“具体实施方案”、“一些实施方案”、“各种实施方案”等的引用不一定是指相同的实施方案。设想了大量可能的实施方案,包括详细描述的具体实施方案以及落入公开文本的精神或范围内的修改或替换。并非所有实施方案将必然展示本文描述的潜在优点中的任一优点或所有优点。
157.公开文本包括对一“实施方案”或“实施方案”的组的引用(例如,“一些实施方案”或“各种实施方案”)。实施方案是所公开的概念的不同实现方式或实例。对“一实施方案”、“一个实施方案”、“具体实施方案”等的引用不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些实施方案以及落入公开文本的精神或范围内的修改或替换。
158.公开文本可讨论可能源自所公开实施方案的潜在优点。并非这些实施方案的所有实现方式将必然展示潜在优点中的任一优点或所有优点。对于特定实现方式,优点是否实现取决于许多因素,这些因素中的一些因素在公开文本的范围之外。事实上,为何落入权利要求范围内的实现方式可能不能展现任何公开优点中的一些优点或全部优点,存在许多原因。例如,特定实现方式可包括公开文本范围之外的其他部件,其结合所公开的实施方案中的一个实施方案否定或减小了所公开优点中的一个或多个优点。此外,特定实现方式(例如,实现技术或工具)的次优设计执行也可否定或减小所公开的优点。即使假设熟练的实现方式,优点的实现仍然可取决于其他因素,诸如部署该实现方式的环境状况。例如,提供给特定实现方式的输入可防止公开文本解决的一个或多个问题在特定场合出现,其结果是可能不能实现其方案的益处。鉴于公开文本外部的可能因素的存在,其明确意图是本文描述的任何潜在优点不应解释为证明侵权所必须满足的权利要求限制。相反,此类潜在优点的识别旨在说明受益于公开文本的设计者可获得的改进类型(多个类型)。以许可方式描述这些优点(例如,陈述特定优点“可能出现”)并非旨在传达这些优点事实上是否可实现的疑问,而是认识到这些优点的实现通常取决于附加因素的技术现实。
159.除非另外说明,否则实施方案是非限制性的。即,所公开的实施方案并非旨在限制基于公开文本撰写的权利要求的范围,即使相对于特定特征仅描述单个示例。所公开的实施方案旨在是说明性的而非限制性的,在公开文本中没有任何相反的陈述。因此,本技术旨在许可覆盖所公开实施方案的权利要求以及对于受益于公开文本的本领域技术人员将显而易见的替换、变型和等同物。
160.例如,本技术中的特征可以以任意适合方式组合。因此,在对本技术(或要求其优先权的申请)进行起诉期间,可以针对任何这样的特征组合提出新的权利要求。具体地,参考所附权利要求,在适当的情况下,来自从属权利要求的特征可与其他从属权利要求的特征结合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,来自相应独
立权利要求的特征可组合。
161.因此,虽然所附从属权利要求可撰写为使得各自从属于单一的其他权利要求,但还设想了另外的从属关系。设想了与公开文本一致的从属权利要求中的特征的任意组合,并且可在本技术或另一申请中要求保护这些组合。简而言之,组合不限于在所附权利要求中具体列举的那些。
162.在适当情况下,还设想以一种格式或法定类型(例如,装置)撰写的权利要求旨在支持另一种格式或法定类型(例如,方法)的相应权利要求。
163.因为公开文本是法律文件,所以各种术语和短语可进行行政和司法解释。在此给出公告:以下段落以及贯穿公开文本提供的定义用于确定如何解释基于公开文本撰写的权利要求。
164.除非上下文另外明确规定,否则对项的单数形式(即,前面带着“一种”、“一个”、或“该”的名词或名词短语)的引用旨在指“一个或多个”。因此,没有附带上下文的情况下,权利要求中对“一项”的引用不排除该项的附加实例。“多个”项是指两个或更多个项的集合。
165.本文使用的词语“可”在允许意义上(即,有可能、能够)使用,而非在强制意义上(即,必须)使用。
166.术语“包括”和“包含”及其形式是开放式的,并且意指“包括但不限于”。
167.在公开文本中,当相对于选项列表使用术语“或”时,除非上下文另外提供,否则通常将理解为以包含意义使用。因此,“x或y”的陈述相当于“x或y,或两者”,并且因此涵盖:1)x而非y,2)y而非x,以及3)x和y两者。另一方面,诸如“x或y,但不是两者”的短语清楚地表明“或”是以排他意义使用的。
[0168]“w、x、y或z或其任何组合”或“...,w、x、y和z中的至少一个”的陈述旨在覆盖涉及单个元素直至该集合中的所有数量的元素的所有可能性。例如,给定集合[w,x,y,z],这些措辞覆盖集合中的任意单个元素(例如,w而非x、y或z)、任意两个元素(例如,w和x而非y或z)、任意三个元素(例如,w、x和y而非z)以及所有四个元素。因此,短语“...,w、x、y和z中的至少一个”指集合[w,x,y,z]的至少一个元素,从而覆盖该元素列表中的所有可能组合。该短语不应解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例以及z的至少一个实例。
[0169]
在公开文本中,各种“标记”可位于名词或名词短语之前。除非上下文另外提供,否则用于特征的不同标签(例如,“第一数据库节点”、“第二数据库节点”、“特定数据库节点”、“给定数据库节点”等)是指特征的不同实例。此外,除非另外指明,当应用至特征时,标签“第一”、“第二”和“第三”不暗示任意类型的排序(例如,空间、时间、逻辑等)。
[0170]
短语“基于”或用于描述影响决定的一个或多个因素。该术语不排除附加因素可能影响决定的可能性。即,决定可仅基于指定因素或基于指定因素以及其他未指定因素。考虑短语“基于b确定a”。该短语指定b是用于确定a或影响a的决定的因素。该短语不排除a的决定还可基于一些其他因素,例如,c。该短语还旨在涵盖仅基于b确定a的实施方案。如本文使用的,短语“基于”与短语“至少部分基于”同义。
[0171]
短语“响应于”和“对...做出响应”描述触发效果的一个或多个因素。该短语不排除附加因素可影响或以其他方式触发效果的可能性,其与指定因素联合或独立于指定因素。即,效果可仅响应于那些因素,或者可响应于指定因素以及其他未指定因素。考虑短语“响应于b执行a”。该短语指定b是触发a的性能或触发a的特定结果的因素。该短语不排除还可响应于某一其他因素例如c,执行a。该短语也不排除可联合地响应于b和c,执行a。该短语还旨在覆盖仅响应于b来执行a的实施方案。如本文使用的,短语“对...做出响应”与短语“至少部分对...做出响应”同义。类似地,短语“响应于”与短语“至少部分响应于”同义。
[0172]
在公开文本内,不同实体(其可不同地称为“单元”、“节点”、其他部件等)可描述或要求为“配置为”执行一个或多个任务或操作。本文使用公式—配置为[执行一个或多个任务]的实体来指代结构(即,实物)。更具体地,该公式用于指示该结构布置为在操作期间执行一个或多个任务。结构可被称为“配置为”执行一些任务,即使该结构当前未被操作。因此,描述为或叙述为“配置为”执行一些任务的实体是指实物,如设备、节点、具有处理器单元和存储可执行以实现任务的程序指令的存储器的系统等。本文中,该短语不用于指无形的东西。
[0173]
在一些情况下,各种单元/节点/部件在本文可描述为执行一组任务或操作。应理解,那些实体“配置为”执行那些任务/操作,即使没有具体指出。
[0174]
术语“配置为”并非旨在意指“可配置为”。例如,未编程的fpga将不被认为是“配置为”执行特定功能。然而,该未编程的fpga可以是“可配置为”执行该功能。在适当编程之后,然后,fpga可被称为“配置为”执行特定功能。
[0175]
出于基于公开文本的美国专利申请的目的,在权利要求中叙述“配置为”执行一个或多个任务的结构明确地旨在不援引美国法典第35章第112(f)条(35u.s.c.
§
112(f)),以用于该权利要求元素。如果申请人希望在基于公开文本的美国专利申请的起诉期间援引第112(f)条,其将使用用于[执行功能]的“手段”构造来叙述权利要求要素。
技术特征:
1.一种方法,包括:由分布式存储系统的数据库节点从多个实体中的第一实体接收存储数据集的请求;由所述数据库节点获得与所述第一实体相关联的元数据,其中所述元数据指定所述多个实体的多个分类中的一个分类;由所述数据库节点将所述数据集提供至多个缓存中的一个或多个缓存以便存储,其中所述多个缓存被配置为基于在与所述第一实体相关联的元数据中识别的所述第一实体的分类而存储所述数据集,并且其中所述多个缓存位于两个或更多个可用区域中;和由所述数据库节点将所述数据集存储在联接至所述数据库节点的共享对象储存器中。2.根据权利要求1所述的方法,其中所述获得通过以下执行:从所述分布式存储系统的集群管理器接收与所述多个实体中的不同实体相关联的元数据,其中所述元数据包括由所述集群管理器基于与不同数据集相关联的实体的分类针对所述不同数据集而保持的标签。3.根据权利要求2所述的方法,其中所述数据集的标签指示存储所述数据集的副本的多个缓存的相应可用区域。4.根据权利要求1所述的方法,其中所述多个缓存还被配置为:基于在与所述第一实体相关联的元数据中指示的所述第一实体的分类和在与第二实体相关联的元数据中指示的所述第二实体的分类,为所述多个实体中的所述第一实体分配比所述第二实体更大的缓存空间量。5.根据权利要求1所述的方法,其中所述多个缓存还被配置为:响应于系统故障:基于所述第一实体的分类,确定将所述第一实体的数据从所述共享对象储存器重新填充入所述多个缓存中的一个或多个缓存;和基于第二实体的分类,确定不将所述多个实体中的第二实体的数据重新填充入所述多个缓存中的一个或多个缓存,其中所述第一实体的数据的重新填充是在没有被缓存未命中引发的情况下执行的。6.根据权利要求1所述的方法,其中所述多个缓存还被配置为:基于所述第一实体的分类,跨不同可用区域存储所述第一实体的数据的多个副本;和基于所述多个实体中的第二实体的分类,存储所述第二实体的数据的单个副本。7.根据权利要求1所述的方法,其中所述多个缓存还被配置为:基于第二实体的分类,在执行针对所述第一实体存储的数据的缓存回收之前,执行针对所述第二实体存储的数据的缓存回收。8.根据权利要求1所述的方法,还包括:由所述数据库节点从所述多个实体中的第二实体接收针对第二数据集的请求;由所述数据库节点基于与所述第二实体相关联的元数据而识别存储所述第二数据集的所述多个缓存中的第一缓存,其中所述第一缓存位于第一可用区域中;和由所述数据库节点响应针对所述第二数据集的所述请求,其中所述响应是基于从所述第一缓存检索所述第二数据集而执行的。9.根据权利要求8所述的方法,还包括:由所述数据库节点确定在所述第一缓存中已经发生缓存未命中;和
由所述数据库节点基于与所述缓存未命中相关联的实体的分类,确定是否使用来自所述共享对象储存器的数据而针对来自所述第一缓存的数据未命中提供查询服务。10.根据权利要求1所述的方法,还包括:由所述数据库节点从所述多个实体中的第二实体接收针对第二数据集的请求;和由所述数据库节点从所述共享对象储存器检索所述第二数据集,其中基于在与所述第二实体相关联的元数据中指示的分类而执行所述检索。11.一种分布式存储系统,包括:数据集群,其包括分隔为多个可用区域的多个存储缓存;共享对象储存器,其联接至所述数据集群;和多个数据库节点,其位于所述多个可用区域中;其中第一可用区域中的第一数据库节点被配置为:从多个实体中的第一实体接收针对第一数据集的请求;获得与所述第一实体相关联的元数据,其中所述元数据指定所述多个实体的多个分类中的一个分类;与所述多个存储缓存中的第一缓存通信以便检索所述第一数据集,其中所述第一缓存位于所述第一可用区域中,并且其中所述多个存储缓存被配置为基于所述多个分类而存储所述多个实体的数据;基于所述通信,识别已经发生缓存未命中;和基于所述缓存未命中和在与所述第一实体相关联的所述元数据中指定的所述第一实体的分类,确定是否使用所述共享对象储存器或位于第二可用区域中的第二缓存而响应针对所述第一数据集的所述请求。12.根据权利要求11所述的分布式存储系统,其中从所述分布式存储系统的集群管理器获得与所述第一实体相关联的元数据,其中由所述集群管理器针对所述多个实体中的不同实体保持的元数据指示相应可用区域,所述相应可用区域存储所述多个实体中的不同实体的数据。13.根据权利要求11所述的分布式存储系统,其中所述第一数据库节点还被配置为:从所述第一实体接收存储第二数据集的请求;将所述第二数据集提供至多个缓存中的一个或多个以便存储;和将所述第二数据集存储在所述共享对象储存器中。14.根据权利要求13所述的分布式存储系统,其中将所述第二数据集提供至所述多个缓存中的所述一个或多个以便存储包括:提供指定将所述第二数据集的多个副本存储在位于不同可用区域的多个缓存中的指令,其中基于针对所述第一实体的分类提供所述指令。15.根据权利要求11所述的分布式存储系统,其中所述多个存储缓存还被配置为:响应于系统故障:基于所述第一实体的分类,确定使用从所述共享对象储存器检索的数据,将所述第一实体的数据重新填充入所述多个缓存中的一个或多个;和基于第二实体的分类,确定不将所述第二实体的数据重新填充入所述多个存储缓存中的一个或多个,其中所述第一实体的数据的重新填充是在没有被缓存未命中引发的情况下执行的。
16.一种其上存储有指令的非暂时性计算机可读介质,所述指令能够使分布式存储系统实施包括以下的操作:从多个实体中的第一实体接收存储数据集的请求;获得与所述第一实体相关联的元数据,其中所述元数据指定所述多个实体的多个分类中的一个分类;将所述数据集提供至多个缓存中的一个或多个以便存储,其中所述多个缓存被配置为基于在所述元数据中识别的所述第一实体的分类而存储所述数据集,并且其中所述多个缓存被分隔为多个可用区域;和将所述数据集存储在共享对象储存器中。17.根据权利要求16所述的非暂时性计算机可读介质,其中所述元数据还为所述数据集指定标签,所述标签指示:存储所述数据集的副本的多个缓存;和存储所述数据集的副本的所述多个缓存的相应可用区域。18.根据权利要求16所述的非暂时性计算机可读介质,其中所述操作包括所述多个缓存:基于所述第一实体的分类,相对于所述多个实体中的第二实体的数据的存储,优先存储所述第一实体的数据。19.根据权利要求16所述的非暂时性计算机可读介质,其中第一可用区域包括复制第二可用区域中的至少一个其他缓存的数据的第一缓存。20.根据权利要求16所述的非暂时性计算机可读介质,其中所述操作还包括:从所述多个实体中的第二实体接收针对第二数据集的请求;基于与所述第二实体相关联的元数据而识别存储所述第二数据集的所述多个缓存中的第一缓存,其中所述第一缓存位于第一可用区域中;和响应针对所述第二数据集的所述请求,其中所述响应是基于从所述第一缓存检索所述第二数据集而执行的。
技术总结
公开的技术涉及根据各种实体的分类,来管理这些实体的数据的分布式存储。分布式存储系统的数据库节点可从多个实体中的第一实体接收存储数据集的请求。数据库节点可进一步获得与第一实体相关联的元数据,其中,元数据指定这些实体的多个分类中的一个分类。数据库节点可将数据集提供至多个缓存中的一个或多个缓存以便存储。缓存可位于两个或更多个可用区域中,并配置为基于在与第一实体相关联的元数据中识别的第一实体的分类而存储该数据集。数据库节点还可将数据集存储在联接至数据库节点的共享对象储存器中。的共享对象储存器中。的共享对象储存器中。
技术研发人员:尤尤利 N
受保护的技术使用者:易享信息技术有限公司
技术研发日:2022.01.10
技术公布日:2023/9/9
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/