为多承租者数据库提供一致的承租者体验的制作方法

文档序号:10517849阅读:306来源:国知局
为多承租者数据库提供一致的承租者体验的制作方法
【专利摘要】本发明涉及用于在多承租者数据库处提供一致的承租者体验的方法、系统和计算机程序产品。本发明的各实施例包括促成数据导入而无需关于承租者的任何分布逻辑的导入服务。承租者(呼叫者)按本质上任何次序提供数据。导入服务理解数据跨多个数据库的分布,并为任何给定导入数据片段确定该导入数据要被插入什么数据库。因此,承租者(呼叫者)被从必须知道数据跨一组(可能成百或上千)的数据库如何被分布中解脱出来。导入服务可优化导入过程以跨动态分布式数据库系统提供负载平衡和公平性。例如,该导入服务可确保一个承租者的大量导入不会剥脱另一承租者对合适资源的导入。
【专利说明】为多承租者数据库提供一致的承租者体验
[0001 ]
[0002]1.背景和相关技术
[0003]计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前人工执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其它电子设备以形成计算机系统及其它电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行被分布在多个不同的计算机系统和/或多个不同的计算环境中。
[0004]在数据库环境中,用户可使用工具和算法来将数据加载到数据库中。这些工具通常在某时刻仅在单个表格上(或在最佳数据库处)工作。然而,随着数据库变得更大,有需要跨许多数据库拆分数据以处理该规模。当数据被拆分时,用户被迫执行各种人工动作和/或写入理解数据分布的客户端代码。客户端代码可随后被执行以导入数据。然而,每当数据被拆分(或随后被合并)时,客户端代码必须被重新写入并被编译以针对新分布进行调整。由此,针对经改变的分布的调整可导致可观的用户工作。
[0005]替换地,有可能写入代码,使得数据分布可通过配置来改变。然而,更新系统要花费配置改变和停机时间。
[0006]在许多组织中,导入数据并拆分数据库的责任可属于各不同的个人。例如,数据库管理员可负责基于可用资源来维护合适的数据库分布。另一方面,应用开发者可负责维护将数据导入数据库中的应用。数据库管理员和应用开发者之间的通信的缺少可能导致无法工作的应用。例如,如果数据库管理员没能传达拆分数据库之后的新的数据库分布,则数据导入应用可能停止工作。即使在应用开发者意识到该拆分时,应用开发者仍可能花费一定时间量来修改数据导入应用以供与新数据分布联用。
[0007]在其它环境(诸如例如多承租者、多数据库环境)中,数据库管理员可能不具有对数据的控制。例如,云数据库环境可维护每个承租者的多个数据库,并且可服务于许多承租者。在云数据库环境中,云环境内的模块可按需自动地拆分和/或合并数据库。拆分和/或合并数据库可基于顾客的需求、云环境内的可用资源、其它顾客的需求等等。由此,应用开发者可能没有任何方式知道相应数据的数据分布。此外,在云环境中,数据分布可按一定规律改变。由此,当数据库在云环境中被操作时,应用开发者维护数据导入应用可能尤其困难。
[0008]此外,在将数据导入多承租者、多数据库环境中时,导入模块可被配置成在移至导入另一承租者的数据之前,先导入一个承租者的所有数据。由此,具有较大数据需求的承租者可消耗大量的资源达延长的时间段。单个承租者对大量资源的消耗对其它承租者以及管理多承租者、多数据库的系统是不利的。例如,可防止其它承租者导入其数据,直到对另一承租者的较大数据量的导入完成。当大量数据被导入多承租者、多数据库环境内的指定的数据库时,与指定数据库相关联的资源也可变得过载。承租者没有真正的动机去限制导入数据尺寸,因为它们仅期望使其自己的数据被导入。
[0009]简要概述
[0010]本发明涉及用于在多承租者数据库处提供一致承租者体验的方法、系统和计算机程序产品。第一数据被访问。第一数据与动态分布式数据库系统的承租者相关联。第一数据具有多个数据部分,每一数据部分具有在该承租者的数据库的一个或多个范围内的值(例如,主键值)。此多个数据部分中的一个或多个数据部分被导入到动态分布式数据库系统中。
[0011]对于此一个或多个数据部分中的每一数据部分,导入包括参考该动态分布式数据库系统的全局分区图以调度该数据部分以供插入到该承租者的合适数据库中。该承租者的合适数据库位于该动态分布式数据库系统的某节点处。
[0012]第二数据被访问。第二数据与动态分布式数据库系统的第二承租者相关联。第二数据具有在第二承租者的数据库的一个或多个范围内的值(例如,主键值)。
[0013]在访问第二数据之后并在完成对此多个数据部分中的所有数据部分的导入之前,对第一数据的导入被挂起或扼流。因此,此多个数据部分中的一个或多个数据部分保持将被处理。
[0014]在挂起或扼流第一数据到动态分布式数据库系统的导入之后,第二数据的一部分被导入动态分布式数据库系统。导入第二数据的该部分包括参考全局分区图以调度第二数据的该部分以供插入到第二承租者的合适数据库中。第二承租者的合适数据库位于该动态分布式数据库系统的某节点处。
[0015]提供本概述以便以简化的形式介绍将在以下的详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。
[0016]本发明的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些以及其它特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本发明的实践而获知。
[0017]附图简述
[0018]为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图只描绘了本发明的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本发明,在附图中:
[0019]图1A示出促成在各多承租者数据库处提供一致的承租者体验的示例计算机体系结构。
[0020]图1B示出向动态分布式数据库承租者提供的逻辑数据库视图的示例。
[0021]图2示出用于在各多承租者数据库处提供一致的承租者体验的示例方法的流程图。
[0022]图3示出促成在各多承租者数据库处提供一致的承租者体验的另一示例计算机架构。
[0023]图4A和4B示出用于将数据导入动态分布式数据库的示例方法的更详细的流程图。
[0024]详细描述
[0025]本发明涉及用于在多承租者数据库处提供一致的承租者体验的方法、系统和计算机程序产品。第一数据被访问。第一数据与动态分布式数据库系统的承租者相关联。第一数据具有多个数据部分,每一数据部分具有在该承租者的数据库的一个或多个范围内的值(例如,主键值)。此多个数据部分中的一个或多个数据部分被导入到动态分布式数据库系统中。
[0026]对于此一个或多个数据部分中的每一数据部分,导入包括参考动态分布式数据库系统的全局分区图以调度该数据部分以供插入到该承租者的合适数据库中。该承租者的合适数据库位于该动态分布式数据库系统的某节点处。
[0027]第二数据被访问。第二数据与动态分布式数据库系统的第二承租者相关联。第二数据具有在第二承租者的数据库的一个或多个范围内的值(例如,主键值)。
[0028]在访问第二数据并完成对多个数据部分中的所有数据部分的导入之前,对第一数据的导入被挂起或扼流。因此,此多个数据部分中的一个或多个数据部分保持将被处理。
[0029]在挂起或扼流第一数据到动态分布式数据库系统的导入之后,第二数据的一部分被导入动态分布式数据库系统。导入第二数据的该部分包括参考全局分区图以调度第二数据的该部分以供插入到第二承租者的合适数据库中。第二承租者的合适数据库位于该动态分布式数据库系统的某节点处。
[0030]本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本发明范围内的各实施例也包括用于实现或存储计算机可执行指令和/或数据结构的实体及其它计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质(设备)和传输介质。
[0031]计算机存储介质(设备)包括RAM、R0M、EEPR0M、CD_R0M、固态驱动器(“SSD”)(如基于RAM)、闪存、相变存储器(“PCM”)、其它类型的存储器、其它光盘存储、磁盘存储或其它磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其它介质。
[0032]“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可以包括可以用来携带所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并可以被通用或专用计算机访问的网络和/或数据链路。上述的组合应当也被包括在计算机可读介质的范围内。
[0033]此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用(甚至主要利用)传输介质的计算机系统组件中。
[0034]计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
[0035]本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
[0036]本发明的各实施例还可以在云计算环境中实现。在该描述和下面的权利要求书中,“云计算”被定义为用于允许对可配置计算资源的共享池的按需网络访问的模型。例如,云计算机可被部署于市场以提供对可配置计算资源的共享池的普遍存在且方便的按需访问。可配置计算资源的共享池可经由虚拟化而被快速地供应,并可利用低管理努力或服务提供商交互来释放,并随后相应被缩放。
[0037]云计算模型可由各种特性组成,诸如举例来说按需自服务、广泛网络访问、资源池、快速灵活性、测定的服务等。云计算模型还可展现各种服务模型,诸如例如软件即服务(“SaaS”)、平台即服务(“PaaS”)以及基础结构即服务(“IaaS”)。云计算模型还可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。在该描述和权利要求书中,“云计算环境”是其中采用了云计算的环境。
[0038]本发明的各实施例包括促成数据导入而无需关于承租者的任何分布逻辑的导入服务。承租者(呼叫者)按本质上任何次序提供数据。导入服务理解数据跨多个数据库的分布,并为任何给定导入数据片段确定该导入数据要被插入什么数据库。因此,承租者(呼叫者)不再需要非得知道数据如何跨一组(可能成百或上千的)数据库分布。
[0039]导入服务可将以给定数据库为目的地的数据集合分组在一起,并可使用批处理操作来增加效率。导入服务可理解(例如,作为在线拆分操作和/或合并操作的结果)数据被跨数据库分派的方式、数据库区域如何被放置在各单个节点(机器)上、数据库在各节点之间的移动(例如,用于负载平衡或保养)以及什么其它操作正在该导入期间发生。导入服务可使用该信息来增加导入效率以及增加对故障的复原性。
[0040]导入服务可知晓多个承租者架构,并可优化导入过程以跨动态分布式数据库系统(诸如云数据库系统)提供负载平衡和公平性。导入服务可确保一个承租者的大量导入不会剥脱另一承租者对合适资源的导入。例如,当一个承租者的导入被检测为消耗可能使一个或多个其它承租者的导入体验降级的资源量时,这个承租者的导入被挂起(停止)或扼流(减速)。由此,先前为该导入分派的资源可被重新分派,以供在导入一个或多个其它承租者的数据时使用。当资源消耗模式随后改变时或者通过时间的推移,该导入可被恢复或者扼流可被移除。
[0041]图1A示出了促成在多承租者数据库处提供一致的承租者体验的示例计算机体系结构100。参考图1,计算机体系结构100包括数据库承租者101和动态分布式数据库系统106。数据库承租者101和动态分布式数据库系统106中的每一个可通过诸如例如局域网(“LAN”)、广域网(“WAN”)或甚至因特网之类的网络(或作为该网络的一部分)彼此连接。因此,数据库承租者101和动态分布式数据库系统106中的每一者以及任何其它连接的计算机系统及其组件都可以创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其它更高层协议,诸如传输控制协议(“TCP” )、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等,或者使用其它非数据报协议)。
[0042]如所描绘的,动态分布式数据库系统106(例如,云数据库系统)包括虚拟化层107、维护模块111、监视和通知模块112和机器114。数据库承租者包括承租者102和103(垂直的省略号指示在承租者102和103之前、之间和之后可存在其它承租者)。承租者102和103中的每一者可将数据存储在动态分布式数据库系统106所管理的一个或多个数据库中。一般来说,虚拟化层107在动态分布式数据库系统106内从数据库承租者中抽象出底层硬件、数据布局、数据存储位置、数据库位置、数据移动、数据库移动等。由此,实质上向每一数据库承租者提供了专用数据库的逻辑视图。
[0043]暂时转向图1B,承租者102和103可分别提供有数据库192和193的逻辑视图(即使每一承租者102和103的数据可被存储在动态分布式数据库系统106的不同数据库和节点上,并在这些不同数据库和节点之间移动)。数据库承租者可与提供的逻辑视图交互,就好像与专用数据库交互一样。例如,承租者102和103可分别与数据库192和193的逻辑视图交互,就好像与各个专用数据库交互一样。即使在数十个、数百个或甚至数千个其它承租者也可通过其它抽象出的逻辑视图与动态分布式数据库系统106交互以存储和访问数据时,承租者102和103也可这么做。
[0044]转至图1A,机器114包括节点114A、114B等(垂直的虚线指示在节点114A和114B之前、之间和之后可存在其它承租者)。每一机器可包括数据库服务器(例如,SQL服务器)。例如,节点114A、114B等分别包括数据库服务器116A、116B等。每一数据库服务器可维护用于存储承租者数据的一个或多个数据库。例如,数据库服务器116A包括数据库116A1、116A2、116A3等。数据库服务器116B包括数据库116B1、116B2、116B3。数据库服务器可维护实际上任何数目的数据库,并且不同数据库服务器所维护的数据库的数目可改变。此外,多个不同承租者的数据范围可被存储在一数据库处。
[0045]维护模块丨丨I向机器114发出改变底层硬件、改变数据布局、改变数据存储位置、改变数据库位置、移动数据、移动数据库等的指令。例如,维护模块111可发出将承租者的数据范围从一个数据库移动到另一数据库的指令,可发出将承租者的各数据范围合并在一数据库处的指令,可发出将承租者的数据范围在多个数据库之间拆分的指令,可发出将数据库从一个节点移动到另一节点的指令等等。维护模块111可按自动化方式发出指令和/或可响应于来自管理员的指令而发出指令。
[0046]维护模块111可不时地或以指定间隔监视包括各节点的机器114处的资源使用,以向其发出指令以平衡资源使用。例如,如果一个节点正经历较高的资源使用,则该节点处的数据范围和/或数据库的一部分可被移动到具有较低资源使用的另一节点。如果维护模块111检测到节点或数据库故障,则维护模块111可发出将合适的数据范围和/或数据库移动到其它节点的指令。维护模块111还可发出锁定合适的数据范围和/或数据库使得进一步的数据不被存储在故障组件处的指令。
[0047]管理员也可向维护模块111发出命令。例如,管理员可发出卸下指定节点的命令。作为响应,维护模块111可发出将该节点处的数据库移动到一个或多个其它节点处的指令。同样,管理员可将新增加的节点标记为可用。作为响应,维护模块111可发出将数据库从一个或多个其它节点移动到新近可用的节点处的指令。
[0048]因此,机器114的底层硬件、数据布局、数据存储位置、数据库位置等可随时间改变。一般来说,分区图131将数据范围映射到数据库并将数据库映射到节点。例如,如所描绘的,分区图131包括数据范围图132和数据库图133。
[0049]在每一承租者的基础上,数据范围图132中的数据元素将承租者的数据范围映射到相应的数据库。例如,数据范围图132包括承租者102、103等的数据范围到数据库映射。数据库图133将数据库映射到相应的节点。
[0050]—般来说,监视器和通知模块112被配置成随着机器114处的改变被检测到而更新分区图131。监视器和通知模块112可不时地或以指定间隔轮询机器114以确定配置。在一些实施例中,机器114的组件在改变发生时通知监视器和通知模块112。例如,节点可在有数据库被添加到该节点或从该节点处被移除时通知监视器和通知模块。类似地,数据库服务器可在数据范围被添加到该数据库服务器所维护的数据库或从该数据库服务器所维护的数据库中被移除时通知监视器和通知模块112。
[0051]响应于检测到的改变和/或通知,监视器和通知模块112可按需更新分区图131以指示机器114处的更新近的配置。监视器和通知模块112可添加、删除、改变、修改等数据范围图132和/或数据库图133中的映射。例如,在数据范围被拆分时,监视器和通知模块112可删除一个数据范围到数据库映射,并添加两个新的数据范围到数据库映射。另一方面,在两个数据范围被合并时,监视器和通知模块112可删除两个数据范围到数据库映射,并添加一个新的数据范围到数据库映射。监视器和通知模块112还可随着数据库在各节点之间的移动被检测到而移动、添加和修改数据库到节点映射。
[0052]虚拟化层107进一步包括资源管理模块181和分配模块109。分配模块109被配置成接收来自承租者的导入数据,并将导入数据的各部分(例如,各行)移动到合适的队列中以供存储在数据库中。基于来自承租者的一数据部分(例如,一行)中的数据值(例如,主键值),分配模块109可参考针对该承租者的数据范围图132。分配模块109可从数据范围图132中确定什么数据范围包括数据值。分配模块109可随后参考针对哪个数据范围的相应数据库。分配模块109可随后将该导入数据部分移动到该节点的主存该相应数据库的队列中。
[0053]资源管理模块181被配置成监视动态分布式数据库106的承租者的数据导入的资源消耗模式。监视数据导入的资源消耗模式可包括针对每一承租者监视正为该承租者执行的任何数据导入的聚集资源消耗。由此,资源管理器模块181可确定何时针对承租者的导入消耗的资源量可能使其它承租者的数据导入体验降级。例如,资源管理器模块181可确定何时特定承租者霸占带宽,使得其它承租者的数据导入是慢的或不可能的。
[0054]资源管理模块181可包括用于计算动态分布式数据库106的各承租者的聚集资源消耗的算法。资源管理模块181可包括用于检测一个承租者的资源消耗何时可能使一个或多个其它承租者的导入体验降级的算法。资源消耗阈值可被用来检测一个承租者的资源消耗何时可能使一个或多个其它承租者的导入体验降级。资源管理模块181还可包括定义在一个承租者的资源消耗可能使一个或多个其它承租者的导入体验降级时可采取的动作的算法。
[0055]在一些实施例中,资源管理模块181的算法由导入策略118来补充或甚至代替。导入策略118可包括用于计算聚集资源消耗的规则、用于检测一个承租者的资源消耗何时可能使一个或多个其它承租者的导入体验降级的规则、以及定义在一个承租者的资源消耗可能使一个或多个其它承租者的导入体验降级时可采取的动作的规则。
[0056]定义的动作可包括在时间上挂起或扼流对第一承租者的数据的导入,直到一个或多个其它承租者的至少一些数据被成功导入。对第一承租者的数据的导入可随后被恢复。例如,在一些实施例中,资源管理模块181挂起对第一承租者的数据导入,使得资源被空出来以供在导入其它承租者的数据时使用。空出来的资源可随后被用于导入其它承租者的数据。当其它承租者的数据导入完成、被检测为使其它承租者的导入体验降级或通过时间的推移,第一承租者的数据的导入可被恢复。
[0057]由此,定义的动作可包括挂起或扼流承租者的数据,直到检测到某一其它承租者消耗的资源可能使一个或多个其它承租者的导入体验降级。承租者的数据的导入可随后被恢复。例如,在一些实施例中,资源管理模块181挂起或扼流第一承租者的数据导入,使得资源被空出来以供在导入其它承租者的数据时使用。空出来的资源可随后被用于导入其它承租者的数据。在检测到第二承租者的资源消耗可能使一个或多个其它承租者的导入体验降级时,对第一承租者的数据的导入可被恢复。对一个或多个其它承租者的数据的导入可能也继续。
[0058]由此,在一些实施例中,资源管理模块181平衡跨多个承租者的资源分配以向多个承租者中的每一者提供一致的导入体验。为了提供一致的导入体验,资源管理模块181可基于计算出的此多个承租者中的每一者处的资源消耗而不时地挂起/扼流以及恢复/解除扼流不同承租者的数据导入。例如,资源管理模块181可检测到第一承租者正在消耗可能使一个或多个其它承租者的导入体验降级的量的资源。同时,资源管理模块181还可检测到第二承租者正在消耗可能使一个或多个其它承租者的导入体验降级的量的资源。资源管理模块181可挂起/扼流以及恢复/解除扼流第一和第二承租者的数据导入,以在第一承租者、第二承租者和一个或多个其它承租者之间平衡资源分配。挂起/扼流以及恢复/解除扼流第一和第二承租者的数据导入可向第一承租者、第二承租者和一个或多个其它承租者提供一致的用户体验。
[0059]各时间指示符(例如,t= O、t = 1、t = 2等)被描绘在计算机体系结构100的数据元素中。所描绘的时间指示符被用来指示各事件相对于彼此在计算机体系结构100内发生的次序。即,时间指示符被用来指示一些事件在其它事件之前或之后发生。在这些时间指示符内,较低数字被定义为在较高数字之前发生。例如,“t=l”在“t = 2”之前发生。类似地,较高数字被定义为在较低数字之后发生。例如,“t = 7”在“t = 4”之后发生。然而,将理解,所描绘的时间指示符不表示在所描绘的时间指示符之前、之后或之间的任何测量到的时间推移。即,指定的时间测量或特定时间段都不与时间指示符相关联。
[0060]图2示出用于在多承租者数据库处提供一致的承租者体验的示例方法200的流程图。方法200将参考计算机架构100的组件和数据来描述。
[0061]方法200包括访问第一数据,该第一数据与动态分布式数据库系统的承租者相关联,第一数据具有多个数据部分,此多个数据部分中的每一者均具有在承租者的数据库的一个或多个范围内的值(201)。例如,虚拟化层107在t = 0处可访问导入数据121。导入数据121与承租者102相关联并包括数据部分121A、121B和121C(例如,各数据库行)。数据部分121A、121B和121C中的每一者均具有在承租者102的数据库的一个或多个范围内的数据值,例如主键值。
[0062]方法200包括将此多个数据部分中的一个或多个数据部分导入到动态分布式数据库系统中(202)。例如,数据部分121A和12IB可被导入到动态数据库系统106中。
[0063]导入一个或多个数据部分包括对于此一个或多个数据部分中的每一数据部分,参考动态分布式数据库系统的全局分区图来调度该数据部分以供插入到承租者的合适数据库中,承租者的合适数据库在动态分布式数据库系统的某节点处(203)。例如,分配模块109可参考数据范围132图和数据库图133来确定数据部分121A将被插入到节点114A处的数据库中。分配模块109可在t = l处将数据部分121A调度到队列117A中。类似地,分配模块109可参考数据范围132图和数据库图133来确定数据部分121B将被插入到节点114B处的数据库中。分配模块109可在t = 2处将数据部分121B调度到队列117B中。
[0064]方法200包括访问第二数据,该第二数据与动态分布式数据库系统的第二承租者相关联,第二数据具有在第二承租者的数据库的一个或多个范围内的值(204)。例如,虚拟化层107在t = 3处可访问导入数据122。导入数据122与承租者103相关联并包括数据部分122A(例如,一数据库行)。数据部分122A可具有在承租者103的数据库的范围内的数据值(例如,主键值)。
[0065]方法200包括在访问第二数据之后并在完成对所有该多个数据部分的导入之前挂起对第一数据的导入,使得此多个数据部分中的一个或多个数据部分保持将被处理(205)。例如,资源管理模块181可在访问导入数据122之后并在完成对所有数据部分121A、121B、121C等的导入之前挂起对导入数据121的导入,使得导入数据121中的数据部分121C和任何其它数据部分保持将被处理。
[0066]资源管理模块181可检测到承租者102正在消耗可能使承租者103(以及其它数据库承租者)的导入体验降级的聚集资源量。作为响应,资源管理模块181可在t = 4处向分配模块109发送挂起命令141。挂起命令141可指令分配模块109挂起(S卩,停止)对导入数据121的导入。分配模块109可从资源管理模块181接收挂起命令141。分配模块109可响应于接收到挂起命令141而停止对导入数据121的导入。
[0067]替换地,方法200包括在访问第二数据之后并在完成对所有该多个数据部分的导入之前扼流对第一数据的导入,使得此多个数据部分中的一个或多个数据部分保持将被处理(208)。例如,资源管理模块181可在访问导入数据122之后并在完成对所有数据部分121A、121B、121C等的导入之后扼流对导入数据121的导入,使得导入数据121中的数据部分121C和任何其它数据部分保持将被处理。
[0068]如所描述的,资源管理模块181可检测到承租者102正在消耗可能使承租者103(以及其它数据库承租者)的导入体验降级的聚集资源量。作为响应,资源管理模块181可在t =4处向分配模块109发送扼流命令。扼流命令可指令分配模块109扼流(S卩,减慢)对导入数据121的导入。分配模块109可从资源管理模块181接收扼流命令141。分配模块109可响应于接收到扼流命令而扼流(减慢)对导入数据121的导入。
[0069]方法200包括在对将第一数据导入到动态分布式数据库系统中进行挂起或扼流之后,将第二数据的一部分导入到动态分布式数据库系统(206)。例如,在挂起或扼流对导入数据121的导入之后,数据部分122A可被导入到动态数据库系统106中。
[0070]对第二数据的一部分的导入包括参考全局分区图以调度第二数据的该部分以供插入到第二承租者的合适数据库中,第二承租者的合适数据库在动态分布式数据库系统的某节点处(207)。例如,分配模块109可参考数据范围132图和数据库图133来确定数据部分122A将被插入到节点114B处的数据库中。分配模块109可在t = 5处将数据部分122A调度到队列117B中。
[0071]在导入数据部分122A以及可能地导入数据122中的一个或多个附加数据部分之后,资源管理模块181可检测到对导入数据122的导入完成。替换地,在导入数据部分122A以及可能地导入数据122中的一个或多个附加数据部分之后,资源管理模块181可检测到承租者103正在消耗可能使承租者102(以及其它数据库承租者)的导入体验降级的聚集资源量。
[0072]作为响应,资源管理模块181可在t= 6处向分配模块109发送挂起/恢复命令142。挂起/恢复命令142可指令分配模块109挂起对导入数据122的导入并恢复对导入数据121的导入。分配模块109可从资源管理模块181接收挂起/恢复命令142。分配模块可响应于接收到挂起/恢复命令142而停止对导入数据122的导入并恢复对导入数据121的导入。
[0073]替换地,作为响应,资源管理模块181可在t= 6处向分配模块109发送扼流/恢复命令。扼流/恢复命令可指令分配模块109扼流对导入数据122的导入并解除扼流对导入数据121的导入。分配模块109可从资源管理模块181接收扼流/恢复命令。分配模块可响应于接收到挂起/恢复命令142而扼流对导入数据122的导入并解除扼流对导入数据121的导入。
[0074]导入数据121的其它部分可随后被导入到动态数据库系统106中。例如,分配模块109可参考数据范围132图和数据库图133来确定数据部分121C将被插入到节点114A处的数据库中。分配模块109可在t = 7处将数据部分121C调度到队列117A中。
[0075]队列117A和117B的线程可使数据出队,并将经出队的数据存储在分别在节点114A和114B处的合适数据库中。
[0076]图3示出促成在多承租者数据库处提供一致的承租者体验的示例计算机体系结构300。参考图1,计算机体系结构300包括数据库承租者301和动态分布式数据库系统306。数据库承租者301和动态分布式数据库系统306中的每一者可通过诸如例如局域网(“LAN”)、广域网(“WAN”)或甚至因特网之类的网络(或作为网络的一部分)彼此连接。因此,数据库承租者301和动态分布式数据库系统306中的每一者以及任何其它连接的计算机系统及其组件都可以创建消息相关数据并通过网络交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其它更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等,或者使用其它非数据报协议)。
[0077]如所描绘的,动态分布式数据库系统306(例如,云数据库系统)包括虚拟化层307、维护模块311、监视和通知模块312和机器314。数据库承租者301包括承租者301和302(垂直的省略号指示在承租者303和302之前、之间和之后可存在其它承租者)。承租者302和303中的每一者可将数据存储在动态分布式数据库系统306所管理的一个或多个数据库中。类似于虚拟化层107,虚拟化层307在动态分布式数据库系统106内从数据库承租者中抽象出底层硬件、数据布局、数据存储位置、数据库位置、数据移动、数据库移动等。由此,实质上向每一数据库承租者提供了专用数据库的逻辑视图。
[0078]机器314包括节点314B、314B等(垂直的省略号指示在节点314A和314B之前、之间和之后可存在其它承租者)。每一机器可包括数据库服务器(例如,SQL服务器)。例如,节点314A、314B等分别包括数据库服务器316A、316B等。每一数据库服务器可维护用于存储承租者数据的一个或多个数据库。例如,数据库服务器316A包括数据库316A1、316A2等。数据库服务器316B包括数据库316B1、316B2等。数据库服务器可维护实际上任何数目的数据库,并且不同数据库服务器所维护的数据库的数目可改变。此外,多个不同承租者的数据范围可被存储在一数据库处。
[0079]维护模块311向机器314发出改变底层硬件、改变数据布局、改变数据存储位置、改变数据库位置、移动数据、移动数据库等的指令。例如,维护模块311可发出将承租者的数据范围从一个数据库移动到另一数据库的指令,可发出将承租者的各数据范围合并在一数据库处的指令,可发出将承租者的数据范围在多个数据库之间拆分的指令,可发出将数据库从一个节点移动到另一节点的指令等等。维护模块311可按自动化方式发出指令和/或可响应于来自管理员的指令而发出指令。
[0080]维护模块311可不时地或以指定间隔监视包括各节点的机器314处的资源使用,以向其发出指令以平衡资源使用。例如,如果一个节点正经历较高的资源使用,则该节点处的数据范围和/或数据库的一部分可被移动到具有较低资源使用的另一节点。如果维护模块311检测到节点或数据库故障,则维护模块311可发出将合适的数据范围和/或数据库移动到其它节点的指令。维护模块311还可发出锁定合适的数据范围和/或数据库使得进一步的数据不被存储在故障组件处的指令。
[0081]管理员还可向维护模块311发出命令。例如,管理员可发出卸下指定节点的命令。作为响应,维护模块311可发出将该节点处的数据库移动到一个或多个其它节点处的指令。同样,管理员可将新增加的节点标记为可用。作为响应,维护模块311可发出将数据库从一个或多个其它节点移动到新近可用的节点处的指令。
[0082]因此,机器314的底层硬件、数据布局、数据存储位置、数据库位置等可随时间改变。一般来说,分区图331将数据范围映射到数据库并将数据库映射到节点。例如,如所描绘的,分区图331包括数据范围图332和数据库图333。
[0083]在每一承租者的基础上,数据范围图332中的数据元素将承租者的数据范围映射到相应的数据库。如所述描绘的,数据范围图332包括承租者302和303的数据范围到数据库映射。任何其它承租者301的类似数据范围图也可被包括在数据范围图332中。数据图333将数据库映射到相应的节点。
[0084]—般来说,监视器和通知模块312被配置成随着机器314处的改变被检测到时而更新分区图331。监视器和通知模块312可不时地或以指定间隔轮询机器314以确定配置。在一些实施例中,机器314的组件在改变发生时通知监视器和通知模块312。例如,节点可在有数据库被添加到该节点或从该节点处被移除时通知监视器和通知模块312。类似地,数据库服务器可在数据范围被添加到该数据库服务器所维护的数据库或从该数据库服务器所维护的数据库中被移除时通知监视器和通知模块312。
[0085]响应于检测到的改变和/或通知,监视器和通知模块312可按需更新分区图331以指示机器314处的更新近的配置。监视器和通知模块1312可添加、删除、改变、修改等数据范围图332和/或数据库图333中的映射。例如,在数据范围被拆分时,监视器和通知模块312可删除一个数据范围到数据库映射,并添加两个新的数据范围到数据库映射。另一方面,在两个数据范围被合并时,监视器和通知模块312可删除两个数据范围到数据库映射,并添加一个新的数据范围到数据库映射。监视器和通知模块312还可随着数据库在各节点之间的移动被检测到而移动、添加和修改数据库到节点映射。
[0086]虚拟化层307进一步包括调度器308、分配模块309和资源管理模块381。分配模块309被配置成接收来自承租者的导入数据,并将导入数据的各部分(例如,各行)移动到合适的桶(bucket)341中。基于来自承租者的一数据部分(例如,一行)中的数据值(例如,主键值),分配模块109可参考针对该承租者的数据范围图332。分配模块309可从数据范围图332中确定什么数据范围包括数据值。分配模块309可随后参考针对哪个数据范围的相应数据库。分配模块309可随后将该导入数据部分移动到该相应数据库的桶中。
[0087]桶341被配置成积累数据,直到指定条件被满足。桶341可被配置成具有指定的尺寸,诸如例如桶尺寸319。指定条件可包括桶变满(S卩,桶包含等于或接近该指定的尺寸的数据)或者一循环时间周期的期满。
[0088]调度器308被配置成将各桶入队到合适的队列中并调度供处理的队列。由此,当桶的指定条件被满足时,调度器308可使该桶入队到其中维护该数据库的节点的队列中。每一节点都可具有队列。例如,节点314A和314B分别具有队列317A和317B。数据可按指定的方式将从该队列出队以供存储在相应的数据库中。在一些实施例中,每一节点都具有处理节点的队列的一个或多个线程。调度器308可调度一个或多个线程以使数据从该队列出队,并将经出队的数据存储在节点处的相应数据库中。
[0089]在一些实施例中,在桶变满或一循环时间周期期满时,调度器308使数据入队。由此,较稀疏填充的数据范围的桶仍可通过某一规则性来处理。对循环时间周期的使用可有助于确保较稀疏填充的数据范围的数据被导入,即使在相应的桶会花比该循环时间周期更长的时间来填充时。
[0090]资源管理模块381被配置成监视动态分布式数据库306的承租者的承租者数据导入的资源消耗模式。监视承租者数据导入可包括对于每一承租者,监视正为该承租者执行的任何数据导入的聚集资源消耗。由此,资源管理器模块381可确定何时针对承租者的导入消耗的资源量可能使其它承租者的数据导入体验降级。例如,资源管理器模块381可确定何时特定承租者霸占带宽,使得其它承租者的数据导入是慢的或不可能的。
[0091]资源管理模块381可包括用于计算动态分布式数据库106的各承租者的聚集资源消耗的算法。资源管理模块381可包括用于检测一个承租者的资源消耗何时可能使一个或多个其它承租者的导入体验降级的算法。资源消耗阈值可被用来检测一个承租者的资源消耗何时可能使一个或多个其它承租者的导入体验降级。资源管理模块381还可包括定义在一个承租者的资源消耗可能使一个或多个其它承租者的导入体验降级时可采取的动作的算法。
[0092]在一些实施例中,资源管理模块381的算法由导入策略318来补充或甚至代替。导入策略318可包括用于计算聚集资源消耗的规则、用于检测一个承租者的资源消耗何时可能使一个或多个其它承租者的导入体验降级的规则、以及定义在一个承租者的资源消耗可能使一个或多个其它承租者的导入体验降级时可采取的动作的规则。[0093 ]定义的动作可包括挂起(停止)或扼流(减慢)对承租者的数据的导入,直到一个或多个其它承租者的至少一些数据被成功导入。挂起对承租者的数据的导入可包括挂起承租者的数据在桶中的放置和/或挂起对承租者的入队数据的处理。扼流对承租者的数据的导入可包括扼流承租者的数据在桶中的放置和/或扼流对承租者的入队数据的处理。
[0094]导入策略318还可定义承租者资源阈值(诸如例如桶尺寸319、带宽使用阈值、存储器使用阈值等),以供承租者将数据导入到动态分布式数据库系统306中。
[0095]各时间指示符(例如,t= O、t = 1、t = 2等)被描绘在计算机体系结构300的数据元素中。所描绘的时间指示符被用来指示各事件相对于彼此在计算机体系结构300内发生的次序。虽然被类似地定义,但计算机体系结构300中的时间指示符不与计算机体系结构100中的时间指示符关联。即,事件指示符被用来指示一些事件在其它事件之前或之后发生。在这些时间指示符内,较低数字被定义为在较高数字之前发生。例如,“t = l”在“t = 2”之前发生。类似地,较高数字被定义为在较低数字之后发生。例如,“t = 7”在“t = 4”之后发生。然而,将理解,所描绘的时间指示符不表示在所描绘的时间指示符之前、之后或之间的任何测量到的时间推移。即,指定的时间测量或特定时间段都不与时间指示符相关联。
[0096]在t = 0处,虚拟化模块307可访问t = 0处的导入数据321。导入数据321与承租者302相关联并包括行321A和321B(例如,各数据库行)。行321A、321B中的每一者均具有在承租者302的数据库的一个或多个范围内的数据值,例如主键值。例如,行321A可包括在数据范围334中的数据值(例如,主键值)。分配模块309可参考承租者302的数据范围图332来确定数据范围334映射到数据库316A2。分配模块309可参考数据库图333来确定数据库316A2被主存在节点314A处。在t = l处,分配模块309可将行321移动到桶342(节点314A的桶)中。
[0097]在t= 2处,虚拟化模块307可访问导入数据322。导入数据322与承租者303相关联并包括行322A和322B(例如,各数据库行)。行322A和322B中的每一者均具有在承租者303的数据库的一个或多个范围内的数据值,例如主键值。例如,行322A可包括在数据范围336中的数据值(例如,主键值)。分配模块309可参考承租者303的数据范围图332来确定数据范围336映射到数据库316B1。分配模块309可参考数据库图333来确定数据库316B1被主存在节点316A处。
[0098]在访问了导入数据322之后,资源管理模块381可检测到承租者302正在消耗可能使承租者303(以及其它数据库承租者)的导入体验降级的聚集资源量。作为响应,资源管理模块381可发起挂起对导入数据312的导入。
[0099]然而,在t = 3处,包含行321A的桶342可被入队到队列317A中。
[0100]在t= 4处,资源管理模块381可向调度器308和/或分配模块309发送挂起命令341。在一些实施例中,挂起命令341既挂起将导入数据321的各部分放置在桶中,又处理入队的导入数据321的各部分。在其它实施例中,挂起命令341挂起将导入数据321的各部分放置在桶中,但对入队的导入数据321的各部分的处理被允许继续。在进一步实施例中,挂起命令341允许将导入数据321的各部分放置在桶中继续,但挂起对入队的导入数据321的各部分的处理。
[0101]如图3中所描绘的,挂起命令341既指令调度器309挂起对包含在队列中的导入数据321的任何部分的处理,又指令分配模块309挂起对导入数据321的各部分到桶中的放置。由此,响应于挂起命令341,对来自队列317A的桶342的处理被挂起,并且行321到桶的放置被挂起。
[0102]替换地,在t= 4处,资源管理模块381可向调度器308和/或分配模块309发送扼流命令341。在一些实施例中,扼流命令对将导入数据321的各部分放置在桶中以及处理经入队的导入数据321的各部分两者进行扼流。在其它实施例中,扼流命令挂起将导入数据321的各部分放置在桶中,但对入队的导入数据321的各部分的处理被允许以优先速度继续。在进一步实施例中,扼流命令允许将导入数据321的各部分放置在桶中以便以优先速度继续,但扼流对入队的导入数据321的处理。
[0103]在t= 5处,分配模块109可将数据部分322A移动到桶343(节点314B的桶)中。在t =6处,调度器308可将桶343移动到队列317B中。在t = 7,队列317B的线程可出队,并将行322A存储在数据库316B1中。由此,行322A被导入到数据库316B1,而对导入数据321的处理被挂起。
[0104]随后,资源管理模块381可允许恢复对导入数据321的处理,并可解除扼流对导入数据321的处理。例如,导入一个或多个其它数据库承租者301的数据可完成。由此,附加资源可用。在t = 8处,队列317A的线程可出队,并将行321A存储在数据库316A2中。在t = 9处,行321B和/或322B可被移动到桶344中,并稍后入队以供处理。在资源可用性许可时,资源管理模块381可允许对导入数据进行并行地导入。
[0105]在一些实施例中,挂起和扼流导入被一起使用。例如,导入承租者的数据可被扼流以腾出一些资源。如果导入数据在被扼流时被检测为使其它承租者体验降级,则导入该数据可被挂起。类似地,恢复和解除扼流也可被一起使用。例如,在恢复对承租者的数据的导入时(例如,在已经被挂起后),导入数据可以按经扼流的速度被恢复。如果进一步的资源变得可用于导入数据,则导入数据可被解除扼流。
[0106]因此,资源管理模块可跨(例如可能大量的)多个承租者合适地挂起、扼流、恢复和解除扼流各导入,以便在此多个承租者之中更公平地分派资源。更公平地分派资源有助于确保向多个承租者中的每一者提供一致的导入体验。
[0107]本发明的各实施例也可被用来将数据导入到单独的非联合数据库中。
[0108]图4示出用于将数据导入到动态分布式数据库中的示例方法400的更详细的流程图。
[0109]在启动阶段410,方法400包括过程开始(411)。如在启动阶段410中,节点放置数据被加载(412),并且到成员阶段图的联合被构建(413)。例如,监视和通知模块112可构建分布式动态数据库(例如,云数据库)的分区图。动态分布式数据库可随后开始等待网络输入。
[0110]在导入请求阶段420,可接收包含对导入数据的参考的导入请求(421)。可授权并验证该请求(422)。可确定目标数据库是否被联合(423)。
[0111]如果该数据库未被联合(在423处为否),则在排序/装桶阶段430,为了公平性,基于配置的尺寸将导入数据拆分成各桶。如果数据库被联合(在423处为是),则在排序/装桶阶段430,从联合元数据中构建联合成员的范围阵列(431)。联合元数据可包括分区图。在排序/装桶阶段430,可使用该范围阵列来排序N行数据。在排序/装桶阶段430,可确定对集合的导入是否完成,或者桶尺寸是否大于配置的限制(例如,包含在桶中的数据为指定尺寸还是接近指定尺寸)(433 )。
[0112]当集合没有完成且桶尺寸不大于配置的限制(433处为否)时,排序继续(432)。当集合完成或者桶尺寸大于配置的限制(433处为是)时,将该范围桶与新的范围桶交换,并且该范围桶被调度处理(434)。在排序/装桶阶段430,安排导入该桶(435)。排序/装桶阶段430可由虚拟化层307(或其它类似配置的模块)通过参考分区图(或其它类似配置的数据)来执行。
[0113]在调度阶段440,可确定桶的目标数据库(441)。在调度阶段440,可使用联合成员到节点图来确定给定数据库的节点(442)。在调度阶段440,可将桶插入主存该数据库或范围的节点的队列中(443)。在调度阶段440,该阶段被调度执行(444)。调度阶段440可由分配模块309和调度器308(或其它类似配置的模块)通过参考分区图(或其它类似配置的数据)来执行。
[0114]在执行阶段450,对于每一硬件线程,从队列中拉出下一节点(451)。在执行阶段450,使该线程的下一桶出队,并开始导入(452)。在执行阶段450,确定导入是否完成(453)。如果导入没有完成(453处为否),则转变到故障/恢复阶段460。如果导入确实完成了(453处为是),则在导入任务中将该桶标记为完成。
[0115]在执行阶段450,确定导入任务是否完成(455)。如果导入是未完成的(在455处为否),则确定是否该节点的配置数目的桶已被导入(457)。如果导入是完成的(在455处为是),则将导入任务标记为成功(456),并且随后确定已导入了节点的配置数目的桶(457)。如果尚未导入节点的配置数目的桶(457处为否),则使该节点的下一桶被出队,并开始导入(452)。如果节点的配置数目的桶尚未被导入(457处为否),则确定节点队列中是否有桶要处理(458)。如果节点队列中有桶要处理(458处为是),则该节点被调度执行(444)。如果节点队列中没有桶要处理(458处为否),则从队列中拉出下一节点(451)。执行阶段450可由一个或多个线程在动态分布式数据库系统的控制下执行。
[0116]在故障/恢复阶段460,确定导入是否部分完成(461)。如果导入不是部分成功(461处为否),则确定是否存在连接故障(463)。如果导入部分成功(461处为是),则将成功导入的数据从桶中移除(462),并随后确定是否存在连接故障(463)。如果存在连接故障(463处为是),则确定是否已达到重试计数(464)。如果不存在连接故障(463处为否),则确定是否存在范围误差(466)。
[0117]如果尚未达到重试计数(464处为否),则该节点被调度执行(444)。如果已经达到重试计数(464处为是),则将该导入标记为失败(465)。如果不存在范围误差(466处为否),则也将该导入标记为失败(465)。如果存在范围误差(466处为是),则查找联合更新以及成员到节点图更新(467)。故障/恢复阶段460包括重新处理桶数据(468),包括构建联合成员阵列的范围来自联合元数据(431)。故障/恢复阶段460可由分配模块309和调度器308(或其它类似配置的模块)通过参考分区图(或其它类似配置的数据)来执行。
[0118]本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
【主权项】
1.在计算机系统处,所述计算机系统包括处理器和系统存储器,所述计算机系统被包括在动态分布式数据库系统中,所述动态分布式数据库系统跨多个节点维护多个数据库,一种用于在将数据导入由所述动态分布式数据库系统维护的数据库中时提供一致的用户体验的方法,所述方法包括: 访问第一数据,所述第一数据与动态分布式数据库系统的承租者相关联,所述第一数据具有多个数据部分,所述多个数据部分中的每一者均具有在所述承租者的数据库的一个或多个范围内的值; 将所述多个数据部分中的一个或多个数据部分导入到所述动态分布式数据库系统中,包括对于所述一个或多个数据部分中的每一数据部分: 参考所述动态分布式数据库系统的全局分区图来调度该数据部分以供插入到所述承租者的合适数据库中,所述承租者的合适数据库位于所述动态分布式数据库系统的一节点处; 访问第二数据,所述第二数据与所述动态分布式数据库系统的第二承租者相关联,所述第二数据具有在所述第二承租者的数据库的一个或多个范围内的值; 在访问所述第二数据之后并在完成对所有所述多个数据部分的导入之前挂起对所述第一数据的导入,使得所述多个数据部分中的一个或多个数据部分保持将被处理; 在挂起将所述第一数据导入到所述动态分布式数据库系统中之后,将所述第二数据的一部分导入到所述动态分布式数据库系统中,包括: 参考所述全局分区图以调度所述第二数据的所述部分以供插入到所述第二承租者的合适数据库中,所述第二承租者的合适数据库位于所述动态分布式数据库系统的一节点处。2.如权利要求1所述的方法,其特征在于,参考所述动态分布式数据库系统的全局分区图以调度所述数据部分以供插入到所述承租者的合适数据库中包括: 将所述数据部分插入与所述数据部分相对应的数据范围的桶中,所述桶对应于所述合适数据库;以及 将所述桶插入到所述合适节点的队列中。3.如权利要求1所述的方法,其特征在于,进一步包括在将所述第二数据的所述部分导入到所述动态分布式数据库系统中之后,恢复将所述第一数据导入到所述动态分布式数据库系统中。4.如权利要求1所述的方法,其特征在于,挂起对所述第一数据的导入包括根据导入策略挂起对所述第一数据的导入,所述导入策略定义所述承租者的资源使用阈值。5.—种供在计算机系统处使用的计算机程序产品,所述计算机系统被包括在动态分布式数据库系统中,所述动态分布式数据库系统跨多个节点维护多个数据库,所述计算机程序产品用于实现一种用于在将数据导入由所述动态分布式数据库系统维护的数据库时提供一致的用户体验的方法,所述计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机存储设备,所述指令当在处理器处执行时,使得所述计算机系统执行所述方法,包括以下: 访问第一数据,所述第一数据与动态分布式数据库系统的承租者相关联,所述第一数据具有多个数据部分,所述多个数据部分中的每一数据部分均具有在所述承租者的数据库的一个或多个范围内的值; 将所述多个数据部分中的一个或多个数据部分导入到所述动态分布式数据库系统中,包括对于所述一个或多个数据部分中的每一数据部分: 参考所述动态分布式数据库系统的全局分区图来调度该数据部分以供插入到所述承租者的合适数据库中,所述承租者的所述合适数据库在所述动态分布式数据库系统的一节点处; 访问第二数据,所述第二数据与所述动态分布式数据库系统的第二承租者相关联,所述第二数据具有在所述第二承租者的数据库的一个或多个范围内的值; 在访问所述第二数据之后并在完成对所有所述多个数据部分的导入之前扼流对所述第一数据的导入,使得所述多个数据部分中的一个或多个数据部分保持将被处理; 在扼流将所述第一数据导入到所述动态分布式数据库系统中之后,将所述第二数据的一部分导入到所述动态分布式数据库系统中,包括: 参考所述全局分区图以调度所述第二数据的所述部分以供插入到所述第二承租者的合适数据库中,所述第二承租者的合适数据库位于所述动态分布式数据库系统的一节点处。6.如权利要求5所述的计算机程序产品,其特征在于,在被执行时使得所述计算机系统参考所述动态分布式数据库系统的全局分区图以调度所述数据部分以供插入到所述承租者的合适数据库中的计算机可执行指令包括在被执行时使得所述计算机系统进行以下的计算机可执行指令: 将所述数据部分插入到与所述数据部分相对应的数据范围的桶中,所述桶对应于所述合适数据库;以及 将所述桶插入到所述合适节点的队列中。7.如权利要求6所述的计算机程序产品,其特征在于,在被执行时使得所述计算机系统将所述数据部分插入到桶中的计算机可执行指令包括在被执行时使得所述计算机系统将所述数据部分插入到定义尺寸的桶中的计算机可执行指令,所述定义尺寸小于所述第一数据的尺寸,使得多个桶将被用于导入所述第一数据。8.如权利要求6所述的计算机程序产品,其特征在于,在被执行时使得所述计算机系统计算引用所述全局分区图以调度所述第二数据的所述部分以供插入到所述第二承租者的合适数据库中的计算机可执行指令包括在被执行时使得所述计算机系统进行以下的计算机可执行指令: 将所述第二数据的所述部分插入另一桶中,针对一数据范围的其它桶对应于所述第二数据的所述部分,所述其它桶对应于所述第二承租者的所述合适数据库;以及将所述其它桶插入到其它合适节点的队列中。9.一种计算机系统,所述计算机系统被包括在动态分布式数据库系统中,所述动态分布式数据库系统跨多个节点维护多个数据库,所述计算机系统包括: 一个或多个处理器; 系统存储器;以及 一个或多个计算机存储设备,所述一个或多个计算机存储设备上存储有表示虚拟化模块的计算机可执行指令,所述虚拟化模块被配置成: 访问第一数据,所述第一数据与动态分布式数据库系统的承租者相关联,所述第一数据具有多个数据部分,所述多个数据部分中的每一数据部分均具有在所述承租者的数据库的一个或多个范围内的值; 将所述多个数据部分中的一个或多个数据部分导入到所述动态分布式数据库系统中,包括对于所述一个或多个数据部分中的每一数据部分: 参考所述动态分布式数据库系统的全局分区图来调度该数据部分以供插入到所述承租者的合适数据库中,所述承租者的所述合适数据库位于所述动态分布式数据库系统的一节点处; 访问第二数据,所述第二数据与所述动态分布式数据库系统的第二承租者相关联,所述第二数据具有在所述第二承租者的数据库的一个或多个范围内的值; 在访问所述第二数据之后并在完成对所有所述多个数据部分的导入之前挂起对所述第一数据的导入,使得所述多个数据部分中的一个或多个数据部分保持将被处理; 在挂起将所述第一数据导入到所述动态分布式数据库系统中之后,将所述第二数据的一部分导入到所述动态分布式数据库系统中,包括: 参考所述全局分区图以调度所述第二数据的所述部分以供插入到所述第二承租者的合适数据库中,所述第二承租者的所述合适数据库位于所述动态分布式数据库系统的一节点处。10.如权利要求9所述的计算机系统,其特征在于,所述虚拟化模块被配置成挂起对所述第一数据的导入包括所述虚拟化模块被配置成根据导入策略来挂起对所述第一数据的导入,所述导入策略定义所述承租者的资源使用阈值。
【文档编号】G06F17/30GK105874453SQ201480071901
【公开日】2016年8月17日
【申请日】2014年12月22日
【发明人】S·A·科纳斯曼
【申请人】微软技术许可有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1