涉及多个数据库和执行引擎的查询的制作方法

文档序号:8947464阅读:685来源:国知局
涉及多个数据库和执行引擎的查询的制作方法
【专利说明】涉及多个数据库和执行引擎的查询
【背景技术】
[0001] 数据库管理系统(DBMS)可用于存储、管理和查询数据。联机事务处理(OLTP)系 统和联机分析处理(OLAP)是DBMS被企业用于管理在操作过程中产生的加载数据以及从该 加载数据中提取数值的示例。每个系统可包括数据库和访问该数据库的执行引擎。然而, 系统就其对某些操作适用性而言是不同的。
[0002] 通常,OLTP系统用于为企业维护详细的数据和当前数据。OLTP系统通常处理大量 同时进行但简短的读/写操作的查询。OLTP系统的主要重点是多访问环境中的快速查询处 理和维护数据完整性。通常用每秒的事务处理量来测量系统的效率。电信企业或银行每天 使用OLTP系统来维护客户账号和处理成千上万的事务(例如,呼叫、计费)。
[0003] 另一方面,OLAP系统通常用于为企业存储历史和汇总数据。OLAP系统通常适合于 大型的、长期运行的只读操作的分析查询。运行在OLAP系统上查询的可能会非常复杂。通 常用响应时间(例如,执行查询需要多长时间)来测量系统的效率。电信企业或银行可以 使用OLAP系统分析OLTP系统生成的数据。这样的分析的示例包括:商业情报、客户行为描 述和欺诈检测。
【附图说明】
[0004] 如下详细描述参照附图,其中,
[0005] 图1示出根据本发明示例的处理涉及多个数据源的查询的方法。
[0006] 图2示出根据本发明示例的处理涉及多个数据源的查询的方法。
[0007] 图3示出根据本发明示例的处理涉及多个数据源的查询的计算系统。
[0008] 图4示出根据本发明示例的处理涉及多个数据源的查询的计算机可读介质。
【具体实施方式】
[0009] 如此处所描述的,提供使OLTP系统和OLAP系统整合的数据处理平台。OLTP系统 和OLAP系统的差别通常是结构的,因为OLTP系统通常强调更新中数据一致性,而OLAP系 统是读优化的。作为示例,Vertica DBMS作为OLAP系统是基于用于读优化的面向列的数 据模型,而PostgreSQL DBMS作为OLTP系统是基于用于写优化的面向行的数据模型。结构 对工作负荷特性的影响从而导致OLTP系统和OLAP系统的不同设计。由于不同的结构,配 置OLTP系统用于处理OLAP工作负荷或反之亦然,通常会产生不符合要求的性能。因此,配 置单个执行引擎用于处理多种类型的工作负荷和访问多种类型的数据库是不符合要求的。 [0010] 如果反而在数据库层上尝试整合,由于OLTP系统和OLAP系统管理其数据的方式 不同,会产生问题。例如,OLTP数据库通常将最近的数据存储在缓冲池用于高吞吐量更新, 这样如果缓冲池内容没有与磁盘同步(例如,通过使用fsync操作),该磁盘上的数据可能 是"废旧的"(即,不是最新的)。结果,数据完整性可能会受到损害。最终,因为需要决定 中间件引擎的优化决策,通过中间件在OLTP系统和OLAP系统的上方增加引擎会降低处理 速度以及会产生OLTP和OLAP系统的结构问题。然而,许多企业在他们的操作中处理OLTP 以及在他们的数据仓库应用中处理OLAP,因此整合这两个系统将是有益的。
[0011] 为避免引擎级、数据库级以及中间件级整合的一些缺点,此处公开的技术实现查 询级的整合。例如,此处公开的技术可允许OLTP引擎将OLAP查询结果视为数据源,允许 OLAP引擎将OLTP查询结果视为数据源,并允许将这两个引擎产生的查询结果合并。相应 地,使用此方法可以使用发给OLTP引擎的查询或发给OLAP引擎的查询来查询存储在OLTP 数据库和OLAP数据中的数据。对于发给OLTP引擎的查询,可以将OLAP引擎生成的查询结 果视为OLTP引擎的数据源,反之亦然。
[0012] 此外,为了避免将数据从一个数据库拷贝或实体化到另外一个数据库的开销(在 处理大量数据时该拷贝或实体化会特别有用),在查询中使用功能扫描而非表扫描用于以 流上下文的方式直接从其他数据库中提取数据。该机制可以降低生成临时表的内存要求, 减少磁盘访问的成本,自然而然地利用了查询引擎流处理能力。
[0013] 如上所述,根据本发明一实施例,执行此处所述原理的技术可以包括:发起使用存 储在第一数据库中的第一数据和存储在第二数据库中的第二数据的查询,第一执行引擎与 第一数据库相关联,第二执行引擎与第二数据库相关联。该第一数据库和第一执行引擎可 以是OLTP系统的一部分,该第二数据库和第二执行引擎可以是OLAP系统的一部分。该技 术进一步包括:将该查询的子查询发送给第二执行引擎用于在该第二数据库上执行以提取 第二数据。该技术进一步包括:在该第一执行引擎以流逐元组的格式从第二执行引擎接收 第二数据,并执行剩余的查询。可以通过在第一执行引擎直接从第二执行引擎接收该第二 数据而非在该第二数据被该第一执行引擎接收之前将该第二数据实体化在表中,来实现在 该第一执行引擎以流逐元组的格式从该第二执行引擎接收该第二数据。该技术可以避免与 整合OLTP系统和OLAP系统的其他技术相关的许多缺点。下面结合附图对其他示例、优点、 特征、改进等进行描述。
[0014] 图1示出根据本发明实施例的处理涉及多个数据源的查询的方法。可以由计算设 备、系统、或计算机,例如处理系统300或计算系统400来执行方法100。可以在计算机可读 存储介质中存储用于执行方法100的计算机可读指令。此处,这些存储在介质中的指令被 称为"模块",并且可以被计算机执行。
[0015] 此处描述与图3示例处理系统300示例相关的方法100。系统300可以包括一个 或多个计算机和/或被一个或多个计算机实现。例如,计算机可以为:服务器计算机、工作 站计算机、桌面计算机、笔记本电脑、移动设备等,并且可以为分布式系统的一部分。计算机 可以包括:一个或多个控制器以及一个或多个机器可读存储介质。
[0016] 控制器可以包括:用于执行机器可读指令的处理器和存储器。处理器可以包括: 适合于提取和执行存储在内存中的指令的至少一个中央处理单元(CPU)、至少一个以半导 体为基础的微处理器、至少一个数字信号处理器(DSP),例如数字图形处理单元、其他硬件 设备或处理元件,或者其组合。处理器可以包括:位于芯片上单个或多个核、跨多个芯片的 多个核、跨多个设备的多个核,或者其组合。处理器可以提取、解码和执行来自于内存的指 令以执行多种功能。作为一种替代或者除了提取和执行指令,处理器可以包括:包括一定数 量的用于执行各种任务或功能的电子元件的至少一个集成电路(IC),其他控制逻辑、其他 电子电路,或者其组合。
[0017] 控制器可以包括:内存,例如机器可读存储介质。该机器可读存储介质可以为: 任何包括或存储可执行指令的电子存储设备、磁性存储设备、光学存储设备或其他物理存 储设备。因此,该机器可读存储介质可以包括,例如各种随机存取存储器(RAM)、只读存储 器(ROM)、闪存,以及其组合。例如,该机器可读介质可以包括:非易失性随机存取存储器 (NVRAM)、电子可擦写可编程只读存储器(EEPROM)、存储驱动器、NAND闪存等。此外,该机器 可读存储介质可以是计算机可读并且是非易失性的。此外,系统200可以包括:一个或多个 与一个或多个控制器分离的机器可读存储介质。
[0018] 方法100可开始于110,其中,可以发起查询。该查询可需要用到存储在多个数据 库中的数据。例如,为了充分执行,该查询可需要用到存储在第一数据库320中的第一数据 和存储在第二数据库340中的第二数据。可以利用第一执行引擎310访问第一数据库320, 利用第二执行引擎330访问第二数据库340。第一执行引擎310可以包括:根据上述公开 的技术执行查询的查询执行器312。
[0019] 在一些实施例中,可以通过第一执行引擎310访问第二数据库340,通过第二执行 引擎330访问第一数据库320。在其他实施例中,可以通过任一种执行引擎访问这些数据 库,但是这种访问会有缺点,例如处理或内存开销、折衷的数据完整性等。
[0020] 第一数据库320和第二数据库340和各自的引擎310和330可以是基于不同结构 和存储不同数据的。例如,该第一执行引擎310和第一数据库320可以是OLTP系统的一部 分,而第二执行引擎330和第二数据库340可以是OLAP系统的一部分,反之亦然。这些系 统一起可以构成企业,例如电信企业的大型DBMS的一部分。例如,OLTP数据库(例如
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1