模块化数据分布计划生成的制作方法

文档序号:11519429阅读:232来源:国知局
模块化数据分布计划生成的制造方法与工艺

本发明涉及一种模块化数据分布计划形成。



背景技术:

企业数据库系统存储从一个或多个不同的源接收的巨大量的数据。数据被存储在数据库表格中并且可经由结构化查询来访问和修改。数据库表格可被分区,并且许多数据库系统支持将表格分区分布在多个主机间以便改善例如可扩展性和可用性。

表格分区在主机间的分布通常由计划生成算法来确定。计划生成算法可考虑到情景的不同属性和数据访问需求。传统的计划生成算法是由数据库系统开发者提供的并且无法具有照顾到众多可能的考虑及其对于各种用户的相对重要性所需的灵活性。



技术实现要素:

本发明的一个方面涉及一种系统,包括:存储器,存储处理器可执行过程步骤;以及处理器,执行所述处理器可执行过程步骤来使得所述系统:实例化计划生成环境,该计划生成环境暴露一个或多个软件钩子,所述一个或多个软件钩子的每一者与用于生成数据库表格分区重分布计划的多个步骤中的相应一个步骤相关联;对于所述一个或多个软件钩子,识别用于执行与所述至少一个软件钩子相关联的步骤的关联的一个或多个软件模块;并且执行所述计划生成环境和所识别出的一个或多个软件模块来生成数据库表格分区重分布计划。

本发明的另一方面涉及一种由计算机实现的方法,包括:实例化计划生成环境,该计划生成环境暴露一个或多个软件钩子,所述一个或多个软件钩子的每一者与用于生成数据库表格分区重分布计划的多个步骤中的相应一个步骤相关联;对于所述一个或多个软件钩子,识别用于执行与所述至少一个软件钩子相关联的步骤的关联的一个或多个软件模块;并且执行所述计划生成环境和所识别出的一个或多个软件模块来生成数据库表格分区重分布计划。

本发明的再一方面涉及一种存储程序代码的非暂态计算机可读介质,所述程序代码可由计算机系统执行来使得该计算机系统:实例化计划生成环境,该计划生成环境暴露一个或多个软件钩子,所述一个或多个软件钩子的每一者与用于生成数据库表格分区重分布计划的多个步骤中的相应一个步骤相关联;对于所述一个或多个软件钩子,识别用于执行与所述至少一个软件钩子相关联的步骤的关联的一个或多个软件模块;并且执行所述计划生成环境和所识别出的一个或多个软件模块来生成数据库表格分区重分布计划。

附图说明

图1是根据一些实施例的数据库体系结构的框图。

图2是根据一些实施例的数据库体系结构的框图。

图3包括根据一些实施例的过程的流程图。

图4是根据一些实施例的用户界面的外在视图。

图5包括根据一些实施例的过程的流程图。

图6包括根据一些实施例的过程的流程图。

图7是根据一些实施例的装置的框图。

具体实施方式

提供以下描述来使得任何本领域技术人员能够做出和使用描述的实施例。然而,各种修改将仍然是本领域技术人员很容易清楚的。

图1是根据一些实施例的数据库体系结构100的框图。实施例不限于体系结构100或某一数据库体系结构。体系结构100包括数据库110、应用服务器120和客户端130。

应用服务器120执行并提供服务给诸如管理工具122和其他应用124a和124b之类的应用。应用可包括服务器侧可执行程序代码(例如,编译的代码、脚本等等),这些代码通过向客户端130提供用户界面,经由这种用户界面接收来自客户端130的请求,基于这些请求从数据库110取回数据,处理从数据库110接收的数据,并且将经处理的数据提供给客户端130,从而来向客户端130提供功能。

诸如管理工具122之类的在应用服务器120内执行的应用也可向客户端130暴露管理功能,包括但不限于数据库配置、数据库维护、数据库优化和其他管理功能。客户端130对特定应用的访问可基于操作客户端130的用户的角色。例如,在一些实施例中只有与数据库管理员角色相关联的用户可被允许访问管理工具122。

应用服务器120提供客户端130可通过其来与在应用服务器120上执行的应用通信的任何适当的接口。例如,应用服务器120可包括支持通过传输控制协议(transmissioncontrolprotocol,tcp)的瞬态请求/响应协议的超文本传送协议(hypertexttransferprotocol,http)接口,支持应用服务器120和任何实现websocket协议的客户端130之间的通过单个tcp连接的非瞬态全双工通信的websocket接口,和/或开放数据协议(opendataprotocol,odata)接口。

数据库110包括数据库管理系统(databasemanagementsystem,dbms)112和数据114。根据一些实施例,数据114包括数据库表格的数据。正如本领域中已知的,数据114可分布在多个主机之间。例如,每个主机可包括一个或多个分区,并且每个分区可存储数据114的一个或多个关联的数据库表格。

如下文将要描述的,dbms112根据一些实施例可提供计划生成引擎来生成重分布计划。dbms112可执行这种重分布计划以在多个主机之间分布数据114。

数据114在主机间的分布和分区的定义可由也存储在数据114内的元数据来描述。存储的元数据也可描述数据114内存储的数据的结构、关系和含义。此信息可包括定义数据114内存储的数据库表格的模式(schema)的数据。模式可指定数据库表格所属的命名空间、数据库表格名称、数据库表格的列、与每一列相关联的数据类型和与数据库表格相关联的其他信息。

在服务器120上执行的一个或多个应用可利用数据库管理接口与dbms112通信,所述数据库管理接口包括但不限于开放数据库互连(opendatabaseconnectivity,odbc)和java数据库互连(javadatabaseconnectivity,jdbc)接口。这些类型的应用可使用结构化查询语言(structuredquerylanguage,sql)来管理、修改和查询数据库110中存储的数据。

dbms112为取回和/或修改数据114的请求服务,并且也执行行政和管理功能。这种功能可包括快照和备份管理、索引、优化、垃圾收集和/或已知或者会变得已知的任何其他数据库功能。根据一些实施例,数据库110还提供应用逻辑,例如数据库过程和/或计算。此应用逻辑可包括脚本、功能库和/或编译的程序代码。

在一些实施例中,数据114可包括传统的表格式数据、基于行的数据、基于列的数据和基于对象的数据中的一个或多个。数据114可被索引和/或在索引上选择性地重复以允许对其的快速搜索和取回。数据库110可支持多租赁以通过提供在编程上与彼此隔离的多个逻辑数据库系统来分别支持多个不相关的客户端。

数据库110可包括已知的或将变得已知的任何一个或多个查询-响应数据源,包括但不限于sql关系数据库管理系统。数据库110可包括关系数据库、多维数据库、可扩展标记语言(extendablemarkuplanguage,xml)文档或者存储结构化和/或非结构化数据的任何其他数据存储系统。数据114可分布在若干个关系数据库、维度数据库和/或其他数据源之间。实施例不限于任何数目或类型的数据源。

数据库110可实现“内存”(in-memory)数据库,其中整个数据库被存储在易失性(例如,非基于盘的)存储器(例如,随机访问存储器)中。整个数据库可被存留在和/或备份到固定盘中(未示出)。实施例不限于内存实现方式。例如,数据可被存储在随机访问存储器(例如,用于存储最近使用的数据的缓存存储器)和一个或多个固定盘(例如,用于存储整个数据库的其各自部分的持久性存储器)中。

如虚线所指示,应用服务器120可与数据库110分离或者与数据库110紧密集成。紧密集成的应用服务器120可使得能够完全在数据库110上执行服务器应用,而不需要额外的应用服务器。例如,根据一些实施例,数据库110包括提供对基于web的应用的端到端支持的嵌入式服务的综合集合。这些服务可包括轻量型web服务器、对odata的可配置支持、服务器侧javascript执行和对sql和sqlscript的访问。

每个客户端130可包括执行用于呈现用户界面以允许与应用服务器120的交互的软件应用的程序代码的一个或多个设备。用户界面可包括适合于管理、报告、数据分析和/或任何其他基于数据114的功能的用户界面。

取决于由应用服务器120生成的用户界面代码的类型,如本文所述的用户界面的呈现可包括任何程度或类型的渲染。例如,客户端130可执行web浏览器来经由http、https和/或websocket从应用服务器120请求并接收网页(例如,以html格式)并且可根据已知的协议渲染并呈现网页。客户端130中的一个或多个可以额外地或者替换地通过在虚拟机内执行独立可执行文件(例如,.exe文件)或代码(例如,java小应用程序)来呈现用户界面。

图2是根据一些实施例的系统200的详细框图。系统200可包括在一些实施例中图1的系统100的一种实现方式。系统200包括数据库205,数据库205进而包括数据210和数据库引擎220。系统200还包括管理工具ui组件230,数据库管理员240与该管理工具ui组件230交互来根据一些实施例生成重分布计划。

计划生成引擎222被调用以便生成重分布计划。数据库引擎220的计划生成引擎222可基于经由计划生成数据总线224从计划生成步骤模块226接收的算法来生成重分布计划。模块226可包括被插入到计划生成引擎222的软件钩子中并且在重分布计划的生成期间的适当时间被调用的算法。

模块226可在数据库系统205的核心内实现(例如,实现为sqlscript模块211)、在数据库引擎220上实现(例如,实现为javascript模块228)和/或在外部系统250上实现,其中到该外部系统250的通信信道可作为模块252被建立。模块226因此可提供一种机制,通过该机制客户可实现依客户而定的算法,该算法作为由数据库系统205的提供者发货的算法的替换在重分布计划的生成期间被调用。

数据210包括仓库212和表格218。仓库212的模块接口数据214包括计划生成环境(例如,模块接口的元数据,和配置设定(例如,哪些模块要被使用))和在重分布计划216的生成期间生成的日志。重分布计划216定义数据库表格分区的数目及其布置,并且可被触发来由数据库205执行。

图3包括根据一些实施例的过程300的流程图。过程300可包括系统根据一些实施例生成重分布计划。在一些实施例中,系统100或200的各种硬件元件(例如,一个或多个处理器)执行程序代码来执行过程300。

过程300和本文提到的所有其他过程可以用从诸如软盘、基于盘的硬盘驱动器或固态硬盘驱动器、cr-rom、dvd-rom、闪盘驱动器和磁带之类的非暂态计算机可读介质中的一个或多个读取并且随后被以压缩的、未编译的和/或加密的格式存储的处理器可执行程序代码来实现。在一些实施例中,硬连线的电路可取代程序代码或与程序代码相结合使用来实现根据一些实施例的过程。实施例因此不限于硬件和软件的任何特定组合。

在s310之前,用户可登录到用于管理数据库系统的应用。实施例可采用任何适当的工作室、工具、开发环境或其他管理应用。例如,管理员240可操作客户端设备来访问数据库210的管理应用的web门户。假定管理员240提供适当的证书,则管理工具ui组件230可将用户界面发送到客户端设备来显示。

图4是根据一些实施例的用户界面400的外在视图。管理员240可操纵用户界面400来指定计划生成步骤模块226及其特定参数。更具体而言,简档字段410指定与其自己的模块接口(即,“钩子”)和算法相关联的特定计划生成环境。

用户界面400的各种区块对应于计划生成环境的不同步骤。在每个区块内可指定多种参数。例如,参数“(一个或多个)模式名称”、“(一个或多个)群组名称”和“(一个或多个)群组类型”是钩入到步骤中来确定分区元数据的模块226的参数,这将在下文描述。过程300在执行生成计划用户界面控件时开始。

在s310,确定要执行的计划生成步骤和对于每个步骤要调用的模块。计划生成引擎222可基于上文描述的用户输入(即,指定计划生成环境和对于环境的每个步骤指定参数)加载模块接口数据的配置设定并且基于其来实例化计划生成环境。如上所述,计划生成环境提供一个或多个预定的钩子,这些钩子可由模块实现(或者在一些情况下必须由模块实现)。s310还包括加载模块226之中的与实例化的计划生成环境的钩子相对应的模块,执行一致性检查并且写入消息日志。

接下来,在s320,仅当要求的且识别的模块被成功加载时,计划生成环境才被执行来生成重分布计划。在一些实施例中,计划生成引擎222可执行计划生成环境的步骤,适当地调用加载的模块,来生成分布计划。在引擎222和模块之间传达的数据的一致性被对照模块接口来检查并且日志被写入来提供关于每个步骤的结果的详细信息。根据一些实施例的s320将在下文参考图5的替换过程500和图6的替换过程600来详细描述。

生成的重分布计划在s330被存储。重分布计划由重分布步骤组成,重分布步骤可包含关于将表格分区移动到何处或者如何改变分区的数目的信息,或者可包括特殊的语义(例如,触发重压缩)。这些步骤可被存储在仓库212的重分布计划216中并且可随后被数据库系统205执行来重分布分区。

在s340,与计划生成有关的日志消息被写入到数据库表格。日志消息可包括关于计划生成的状态和关于发生的任何问题的信息。消息可被设定成与任何实体(例如,表格)发生关系,从而使得用户可识别与给定实体相关联的消息。模块可能够向日志消息赋予不同的严重性级别,从而促进对问题的根本原因的识别。

图5的过程500包括根据一些实施例的过程300的s320的一种实现方式。一般而言,在过程500期间,计划生成引擎222按预定的顺序执行由所选择的计划生成环境定义的特定步骤。用于执行每个步骤的逻辑可由数据库205的开发者提供,并且客户、咨询顾问或其他人可通过提供实现其自己的步骤实现方式的模块来覆写此逻辑。这种模块必须遵守步骤的接口合约。

转到具体步骤,在s510确定分区元数据。实现此步骤的模块返回表示在下一步骤中要读取的分区的集合和元数据的抽象数据源。在s510期间,要重组织的分区的集合可被约束(例如,通过针对某些属性进行过滤)或者充实(例如,通过从外部源提供额外的元数据,例如量级估计)。

实施例可支持多于一个模块执行s510。如果多于一个模块被使用,则这些模块与彼此形成流水线,使得由第一模块返回的数据源被传递下去作为第二模块的数据源,等等依此类推。所得到的数据源可以是复杂嵌套数据源。

接下来,在s520,从在s510产生的抽象数据源读取一批分区信息。例如,实现s520的模块可返回与彼此表现出特定关系(例如,由于常规数据库查询在联接中使用这些表格)的表格的群组。读取的批次的表格被联合处理,从而对于重组织允许了更大灵活性(例如,关于放置的)。s520还确定表格将按什么顺序被处理(例如,从具有最大表格的最大群组到具有最小表格的最小群组)。对于作为由此模块返回的批次的一部分的每个表格,预期该表格的所有分区被返回(即,描述完整表格)。

在s530确定读取的批次的每个表格的配置设定。预期向该批次的每个表格指派配置,并且如果没有找到关联的配置则忽略表格。附于表格的配置可由“拥有”该表格的应用的开发者定义,但也可由数据库管理员或咨询顾问定义(即,作为“配置类型”)。

在s540基于配置设定确定该批次的每个表格的分区的目标数目。实现s540的模块可按每批次操作,以例如确保作为该批次的一部分的所有表格被指派相同数目的分区。s540可以是可选的,因为在分区的数目已被定义为固定的情况下其可被跳过。

对于该批次中包含的每个分区,实现s5504模块确定该分区应当被放置在的主机。在确定分布式数据库系统的哪个主机对于给定表格是最优的时可考虑任何数目的因素。例如,最优主机可基于本地最优来选择(例如,具有最低的存储器利用率的主机)、基于给定表格的增长率来选择,或者被选择来确保所有主机上的所有表格的记录的数目是大致相等的。

在s560判定是否停止计划的生成。此判定可简单地是对于是否还有任何批次的分区元数据仍未被读取的判定。如果否,则如图所示流程前进到s330。

s560也可采用评估计划生成是否应当被停止的一个或多个模块。这些模块可被“或”(or)在一起,使得如果任何模块判定计划生成应当被停止则计划生成将停止。例如,如果已经知道表格分区是正确分布的并且如果检测到整体节点利用率是充分平衡的,则计划生成可被提早停止(即,在读取分区元数据的所有批次之前)。用于判定是否停止计划生成的其他因素包括但不限于主机的数目、主机间的整体存储器分布、通过读取或修改属于一起的不同表格分区的数据所引起的处理器负载以及执行重分布计划所需要的时间。

如果s560处的判定是否定,则流程返回到s520以读取下一批分区元数据并且如上所述继续直到所有批次都被读取并且重分布计划被生成为止或者直到在s560因其他原因判定停止计划生成为止。

图6的过程600例示了根据一些实施例的s320的一种实现方式。过程600反映了一种计划生成环境,其中重分布计划是基于由数据库管理员定义的参数在一个步骤内生成的。因此,不是利用如针对过程500所述定制重分布计划生成的关联子步骤的模块,而是插入到过程600的计划生成环境中的模块提供用于生成重分布计划的完整算法的一种实现方式。

在s610,使由数据库管理员提供(例如,由数据库管理员240经由界面400提供)的数据符合计划生成环境的(唯一)模块接口。接下来,在s620,该模块基于计划生成环境的配置数据和由数据库管理员提供的数据生成分布计划。流程随后如上所述继续到s330。

前述模块化概念经由明确定义的接口和调用能力促进了插件模块的使用,这些插件模块提供了影响重分布计划的生成的功能,这些重分布计划例如定义数据库表格分区及其在分布式数据库系统的主机上的放置。

图7是根据一些实施例的装置700的框图。装置700可包括通用计算装置并且可执行程序代码来执行本文描述的任何功能。根据一些实施例,装置700可包括图1的数据库110和应用服务器120和/或图2的数据库系统205的一种实现方式。装置700可包括其他未示出的元件。

装置700包括处理器710,该处理器710操作性地耦合到通信设备720、数据存储设备730、一个或多个输入设备740、一个或多个输出设备750和存储器760。通信设备720可促进与外部设备(例如客户端)或外部数据存储设备的通信。(一个或多个)输入设备740可包括例如键盘、小键盘、鼠标或其他指点设备、麦克风、旋钮或开关、红外(ir)端口、扩展坞和/或触摸屏。(一个或多个)输入设备740可例如用于向装置700中输入信息。(一个或多个)输出设备750可包括例如显示器(例如,显示屏)、扬声器和/或打印机。

数据存储设备730可包括任何适当的持久性存储设备,包括磁存储设备(例如,磁盘、硬盘驱动器和闪存)、光存储设备、只读存储器(readonlymemory,rom)设备等等的组合,而存储器760可包括随机访问存储器(randomaccessmemory,ram)、存储级存储器(storageclassmemory,scm)或者任何其他快速访问存储器。

管理工具731、计划生成引擎732、计划生成步骤模块733和dbms734可包括由处理器710执行来使得装置700执行本文描述的过程中的任何一个或多个的程序代码。实施例不限于单个装置执行这些过程。

重分布计划735如本文所述可由计划生成引擎732联合计划生成步骤模块733生成。数据库表格736可包括存储数据的数据库表格,以及元数据和希望存储的任何其他数据。如本领域中已知的,重分布计划735可被执行来在主机之间分布数据库表格736的分区。

数据库表格736可如图所示被存储在设备730中和/或存储在例如存储器760之类的易失性存储器中。数据存储设备730也可存储用于提供额外功能和/或对于装置700的操作所必要的数据和其他程序代码,例如设备驱动器、操作系统文件等等。

前述附图表示用于描述根据一些实施例的过程的逻辑体系结构,并且实际实现方式可包括以其他方式布置的更多或不同的组件。结合其他实施例可使用其他拓扑。另外,本文描述的每个组件或设备可由经由任何数目的其他公共和/或私有网络通信的任何数目的设备实现。这种计算设备中的两个或更多个可位于彼此的远程并且可经由(一个或多个)网络和/或专用连接的任何已知方式与彼此通信。每个组件或设备可包括适合于提供本文描述的功能以及任何其他功能的任何数目的硬件和/或软件元件。例如,在根据一些实施例的系统的实现方式中使用的任何计算设备可包括处理器来执行程序代码以使得该计算设备如本文所述那样操作。

本文论述的所有系统和过程可以用存储在一个或多个非暂态计算机可读介质上的程序代码来实现。这种介质可包括例如软盘、cd-rom、dvd-rom、闪盘驱动器、磁带和固态随机访问存储器(ram)或只读存储器(rom)存储单元。实施例因此不限于硬件和软件的任何特定组合。

本文描述的实施例只是为了例示。本领域技术人员将会认识到在对上文描述的进行修改和替换后可实现其他实施例。

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