数据库服务中的冷数据库的动态解激活的制作方法

文档序号:16807116发布日期:2019-02-10 13:09阅读:160来源:国知局
数据库服务中的冷数据库的动态解激活的制作方法

在云计算中,集群具有有限数量的硬件资源。当将数据库保持活动而在较长的时间段内没有运行任何用户工作负载时,它没有任何用处,但仍占用诸如集群资源之类的宝贵资源、诸如备份应用或工具、遥测应用或工具之类的内部应用和工具等等。

本文要求保护的主题不限于解决任何缺点或仅在诸如上述那些环境中操作的实施例。而是提供该背景仅用于说明在其中可以实践本文所描述的一些实施例的一个示例性技术领域。



技术实现要素:

本文所说明的一个实施例包括可以在云计算环境中实践的方法。该方法包括用于管理在云计算环境中实现的数据库的动作。该方法包括检测在云计算环境中实现的数据库处于非使用状态中。该方法还包括:作为检测到在云计算环境中实现的数据库处于非使用状态中的结果,在云计算环境中实例化工作负载以解激活(deactivate)数据库。工作负载被配置为在云存储中远程存储用于数据库的元数据和数据库数据,以便在稍后的时间可以重新激活数据库。

提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。

附加的特征和优点将在随后的说明书中阐述,并且部分地将从说明书中是显而易见的,或者可以通过本文的教导的实践来学习。借助于所附权利要求中特别指出的仪器和组合,可以实现和获得本发明的特征和优点。从以下描述和所附权利要求中,本发明的特征将变得更加明显,或者可以通过如下所阐述的本发明的实践来学习。

附图说明

为了描述可以获得上面记载的和其他的优点和特征的方式,将通过参考附图中图示出的特定实施例来呈现上面简要描述的主题的更具体的描述。应理解,这些附图仅描绘了典型的实施例,并且因此不应被认为是对范围的限制,将通过使用附图利用附加特征和细节来描述和解释实施例,在附图中:

图1图示出了托管数据库的云服务;以及

图2图示出了管理数据库的方法。

具体实施方式

在实现数据库的集群计算环境中,为了避免不必要的工作并节省由冷数据库导致的产品销售成本,本文所图示的实施例可以检测冷数据库并解激活它们。在一些实施例中,这可以通过远程地保持最小元数据和数据库文件并移除所有运行时资源以及在集群处的数据库实例来完成。当用户连接到它们时或当需要由系统更新数据库文件时,将自动重新激活已解激活的数据库。

因此,实施例可以被配置为可靠地检测用户工作负载中的非活动性。实施例可以可替代地或附加地被配置为实现解激活工作流程,其被配置为确保数据的事务一致性。即,将所有已提交的用户事务保留在数据/日志文件中并进行备份。实施例可以可替代地或附加地被配置,使得在解激活状态下,数据、日志和/或备份文件面对基于保留(retentionbased)的清除得以存活。实施例可以可替代地或附加地被配置为使得磁盘上数据或格式改变能够引起数据库的按需激活而无需用户连接到数据库。可替代地或附加地,实施例可以被配置为使得工作流程的解激活和/或激活是幂等(idempotent)的。在集群和/或软件问题的情况下,实施例应该能够根据需要强制解激活或激活以试用不同的集群。

现在参考图1,图示出了示例环境。图1图示出了云服务102。云服务102被配置为托管数据库应用并向各种用户提供数据库功能性。例如,图1图示出了可以连接到云服务102以访问由云服务102提供的数据库服务的用户机器104。

云服务包括多个集群106。诸如集群106-1之类的给定集群是逻辑划分。在诸如物理机器集合108的一个或多个物理机器上实现每个集群。因此,每个集群可以使用物理机器的资源,诸如cpu周期、存储器、存储i/o、网络功能性等。

每个集群可以托管一个或多个数据库节点,诸如数据库节点110。每个数据库节点可以托管诸如数据库服务112的数据库服务和诸如本地代理114的本地代理。每个数据库节点也可以托管多个数据库,诸如数据库集115。数据库服务112向用户提供数据库功能性。本地代理114是数据库节点与数据中心中的其余集群之间的桥梁。

用于激活和解激活数据库集合115中的数据库的激活和解激活工作流程由工作流程服务120驱动。解激活由数据库服务112触发。

数据库服务112在一段时间内检测到没有用户活动,并且作为结果通知工作流程服务120。结果,解激活工作流程开始解激活数据库,诸如数据库实例115-1。在此时,与数据库实例115-1的任何数据库交互将触发激活工作流程,如下文更详细地解释的。

在解激活工作流程期间,工作流程服务120将联系本地代理114以监视来自用户机器104的新用户活动或云服务交互(诸如数据库系统更新或其他交互)。如果检测到交互,则取消解激活。如果没有检测到交互,则完成解激活,包括使得将用于数据库实例115-1的元数据122和用于数据库实例115-1的数据库数据124存储在远程存储126中。

激活工作流程由来自用户机器104的新用户连接来触发。新连接到达集群128。集群128确定数据库实例115-1没有运行,并向工作流程服务120指示激活数据库实例115-1。激活工作流程从远程存储126取回元数据122和数据库数据124。激活工作流程创建数据库的新实例,数据库实例115-1。在此时,新连接应该能够到达数据库实例115-1。

因此,在第一用户连接时,系统将通过创建/附接由在多个集群106底层的物理机器108所提供的必要物理资源来激活数据库实例115-1。只要存在来自用户机器104的用户活动,数据库实例115-1将保持活动。当活动请求的数量(来自用户机器104或来自其他系统组件)在可配置的时间量内下降到0时,系统将关闭物理数据库实例115-1,但是将保留远程储存文件,诸如元数据122和数据库数据124。在解激活之后的下一个用户连接将使得:通过使用先前保存的诸如元数据122和数据库数据124之类的远程储存文件再次启动物理数据库实例115-1。

在替代实施例中,物理数据库放置可以是动态的。也就是说,数据库放置没有被约束至在解激活之前托管数据库的数据库节点。

在一些这样的实施例中,在激活时刻,系统将基于某些标准来选择最合格的数据库服务实例。例如,可以将优先权给与:具有更多容量的一组数据库节点、具有目标硬件选择的一组数据库节点、或者基于使用模式而具有更合适的计算能力的数据库实例。

在解激活时刻,系统关闭物理数据库并释放数据库服务实例中的一个点以在需要时激活不同的数据库。请注意,当关闭该服务中的最后一个数据库时,可以关闭整个数据库服务。

现在,以下图示出了关于关闭的附加细节。诸如本地代理114或数据库服务112之类的系统在一段时间内没有检测到用户(并且在一些实施例中,系统)活动,这导致向工作流程服务120发送数据库解激活请求。作为响应,解激活工作流程启动并在此过程中更新元数据。

运行时130更新必要的元数据以指示数据库处于解激活状态中。因此,在此时针对数据库的任何新连接都将看到更新的元数据,这将触发重新激活。工作流程服务120继续联系本地代理114以确定数据库服务112自解激活请求以来是否具有新用户活动。如果没有,则解激活工作流程将删除与数据库服务相关联的运行时资源。

重新激活由新用户连接来触发。新连接请求到达集群128。集群128查找指示数据库服务处于解激活状态中的对应元数据。工作流程服务120向工作流程服务120发布(post)数据库激活请求以激活数据库实例115-1。激活工作流程创建必要的运行时资源和相关联的元数据。在此时,新连接现在能够到达数据库实例115-1。

一些实施例可以试图对解激活而言是保守的。这可以通过检查和重新检查多个重叠信号来完成,以避免竞争条件。解激活工作流程可能需要检查中止(abort)信号并在其可能时进行回滚。换句话说,如果在解激活过程中新连接到来,则激活将获胜而不必等待解激活工作流程完成。

以下图示出了关于数据库空闲检测逻辑的附加细节。数据库服务中的后台线程每小时(或其他一些可配置的时间段)进行服务,并检查每个用户数据库实例。特别地,后台线程可以针对每个数据库实例进行检查。对于每个用户数据库实例,可以检查各种信号。例如,实施例可以检查以确保没有活动登录。可替代地或附加地,实施例可以监视各种主要工作负载资源指示符,诸如指示如下内容的指示符:没有活动会话、没有活动工作者、没有活动请求、没有完成新请求、没有用户工作负载的资源消耗;没有cpu使用、没有实体在数据库上持有锁(尽管在一些实施例中,这可以被消除,因为系统后台任务可能持有这样的锁)、没有用于备份的挂起日志等。

当在最后数据库动作和当前时间之间经过了一些时间段时,可以发生解激活。例如,实施例可以检测最后活动更新时间与请求当前时间的请求的结果之间的增量。当此增量超过阈值(其可以是配置阈值,诸如通过在逻辑服务器级别或逻辑数据库级别处进行配置)时,将开始数据库解激活工作流程。

在一些实施例中,可以开始解激活并且可以在解激活期间开始事务。在该事务期间,如果在一段时间内没有新连接来激活db,则可以解激活用户连接。在这种情况下,备份可能不运行,这意味着将不会备份已提交事务的最后部分。

为了解决这些问题,一些实施例可以在解激活期间锁定数据库实例并拒绝新登录。这很简单且安全,并且不会导致活动或挂起的事务日志要处理。但是,数据库实例将显现为不可用,并且在解激活完成之前可能难以解锁数据库实例。附加地,实施例可能不得不轮询工作流程服务120以识别解激活工作流程的完成。此外,在不可用期间可能需要向用户显示解激活状态,从而打破了无缝的幻想。

可替代地,为了解决这些问题,可以在数据库表中指示解激活状态,该数据库表指示数据库正被解激活。新的用户连接可以检查该状态,并根据需要向工作流程服务120发送适当的请求以重新激活数据库实例以开始事务。

可替代地,为了解决这些问题,解激活工作流程可以在解激活数据库实例之前等待事务备份日志完成。然而,一些实施例可以移除现有连接,使得实施例仍然需要处理用户连接仍然存在的可能性,并且中止解激活或终止用户连接。

一些实施例可以通过检查与解激活逻辑相同的一组信号来解决这些问题。解激活工作流程可以在决定解激活数据库实例之前检查结果。

在一些实施例中,在解激活工作流程更新元数据到反映解激活状态以供新登录尝试查看的时间之间可能存在间隙。这样,在实施例已经检查并重新检查之后,用户连接仍然可以到达物理数据库实例,使得在分离(detach)之前可以立即执行一些改变。这可以在继续进行解激活的其余部分之前通过解激活工作流程等待反映解激活状态的元数据改变来解决。

可替代地,这可以通过在解激活物理数据库实例之前重新检查用户活动来解决,在数据库表中提供诸如设置或清除位之类的指示符。登录代码路径检查此位以阻止来自该点上的用户连接。

可以使用零个或多个不同的动作来清理该位。例如,如果解激活工作流程继续分离数据库,那么数据库表也将被移除,因此不需要清理。如果解激活工作流程无法分离数据库并且激活请求到来,则激活工作流程可以包括清除该数据库表位的步骤。如果解激活工作流程失败并稍后进行回滚,则将用清洁的数据库表启动新的物理数据库,因此不需要清理。

可以为检测逻辑实现各种配置旋钮(knob)。例如,一些实施例可以实现两个相对的主开关,其可在逻辑数据库级别设置。一个开关是“始终解激活:另一个是“从不解激活”。这些开关将胜过(trump)除了非活动持续时间之外的所有其他配置。

以下图示出了关于数据库激活的细节。在以下示例中,假设在数据库未处于活动状态时对数据库建立第一用户连接。对于一些实施例,登录路径将如下:

1.集群的登录路径查找其用于给定用户数据库的元数据。

2.结果,发现逻辑数据库处于解激活状态中。

3.开始针对该数据库的激活。

4.工作流程服务将触发数据库激活工作流程。

5.然后,工作流程服务将等待数据库激活工作流程操作完成。

6.工作流程服务将利用实例节点的位置向集群128发回响应(响应于在步骤3中接收到的请求)。

7.并行地,工作流程服务也将更新元数据以用于将来的连接。

8.登录路径将导致直接建立与新物理数据库实例的连接。

9.新物理数据库实例将向用户发送登录响应。

现在针对相关于以上步骤2和3的一些实施例图示出附加细节。在一些实施例中,工作流程服务将在所识别的端口处发动新服务(在确认端口有效以使用之后),以监听新数据库激活工作流程请求。

新服务将开始监听该端口。

现在针对相关于步骤4的一些实施例图示出附加细节。实施例将打包每个合格的数据库实例,因此如果可能的话则避免对于附加实例的需要。

数据库引擎通过用户和系统工作负载跟踪cpu、存储器和i/o资源使用。本文所描述的动态解激活可以就在工作流程服务核心内来实现其活动性检测,并且因此它可以可靠地识别用户与系统的使用。

在一些实施例中,可以分析工作负载活动性模式以在新活动的可能性低于特定阈值时进行解激活。例如,这可以通过机器学习或者可以确定在数据库上发生的动作的概率的其他启发式分析来确定。

一些实施例可以通过检查过激活模式的启发式来预先确定以激活数据库。

可替代地或附加地,一些实施例将数据库激活到适当的实例大小以容纳用于数据库的预期工作负载。

可以从一个物理集群/机器中解激活数据库,将其容量释放归还系统。当用户连接到来时,将发起激活工作流程并将找到适当的集群和/或机器,以便在那里启动数据库服务器过程和数据库。因此,在一些实施例中,激活工作流程可以用作云环境中的有效负载平衡器。

非活动性检测和解激活间隔可以是可配置的。这可以用来帮助动态支持集群的弹性容量。

以下讨论现在涉及可以执行的许多方法和方法动作。虽然方法动作可以按特定顺序讨论或如以特定顺序发生的那样在流程图中图示出,但除非特别说明或要求,否则不需要特定排序,因为动作取决于在执行该动作之前完成的另一动作。

现在参考图2,图示出了方法200。可以在云计算环境中实践方法200。方法200包括用于管理在云计算环境中实现的数据库的动作,以通过解激活冷数据库来创建更有效的云计算环境,从而节省计算资源。

该方法包括检测在云计算环境中实现的数据库处于非使用状态中(动作202)。

作为检测到在云计算环境中实现的数据库处于非使用状态中的结果,方法200还包括在云计算环境中实例化工作负载以解激活数据库(动作204)。工作负载被配置为在云存储中远程地存储用于数据库的元数据和数据库数据,以便在稍后时间可以重新激活数据库。因此,例如,解激活工作流程可以将数据库元数据122和数据库数据124(例如,数据库表)存储在远程存储126中。远程存储不是在本地数据库节点上而是在同一云环境中的某处可访问的存储。在云环境中拥有数据库的用户也拥有其远程存储的份额。当他们的数据库长时间不使用时——因此被认为是冷的,解激活将从本地数据库节点中移除运行时组件但保持远程存储中的内容完好无损。

方法200可以包括重新激活数据库。在一些这样的实施例中,方法200还可以包括检测针对数据库的用户交互。作为检测到针对数据库的用户交互的结果,可以执行重新激活数据库。例如,用户可能希望与已解激活的数据库交互。

可替代地或附加地,方法200的这些实施例可以进一步包括:检测针对数据库的除了用户交互以外的系统交互。在这样的实施例中,作为检测到针对数据库的系统交互(除了用户交互以外)的结果,执行重新激活数据库。因此,例如,系统更新或其他系统交互可以使数据库被重新激活。

可替代地或附加地,方法200的这些实施例可以进一步包括:检测识别潜在的数据库交互(例如,排定的更新、已知的用户习惯等)。在这样的实施例中,作为识别到潜在数据库交互的结果,执行重新激活数据库。

可以在检测到在云计算环境中实现的数据库处于非使用状态中的情况下实践方法200,包括:检测在预定的时间量内尚未使用数据库。例如,实施例可以实现循环,该循环检查数据库是否已被使用。在一些实施例中,预定的时间量可以是预定数量的循环检查。可替代地或附加地,预定的时间量可以是预定的逝去时间。

在一些实施例中,即使预定的时间量已经逝去,一些实施例还可以确定用户可能在某个短时间段内使用数据库。因此,例如考虑实施例将注意到用户将很可能每八天使用数据库的情况。如果预定的时间段是七天,则由于考虑到数据库将可能在一天内被使用,从而出于解激活和重新激活数据库的成本,一些实施例将确定不解激活数据库。

可以在检测到在云计算环境中实现的数据库处于不使用的状态中的情况下实践该方法,包括:基于进取的(aggressive)检测方法检测数据库不可能在一段时间内被使用。例如,除了确定数据库尚未被使用以预测数据库将在较长的时间段内不会被使用之外,实施例可以使用外部方法。例如,实施例可以实现用户特定逻辑以确定数据库将可能不被使用。例如,实施例可以检查用于用户的日历条目,以基于用户的日历条目识别用户将很可能不能或不太可能使用数据库。可替代地或附加地,实施例可以具有关于用户的假期安排的知识,其可以帮助系统识别用户不太可能使用数据库。可替代地或附加地,实施例可能能够使用用户对数据库的历史使用,从而能够识别用户不可能在一段较长的时间段内使用数据库,等等。

此外,该方法可以由包括一个或多个处理器和诸如计算机存储器之类的计算机可读介质的计算机系统来实践。特别地,计算机存储器可以存储计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时导致执行各种功能,诸如在实施例中记载的动作。

本发明的实施例可以包括或利用包括计算机硬件的专用或通用计算机,如下面更详细地讨论的。本发明的范围内的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这种计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理储存介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同的计算机可读介质:物理计算机可读储存介质和传输计算机可读介质。

物理计算机可读储存介质包括ram、rom、eeprom、cd-rom或其他光盘存储(例如cd、dvd等)、磁盘存储或其他磁储存设备或者任何其他介质,该任何其他介质可以被用来以计算机可执行指令或数据结构的形式存储所期望的程序代码装置并且可由通用或专用计算机访问。

“网络”被定义为能够在计算机系统和/或模块和/或其他电子设备之间传送电子数据的一个或多个数据链路。当通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)向计算机传送或提供信息时,计算机将该连接正确地视为传输介质。传输介质可以包括网络和/或数据链路,其可以被用来以计算机可执行指令或数据结构的形式携带所期望的程序代码装置,并且可以由通用或专用计算机访问。上述的组合也被包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码装置可以从传输计算机可读介质自动地传送到物理计算机可读储存介质(反之亦然)。例如,可以将通过网络或数据链路接收的计算机可执行指令或数据结构缓冲在网络接口模块(例如“nic”)内的ram中,然后最终将其传送到计算机系统ram和/或计算机系统中的较为不易失性的计算机可读物理储存介质。因此,计算机可读物理储存介质可以被包括在(或甚至主要)也利用传输介质的计算机系统组件中。

计算机可执行指令包括例如使通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令可以是例如二进制文件、诸如汇编语言的中间格式指令、或甚至是源代码。尽管利用结构特征和/或方法动作特定的语言描述了本主题,但应理解,所附权利要求书中定义的主题不必限于上述所描述的特征或动作。而是,所描述的特征和动作作为实现权利要求的示例形式而被公开。

本领域技术人员将理解,可以在具有许多类型的计算机系统配置的网络计算环境中实践本发明,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、寻呼机、路由器、交换机等。还可以在分布式系统环境中实践本发明,其中通过网络链接(通过硬连线数据链路、无线数据链路或通过硬连线和无线数据链路的组合)的本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器储存设备中。

可替代地或附加地,本文所描述的功能性可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不是限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(fpga)、程序专用集成电路(asic)、程序专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑器件(cpld)等。

在不脱离本发明的精神或特征的情况下,可以以其他特定形式体现本发明。所描述的实施例在所有方面都应被视为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是前面的描述来指示。在权利要求的含义和等同范围内的所有变化都被包含在其范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1