CN101587491A - 使用运行时可重配置硬件的混合数据库*** - Google Patents
使用运行时可重配置硬件的混合数据库*** Download PDFInfo
- Publication number
- CN101587491A CN101587491A CNA2009101348923A CN200910134892A CN101587491A CN 101587491 A CN101587491 A CN 101587491A CN A2009101348923 A CNA2009101348923 A CN A2009101348923A CN 200910134892 A CN200910134892 A CN 200910134892A CN 101587491 A CN101587491 A CN 101587491A
- Authority
- CN
- China
- Prior art keywords
- engine
- query
- plan
- execution plan
- query execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
提供一种***,可以包括:例程库,其被配置为存储和维护硬件库、软件库和元数据;混合查询引擎,其可以被配置为接收查询、解析查询、使用元数据和来自所述硬件库和/或软件库的操作器来计算查询执行计划并且输出该查询执行计划;和例程管理模块,其可以被配置为将来自例程库的元数据和操作器提供给混合查询引擎。该***可以包括执行引擎模块,其可以被配置为接收查询执行计划,该执行引擎模块包括具有可重配置结构的可重配置硬件执行引擎,其中所述可重配置硬件执行引擎可以被配置为处理查询执行计划。
Description
技术领域
本发明涉及使用运行时可重配置(reconfigurable)硬件的混合数据库***。
背景技术
数据库***可以使用磁盘作为永久性数据存储器。这样的***可以称为常驻磁盘数据库***(disc resident database system,DRDBS)。随着半导体技术的价格越来越低而密度越来越高,将不断增长的大型数据库存储于内存中变得有吸引力。因而,这样的主内存数据库***(main memory databasesystem,MMDBS)获得了广泛使用。应当注意的是,DRDBS可以不局限于将磁盘用作唯一的存储介质,MMDBS也不局限于主内存。例如,DRDBS可以将主内存用作数据访问的高速缓存,而MMDBS可以使用磁盘存储器作为备份和记录日志之用。这两种技术之间的一个区别在于,在MMDBS中,原始数据库副本可以保存在内存中,而在DRDBS中,原始副本可以驻留在磁盘上。可以将DRDBS优化为处理磁盘存储堆栈的典型特征。MMDBS可以通过提供针对高速内存数据访问而优化的算法,来实现比常驻磁盘数据库***更高的事务吞吐量(transactional throughput)和更快的响应时间。
在MMDBS中,由于半导体内存的高速存取和直接可寻址能力,数据访问可能不再是决定吞吐量和响应时间的主要因素。除了提交处理(commitprocessing)之外,MMDBS的性能会越来越依赖于计算能力。因此,人们可能期望找到一种加速执行数据库事务(transaction)的数据库***。
发明内容
在一个总体方面,一种***可以包括:例程库,其被配置为存储和维护一个或多个硬件库、一个或多个软件库和元数据;混合查询引擎,其可以被配置为接收查询、解析查询、使用所述元数据和来自硬件库和软件库中的至少一个的操作器(operator)来计算查询执行计划并且输出该查询执行计划;和例程管理模块,其可以在逻辑上耦接到例程库以及混合查询引擎,并且可以被配置为将来自例程库的元数据和操作器提供给混合查询引擎。该***可以包括执行引擎模块,其可以在逻辑上耦接到混合查询引擎,并且可以被配置为接收查询执行计划,该执行引擎模块包括具有可重配置结构(reconfigurable fabric)的可重配置硬件执行引擎,其中所述可重配置硬件执行引擎可以被配置为处理查询执行计划。
实施方式可以包括一个或多个下面的特征。例如,所述混合查询引擎可以包括:解析器,其可以被配置为接收查询,以及检查与该查询相关的代码以便进行语法更正;重写器,其被配置为将所述查询重写为规范形式;和优化器,其被配置为接收所述规范形式并且生成查询执行计划。所述混合查询引擎可以被配置为将查询执行计划划分为第一查询执行计划和第二查询执行计划,并且,所述执行引擎模块还可以包括主内存执行引擎,其中所述可重配置硬件执行引擎可以被安排和配置为处理第一查询执行计划,并且所述主内存执行引擎可以被安排和配置为处理第二查询执行计划。
在一种实施方式中,所述混合查询引擎可以被配置为将查询执行计划划分为第一查询执行计划和第二查询执行计划,并且所述执行引擎模块还可以包括常驻磁盘执行引擎,其中所述可重配置硬件执行引擎可以被配置为处理第一查询执行计划,并且所述常驻磁盘执行引擎可以被配置为处理第二查询执行计划。在另一种实施方式中,所述混合查询引擎可以被配置为将查询执行计划划分为第一查询执行计划、第二查询执行计划和第三查询执行计划。所述执行引擎模块还可以包括主内存执行引擎和常驻磁盘执行引擎,其中所述可重配置硬件执行引擎可以被安排和配置为处理第一查询执行计划,所述主内存执行引擎可以被配置为处理第二查询执行计划,并且所述常驻磁盘执行引擎可以被配置为处理第三查询执行计划。
所述混合查询引擎可以包括优化器,其可以被配置为生成第一查询执行计划、第二查询执行计划和第三查询执行计划。所述优化器可以包括:成本估计器,其被配置为基于由例程管理模块提供的元数据,评估用于第一查询执行计划、第二查询执行计划和第三查询执行计划的可替换操作器的成本。所述优化器可以包括执行计划器,其可以被配置为构造第一查询执行计划、第二查询执行计划和第三查询执行计划。
在一种示范性实施方式中,所述***可以包括存储器管理模块,其可以在逻辑上耦接到混合查询引擎以及执行引擎模块,并且可以被配置为与多个存储资源交互以及优化在执行引擎模块和多个存储资源之间的数据的分布。所述***还可以包括调度器,其可以在逻辑上耦接到混合查询引擎、执行引擎模块和例程管理模块,并且可以被配置为接收查询执行计划以及调度混合可重配置执行引擎、主内存执行引擎和常驻磁盘执行引擎上的操作。
所述***还可以包括通信管理模块,其可以在逻辑上耦接到执行引擎模块。所述通信管理模块可以被配置为协调与可重配置硬件执行引擎和可重配置结构的通信,协调在执行引擎模块和多个数据源之间的通信,以及协调使用一个或多个交互接口与终端用户的通信。
在另一个总体方面,一种***可以包括:例程库,其可以被配置为存储和维护一个或多个硬件库、一个或多个软件库和元数据;以及混合查询引擎,其可以被配置为接收查询、解析查询、使用元数据和来自硬件库和软件库中的至少一个的操作器来计算查询执行计划并且输出该查询执行计划,其中所述查询执行计划被划分为多个子执行计划。所述***还可以包括例程管理模块,其可以在逻辑上耦接到所述例程库以及所述混合查询引擎,并且可以被配置为将来自所述例程库的元数据和操作器提供给混合查询引擎。所述***可以包括执行引擎模块,其可以在逻辑上耦接到混合查询引擎,并且可以被配置为接收子执行计划。所述执行引擎模块可以包括:具有可重配置结构的可重配置硬件执行引擎,其中所述可重配置硬件执行引擎可以被配置为处理子执行计划中的一个或多个;主内存执行引擎,其可以被配置为处理子执行计划中的一个或多个;和常驻磁盘执行引擎,其可以被配置为处理子执行计划中的一个。所述***还可以包括存储器管理模块,其可以在逻辑上耦接到混合查询引擎和执行引擎模块,并且可以被配置为与多个存储资源交互以及优化在执行引擎模块和多个存储资源之间的数据分布。所述***还可以包括通信管理模块,其可以在逻辑上耦接到执行引擎模块,并且可以被配置为协调与可重配置硬件执行引擎和可重配置结构的通信,协调执行引擎模块与存储数据的多个数据源之间的通信,以及协调使用一个或多个交互接口与终端用户的通信。
实施方式可以包括一个或多个下面的特征。例如,所述混合查询引擎可以包括解析器,其可以被配置为接收查询,以及检查与该查询相关的代码以便进行语法更正;重写器,其可以被配置为将查询重写为规范形式;和优化器,其可以被配置为接收所述规范形式并且生成所述子执行计划。所述优化器可以包括:成本估计器,其可以被配置为基于由例程管理模块提供的元数据来评估用于所述子执行计划的可替换操作器的成本;和执行计划器,其可以被配置为构造所述子执行计划。
存储在所述例程库中的元数据可以包括关于存储在硬件库和软件库中的操作器的信息,其中所述关于操作器的信息可以包括性能特征、参数、端口带宽和布置约束条件。
所述***可以包括调度器,其在逻辑上耦接到所述混合查询引擎、所述执行引擎模块和所述例程管理模块。所述调度器可以被配置为接收子执行计划以及调度在混合可重配置执行引擎、主内存执行引擎和常驻磁盘执行引擎上的操作。
在一种实施方式中,所述存储器管理模块包括:高速缓存管理模块,其可以被安排和配置为维护数据库高速缓存的状态与数据库的状态之间的一致性;数据访问管理模块,其可以被配置为控制对与存储器管理模块接口的数据源的访问,其中所述数据源可以包括数据、索引数据、数据字典和日志;和数据转移模块,其可以被配置为将数据从存储资源中的一个移动和复制到存储资源中的另一个。所述***还包括一个或多个协同仿真工具。
所述可重配置硬件执行引擎还可以包括:重配置控制器,其可以被配置为配置所述例程库中存储的操作器的硬件算法;和执行控制器,其可以被配置为接收和控制子执行计划中的一个在可重配置结构上的执行。
在另一个总体方面,一种方法可以包括:接收查询,解析该查询,使用元数据和来自硬件库和软件库中的至少一个的操作器来计算查询执行计划,以及使用具有可重配置结构的可重配置硬件执行引擎来处理所述查询执行计划。
实施方式可以包括一个或多个下面的特征。例如,所述方法还可以包括将所述查询执行计划划分为第一查询执行计划和第二查询执行计划,其中,处理所述查询执行计划可以包括使用所述可重配置硬件执行引擎处理第一查询执行计划以及使用主内存执行引擎处理第二查询执行计划。
在另一种示范性实施方式中,所述方法还可以包括将所述查询执行计划划分为第一查询执行计划和第二查询执行计划,其中,处理所述查询执行计划可以包括使用所述可重配置硬件执行引擎处理第一查询执行计划以及使用常驻磁盘执行引擎处理第二查询执行计划。
在下面的描述和附图中阐述了一个或多个实施例的细节。从说明书、附图以及从权利要求中,其它特征将变得明显。
附图说明
图1是示范性混合数据库***的框图。
图2是示范性混合数据库服务器的框图。
图3是示范性混合查询引擎的框图。
图4是示范性例程库和管理的框图。
图5是示范性可重配置硬件执行引擎的框图。
图6是示范性存储器管理组件的框图。
图7是示出图1和图2的***的示范操作的流程图。
具体实施方式
参照图1,示出了混合数据库***(HYBDBS)100。HYBDBS 100可以通过执行在可重配置计算平台上执行的硬件算法中所实现的数据库操作器(例如,连接、扫描和排序)来提高数据库事务的执行速度。在一个示范性实施例中,HYBDBS 100可以包括独立的可重配置硬件数据库***(reconfigurable hardware database system,RHWDBS)。在另一个示范性实施例中,HYBDBS 100可以包括与MMDBS和/或DRDBS成为一体的RHWDBS,进而充分利用所有这三种数据库***技术的效力。因此,RHWDBS可以是HYBDBS 100的一部分,但是它也可以是独立的***。
可重配置计算可以指代在可使用分布在目标设备上的大量物理控制点进行定制的可编程硬件上执行的操作。如果硬件允许的话,那么这些控制点可以被重新配置、也即被多次编程,以使所述设备的功能与变化的应用相适应。可重配置计算设备还可以允许在所实现的电路的运行时期间,改变可用控制点的子集的设置,以使得部分运行着的应用可以被变动,而其它应用继续工作。这种改变应用的结构和功能性的方式可以被称为部分重配置。
可重配置计算***可以包括像处理器、可重配置结构、内存/高速缓存、接口和通信网络这样的组件。根据可重配置计算***与主机耦合的程度,可以将它们分为不同的等级。以耦合程度上升的顺序,所述不同等级可以包括独立处理单元、附属处理单元、协处理器、可重配置功能单元(RFU)和嵌入式处理单元。
通过提供可替换的、可编程的逻辑和路由结构的选择,可重配置计算***可以允许快速的电路设计和实现方式,从而避免设计定制电路的在前成本并且提供纠正设计错误的快速方法。所述电路可以被配置在硬件上并且被切换到工作模式,在工作模式下,并行和流水线(pipeline)设计风格可以提供优于指令流处理器的相当可观的速度提高。像现场可编程门阵列(FPGA)这样的可重配置计算***方便了***开发,并且还可以实现简单快捷的设计变化和验证。FPGA可以适用于快速样机开发,并且还可以在小型和中型容量产品中取代标准逻辑和门阵列解决方案。
HYBDBS 100可以包括混合数据库服务器102、一个或多个交互接口104、一个或多个应用接口106、数据字典108、日志库110、检查点/备份库112、例程库114、索引数据仓库116、数据仓库118、协同仿真(cosimulation)工具120、开发工具122和管理工具124。混合数据库服务器102可以是HYBDBS 100的核心组件。混合数据库服务器102可以包括一个或多个这样的组件:它们可以被配置为接收查询、解析查询和计算查询执行计划,以及被配置为使用一种或多种类型的执行引擎来处理查询执行计划。
在一个示范性实施例中,混合数据库服务器102可以包括独立的可重配置硬件执行引擎,该引擎可以被配置为处理查询执行计划。在另一个示范性实施例中,混合数据库服务器102可以包括多个执行引擎,诸如例如可重配置硬件执行引擎、主内存执行引擎和/或常驻磁盘执行引擎。将在下面针对图2更加详细地讨论混合数据库服务器102。
交互接口104可以被配置为与终端用户交互。例如,交互接口104可以包括图形用户界面(GUI)、键盘、鼠标、触摸屏或者使用户能够输入信息和查看信息的其它交互型的接口。
应用接口106可以包括使混合数据库服务器102能够与其它外部应用通信的一个或多个接口。例如,应用接口106可以使混合数据库服务器102能够与这样的应用进行交互,该应用使终端用户能够向应用中输入查询并且使用户能够接收查询结果。应用接口106可以支持与混合数据库服务器102的接口,以及与需要与这样的服务器接口的任何类型的应用的接口。例如,可能与混合数据库服务器102接口的应用可以包括:客户应用、银行应用、医疗记录应用、供应链应用、电信应用、搜索应用、企业应用以及可以与数据库服务器接口以便存取数据的任何其它类型的应用。
数据字典108可以被配置为存储并且维护有关数据库***100中的数据库的数据。数据字典108可以存储各种图式(schema)、文件详述以及它们的位置。数据字典108还可以包含有关哪些程序或应用可以使用哪些数据以及哪些终端用户会对哪些报告感兴趣的信息。
日志库110可以包括可能在HYBDBS 100上发生的事务或活动的记录。日志库110可以由具有适当权限的终端用户访问,以便分析***的技术性能。
检查点/备份库112可以被配置为包含可以描述HYBDBS 100在特定时间的状态的信息。检查点/备份库112可以包括***在特定点的信息,以便使***能够在故障事件中从该点恢复。
例程库114可以被配置为以硬件库和软件库的形式存储和维护操作器(operator)、各种服务、以及像性能特性、参数、端口带宽和布置约束条件这样的元数据。在例程库114中维护的信息可以被混合数据库服务器102用来构造查询执行计划。将在下面针对图4更加详细地讨论例程库114。
索引数据仓库116可以被配置为存储和维护使能从数据仓库118中检索数据的信息。索引数据仓库116可以包括多个列表或表格,它们可以包含指向存储在数据仓库118中的数据的参考(reference)信息。数据仓库118可以包括用于数据库内容的数据。数据仓库118可以存储和维护终端用户正使用混合数据库服务器102通过交互接口104和应用接口106请求的数据。
协同仿真工具120可以被配置为使仿真场景能够在HYBDBS上运行。协同仿真工具120可以包括一个或多个这样的应用:它们可以使HYBDBS100以数学方式响应数据和变化的条件,就好像它是正在运行的处理过程本身一样。
开发工具122可以被配置为使开发人员能够改变HYBDBS 100以及混合数据库服务器102。开发工具122可以包括一个或多个应用,所述一个或多个应用具有一个或多个例程,以便使开发人员能够写程序和/或对HYBDBS 100作出改变。
管理工具124可以被配置为使具有管理权限的终端用户能够维护处于工作状态的HYBDBS 100。
参照图2,示出了混合数据库服务器102的框图。混合数据库服务器102可以包括混合查询引擎230、调度器232和执行引擎模块234。执行引擎模块234可以包括可重配置硬件执行引擎236、主内存执行引擎238和常驻磁盘执行引擎240。混合数据库服务器102可以包括通信管理模块242、存储器管理模块244、事务管理模块246和例程管理模块248。
混合查询引擎230可以在逻辑上耦接到交互接口104和应用接口106。混合查询引擎230还可以在逻辑上耦接到调度器232、存储器管理模块244、事务管理模块246和例程管理模块248。
混合查询引擎230可以被配置为使用元数据和来自硬件库和软件库中至少一个的操作器,来接收查询、解析查询、计算查询执行计划以及输出查询执行计划。可以使用例程管理模块248从例程库114访问元数据和来自硬件库和软件库中的操作器。例如,终端用户可以使用交互接口104以及通过应用接口106的应用输入查询。该查询可以是不同的形式,包括例如结构化查询语言(SQL)的形式。所接收到的查询可以被混合查询引擎230解析、重写或优化。混合查询引擎230可以计算并输出查询执行计划。
在一个示范性实施例中,查询执行计划可以被分为个体执行计划(individual execution plans),所述个体执行计划可以被称为子执行计划(sub-execution plan)。子执行计划可以适应于执行引擎模块234中的各个不同的执行引擎。例如,可以为可重配置硬件执行引擎236计算一个子执行计划,可以为主内存执行引擎238计算另一个子执行计划,并且可以为常驻磁盘执行引擎240计算另一个子执行计划。
查询执行计划和各个子执行计划可以采用不同类型的数据结构的格式。在一个示范性实施例中,用于表示执行查询计划的一种数据结构可以是数据流图。这种数据流图中的节点可以表示操作器描述符,而弧线可以表示数据的流向。下面将针对图3更加详细地描述混合查询引擎230。
调度器232可以在逻辑上耦接到混合查询引擎230和例程管理模块248。该调度器还可以在逻辑上耦接到执行引擎模块234、事务管理模块246和存储器管理模块244。
调度器232可以被配置为从混合查询引擎230接收查询执行计划,并且利用执行引擎模块234调度执行引擎中一个或多个的操作。例如,在仅使用可重配置硬件执行引擎236的独立***中,调度器232可以只计划和调度可重配置硬件执行引擎236的操作。在其它包括多个执行引擎的示范性实施例中,调度器232可以被配置为调度包括例如可重配置硬件执行引擎236、主内存执行引擎238和常驻磁盘执行引擎240在内的每个引擎的操作。
调度器232可以接收查询执行计划,该计划还可以包括子执行计划之间的相互依赖性。例如,在用于可重配置硬件执行引擎236的子执行计划中的数据库操作可能需要等待主内存执行引擎238和/或常驻磁盘执行引擎240完成正在执行的数据库操作。调度器232可以决定各种操作何时必须在执行引擎上启动。调度器232还可以维护输入的查询执行计划的队列,可以根据所选择的调度策略并且根据诸如像优先级、到期日、预期的执行持续时间(如果已知的话)这样的参数以及其它参数来维护该队列。
执行引擎模块234可以在逻辑上耦接到调度器232、例程管理模块248、通信管理模块242和存储器管理模块244。执行引擎模块234可以被配置为接收包括任意子执行计划在内的查询执行计划。诸如例如可重配置硬件执行引擎236、主内存执行引擎238和常驻磁盘执行引擎240这样的执行引擎,可以被配置为执行和处理可能由调度器232分配的查询执行计划和各个子执行计划。
例如,主内存执行引擎238可以由诸如McObject或CSQL的eXtremeDB(开源)中使用的那些执行引擎实现。例如,常驻磁盘执行引擎240可以由诸如Sun微***的OpenOffice.org Base或IBM的DB2中使用的那些执行引擎来实现。可重配置硬件执行引擎236可以包括可重配置结构以及布置、路由(routing)和控制组件。当在可重配置结构上分配了自由分区之后,可以布置用于数据库操作的电路,并且确定用于数据通信和控制的互连路线。然后,可重配置硬件执行引擎236可以被配置为处理查询执行计划和/或其各个子执行计划。下面将针对图5更加详细地描述可重配置硬件执行引擎236。
通信管理模块242可以在逻辑上耦接到执行引擎模块234、存储器管理模块244、交互接口104和应用接口106。通信管理模块242可以被配置为协调与执行引擎模块234的通信,协调执行引擎模块234和多个数据源(例如,数据仓库118)之间的通信,以及协调使用一个或多个交互接口104和/或应用接口106与终端用户之间的通信。
在一个示范性实施例中,通信管理模块242可以被配置为协调与可重配置硬件执行引擎236以及可重配置结构的通信。可被称为可重配置多总线的动态信号交换通信架构,可以用于可重配置结构内的通信。通信管理模块242的功能性可以被划分为软件和可重配置硬件。
存储器管理模块244可以在逻辑上耦接到通信管理模块242、执行引擎模块234、调度器232、混合查询引擎230和事务管理模块246。存储器管理模块244还可以与数据仓库118、索引数据仓库116、数据字典108、检查点/备份库112和日志库110耦接。
存储器管理模块244可以被配置为与多个存储资源交互并优化执行引擎模块234和多个存储资源之间的数据分布。存储器管理模块244可以控制对各种数据源的访问,这些数据源诸如例如数据仓库118、索引数据仓库116、数据字典108、检查点/备份库112和日志库110。将在下面针对图6更加详细地描述存储器管理模块244。
事务管理模块246可以在逻辑上耦接到混合查询引擎230、调度器232和存储器管理模块244。事务管理模块246还可以在逻辑上耦接到数据字典108、检查点/备份库112和日志库110。
事务管理模块246可以被配置为确定事务是否成功执行或是否已经失败。事务管理模块246可以被配置为确保一项事务不在中间状态终止。事务管理模块246可以负责事务处理任务,事务处理任务诸如记录日志、使用锁定机制(lock mechanism)控制对数据的存取、检查点、备份和回滚。
例程管理模块248可以在逻辑上耦接到混合查询引擎230、调度器232和执行引擎模块234。例程管理模块248可以被配置为将元数据和操作器从例程库118提供到混合查询引擎230。将在下面针对图4更加详细地描述例程管理模块248。
混合数据服务器102的使用可以提供优于传统的指令流处理器上的顺序执行的潜在加速。这种潜在加速可以是将数据库操作器作为可重配置结构上的电路来执行的结果。可重配置结构可以实现将数据操作器电路布置得接近例如块随机存取存储器(RAM)、查找表RAM以及其它类型的内存这样的形式的嵌入式内存,这会进一步缩减数据访问时间。由混合数据库服务器102提供加速后的、更加可预见的执行速度的结果是,在实时场景中可以可靠地满足约束条件。
HYBDBS 100实现了将计算成本高的操作转移(offload)为硬件算法。由于数据库操作和硬件的并行化和流水线化(pipelining),事务可以更加迅速地完成,以使得可以更早地解锁并且可以降低锁争用(lock contention)的机率。而且,在可重配置硬件数据库中,使用较大的锁颗粒度(lock granule)比在其它类型的数据库***中更为有利。因而,可以降低并发控制的成本,或者在极端情况下,甚至可以完全消除并发控制的成本(例如,通过锁定整个数据库)。并且,更少的事务需要挂起,以使得需要更少的高速缓存清空,而这些高速缓存清空对于数据库***来说会非常耗时。
在一个示范性实施例中,混合数据库服务器102可以用于对照数据库绘制移动对象的雷达特征(radar signature),或者处理和关联事件流或安全交易。例如,混合数据库服务器102可以用于在交易机会消失之前发现它们。流水线设计风格可以以较高的吞吐量处理数据,并且因而可以实现满足实时约束条件,这些实时约束条件先前可能不能被指令流处理器上的数据库***满足。
在另一个示范性实施例中,混合数据库服务器102可以用于数据库对象的高性能分析和转换。例如,在可重配置硬件执行引擎236上,数据库操作器不仅可以用硬件实现,它们也可以与用于分析或转换数据库对象和流的电路相结合。因此,可以对音频和视频数据进行快速滤波和处理,并且可以对机密数据进行加密和/或解密。
在其它示范性实施例中,集成的混合数据库***,HYBDBS 100,可以根据数据特性来划分数据的执行和存储,以最充分地利用各种数据库技术的效力。数据特性或数据类型可以包括热数据和冷数据,热数据可以包括一般具有低存储量、高访问频率和严格的定时约束条件的数据,冷数据可以包括一般具有高存储量、低访问频率且无时间约束条件或仅有宽松的时间约束条件的数据。因而,热数据最好在可重配置硬件执行引擎236中处理,而冷数据可以使用常驻磁盘执行引擎240来处理。可以选择主内存执行引擎238用于处理热数据与冷数据之间的中间级别的数据。
例如,在电信扇区(sector)路由中,路由表和电话交换应用可以被视为热数据,从而应当在可重配置硬件执行引擎236中被处理。另一方面,月付客户账单可以被视为冷数据,更适合于使用常驻磁盘执行引擎240来处理。
在另一个示范性实施例中,银行业可以包括被视为热数据的账户记录,并且因此适合于使用可重配置硬件执行引擎236来处理。然而,以前的银行业务活动或者像地址或生日之类个人记录的历史数据可以被视为冷数据,更适合于使用常驻磁盘执行引擎240和/或主内存执行引擎238来处理。
HYBDBS 100也可以适应于变化的数据特征。例如,HYBDBS 100可以通过适当地转移数据来适应增长的访问频率。例如,数据可以被适当地从磁盘转移到嵌入式内存块。
参照图3,示出了混合查询引擎230的框图。混合查询引擎230可以包括解析器302、重写器304和优化器306。优化器可以包括成本估计器308和混合执行计划器310。
解析器302可以在逻辑上耦接到交互接口104以及应用接口106。例如,解析器302可以接收SQL形式的查询。解析器302可以被配置为检查与所接收到的查询相关的代码,以便进行语法更正。重写器304可以被配置为将查询重写为规范格式。在一个示范性实施例中,解析器302和重写器304可以包括例如PostgreSQL DBMS中使用的解析器和重写器技术。
优化器306可以被配置为接收重写代码并且生成查询执行计划。查询执行计划可以被划分为用于执行引擎模块234中各个不同的目标执行引擎的子执行计划。可以选择数据流图作为表示这样的查询执行计划的数据结构,其中,节点可以对应于操作器描述符,而弧线可以表示数据的流向。具体来说,优化器306可以被配置为决定节点的具体实现方式。例如,节点可以包括嵌套循环连接(nested loop join)、散列连接(hash join)、合并连接(merged join)、顺序扫描或索引扫描。
优化器306可以包括成本估计器308。成本估计器308可以被配置为给出用于查询执行计划和/或子执行计划的可替换操作器的成本评估。该成本可以用例如期望运行时间或者可重配置结构上芯片区域的消耗来表达。对操作器(例如,可以以硬件和/或软件实现的操作器)的成本估计可以基于存储在例程库114中的元数据。成本估计器308可以从数据字典108中检索信息,以便提供关于以下信息的输入:关系结构表的基数、先前执行结果的统计、表之间的关系、以及存在索引的属性。
优化器306可以包括混合执行计划器310。混合执行计划器310可以被配置为构造查询执行计划。混合执行计划器310可以执行对已有查询执行计划的修改,该查询执行计划接下来可以由成本估计器308进行重新评估。这可以是一个迭代过程,如优化器306内的循环所指示的,可以重复该过程直到满足特定停止条件。例如,可以重复该过程直到达到最大迭代次数或者在最近的10次迭代中没有达到大于1%的成本降低为止。混合执行计划器310可以被配置为通过从例程库114中选择数据库操作器以及来自成本估计器308所提供的相关成本估计的指导,来创建针对三种类型的执行引擎对查询执行计划的划分。从而,查询执行计划可以包括各个子执行计划及它们之间的相关性。查询执行计划可以被转送给调度器232。
参照图4,示出了例程库114和例程管理模块248的框图。例程库114可以在逻辑上耦接到例程管理模块248。例程库114可以包括软件库402、硬件库404和元数据406。
软件库402和硬件库404可以包含诸如像数据库操作器或数据类型转换这样的操作器的定义、实现方式或可执行态(executable)。数据库操作器可以包括,例如,用于嵌套连接或索引扫描的可执行代码。
软件库402可以包括在中央处理单元(CPU)上执行的操作器,特别是用于主内存执行引擎和常驻磁盘执行引擎的CPU上执行的操作器。硬件库404可以包括能够在可重配置结构上加载并执行的操作器。例如,包含在硬件库404中的操作器可以被可重配置硬件执行引擎236使用。
在一个示范性实施例中,电路可以被描述为,例如,IP核的形式,该IP核可以使用一组参数来配置(例如,输入和输出端口的宽度、算法的类型以及同步或异步定时)。IP核可以是使现场可编程门阵列或专用集成电路用于产品所使用的逻辑块或数据块。IP核可以被提供为通用门网表。所述电路还可以用预合成(pre-synthesized)库模块,用硬件描述语言(例如,VHDL或Verilog)或面向更高级硬件的编程语言(例如,SystemC或Handel-C)描述的可构造代码进行描述。
元数据406可以包括有关存储在软件库402和硬件库404中的操作器的信息。例如,元数据可以包括性能特征、所需要的参数、端口带宽和布置约束条件。元数据406可以被混合查询引擎230以及执行引擎模块234中的执行引擎使用。
例程管理模块248可以在逻辑上耦接到例程库114。例程管理模块248还可以在逻辑上耦接到管理工具124、混合查询引擎230、调度器232和执行引擎模块234。
例程管理模块248可以被配置为接收并处理来自混合数据库服务器102的查询。例如,例程管理模块248可以接收诸如“针对给定端口宽度和给定的可配置逻辑块的最大利用量提供嵌套环电路的列表”这样的查询。例程管理模块248可以提供管理接口,该管理接口例如,使终端用户能够查看和删除操作器、包括新操作器、或者编辑元数据406。
参照图5,示出了可重配置硬件执行引擎236的框图。可重配置硬件执行引擎236可以包括可重配置结构502、执行控制器504和重配置/配置控制器506。
可重配置结构502可以包括用于数据库操作的实际电路。该电路可以使用实现加速执行数据库操作的并行和流水线功能来实现。可重配置结构502可以实现运行时重配置、更加快速的执行和/或降低的功耗。可重配置结构502的使用可以实现新的算法技术,它们可以通过将特定操作转移到可重配置逻辑和路由资源中来使应用加速。在一个示范性实施例中,FPGA可以用于可重配置结构502中。在一个示范性实施例中,可以使用ESM机(ErlangenSlot Machine,ESM)。
执行控制器504可以在逻辑上耦接到调度器232。执行控制器504可以从调度器232接收查询执行计划。例如,如果查询执行计划的数据结构是数据流图,那么执行控制器504可以接收数据流图以及时间约束条件。执行控制器504可以被配置为安排并控制可重配置结构502上的查询执行计划的执行。
重配置/配置控制器506可以被配置为配置存储在例程库114中的数据库操作器的硬件算法,所述操作器可以使用例程管理模块248接收。硬件模块的配置包括布置(placement)508和路由(routing)510。可能必须使用存储器管理模块244和通信管理模块242建立模块内、模块间和外部通信的路由。在可能时,可以通过将当前配置数据交换(512)出去并且将用于待加载的新操作器的配置数据交换进来,来重配置已配置的结构的某些部分。以这样的方式,这可以被称为部分重配置。例如,如果芯片器件太小而无法同时装配所有操作器,那么可能需要这样的重配置。重配置也可以用于对芯片区域的去分段(de-fragment),以便生成足够的连续自由空间用于配置数据库操作器。
参照图6,示出了存储器管理模块244。存储器管理模块244可以包括数据访问管理模块602、高速缓存管理模块604和数据转移模块606。存储器管理模块244可以被配置为与多个存储资源608交互以及优化执行引擎模块234和多个存储资源608之间的数据的分布。存储器管理模块244可以包括到事务管理模块246、混合查询引擎230、调度器232、执行引擎模块234、通信管理模块242、数据仓库118、索引数据仓库116、数据字典108、检查点/备份库112和日志库110的逻辑连接。
存储资源608可以包括不同类型的存储资源。例如,存储资源608可以包括位于计算机内或附属于计算机的资源,诸如例如主内存610、磁带512和硬盘614。存储资源608还可以包括位于可重配置设备中或附属于可重配置设备的存储资源,诸如例如块RAM 616、查找表/触发器RAM 618、外部RAM 620和闪存622。存储资源608可以被视为一级存储资源、二级存储资源和/或三级存储资源。
数据访问管理模块602可以被配置为控制对诸如表内容、索引数据仓库116、数据字典108、检查点/备份库112和日志库110这样的数据资源的访问。在数据需要被读取或修改的情况下,事务管理模块246可以调用数据访问管理模块602,该数据访问管理模块602可以确认所需要的数据可以存储得尽可能靠近处理该数据的执行引擎的位置。在这种场景中,数据“越靠近”,存储设备与处理设备之间的期望吞吐量越高。但是,可能需要满足特定约束条件。例如,主内存执行引擎238可能需要访问能够被直接寻址的内存(例如,可重配置平台上的主内存610或者外部RAM 620)。可重配置硬件执行引擎236可以使用位于可重配置结构内部的内存(例如,块RAM 616或LUT/FF RAM 618)。常驻磁盘执行引擎240可以使用存储在磁盘上或数据库高速缓存中的数据。
数据转移模块606可以被配置为满足约束条件或者提高存储设备与处理设备之间的期望数据吞吐量。数据转移模块606可以被配置为将数据从存储资源中的一个移动到或复制到存储资源中的另一个。例如,主内存执行引擎238可能需要只存储在磁盘上的数据。在这种情况下,数据转移模块606可以将所需要的数据从磁盘复制到主内存610,以使得主内存执行引擎238能够访问所需要的数据。
在另一个示例中,可重配置硬件执行引擎238可能需要只存储在主内存610中的数据。在该例中,数据转移模块606可以调用相应数据的副本到内部的块RAM 616中,以允许更高的吞吐量。
在又一个示例中,计算结果可以存储在外部RAM 620中并且可以被附加到磁盘上所存储的表上。在该例中,数据转移模块606可以将各个数据转送到常驻磁盘执行引擎240,常驻磁盘执行引擎240可以执行数据库操作以向磁盘上存储的表附加多行。
高速缓存管理模块604可以被配置为与事务管理模块246合作,以保持数据库高速缓存的状态与数据库中的状态之间的一致性。通过这样的方式,可以位于数据库缓存中的数据可以被写到更加持久的数据库部分中。
参照图7,过程700示出了图1和图2的***的示范操作。过程700可以包括接收查询(710)、解析查询(720)、使用元数据和来自硬件库和软件库至少其中之一的操作器来计算查询执行计划(730)以及使用具有可重配置结构的可重配置硬件执行引擎来处理查询执行计划(740)。
在一个示范性实施例中,混合查询引擎230可以被配置为接收查询(710)、解析查询(720)以及计算查询执行计划(730)。可重配置硬件执行引擎236可以被配置为处理查询执行计划(740)。
过程700还可以包括将查询执行计划划分为多个子执行计划。例如,混合查询引擎230可以被配置为将查询执行计划划分为多个子执行计划。在一个示范性实施例中,可重配置硬件执行引擎236可以处理子执行计划其中之一,主内存执行引擎238可以处理子执行计划其中之一,和/或常驻磁盘执行引擎240可以处理子执行计划其中之一。
这里描述的各种技术的实施方式可以被实施在数字电子电路中,或者实施在计算机硬件、固件、软件,或它们的组合中。实施方式可以实施为计算机程序产品,即实实在在地具体实施在信息载体中的计算机程序,例如具体实施在机器可读存储设备中或者在传播的信号中,以供数据处理装置执行,或者控制数据处理装置的操作,所述数据处理装置例如可编程处理器、计算机、多个计算机。计算机程序,诸如上面描述的计算机程序,可以用任何形式的编程语言编写,包括汇编语言或解释语言,并且,可以被以任何形式部署,包括作为独立的程序或者作为模块、组件、子例程或其他适于在计算环境中使用的单元。计算机程序可以被部署为在一个计算机上执行或在位于一个地点或跨过多个地点分布并被通信网络互连起来的多个计算机上执行。
方法步骤可以被一个或多个可编程处理器执行,所述可编程处理器执行计算机程序,以便通过对输入数据操作和产生输出来执行功能。方法步骤还可以被专用逻辑电路执行,或者装置可以被实施为专用逻辑电路,所述专用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
作为例子,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任意一个或多个处理器。一般来说,处理器将从只读存储器或随机存取存储器接收指令和数据,或者从两者都接收指令和数据。计算机的元件可以包括用于执行指令的至少一个处理器,和用于存储指令和数据的一个或多个存储器设备。一般来说,计算机还可以包括一个或多个用于存储数据的海量存储设备,和/或可操作地连接到一个或多个海量存储设备,以从其接收数据或向其传送数据,或者二者皆有,所述海量存储设备例如:磁盘、磁光盘或光盘。适于具体实施计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,作为例子,包括:半导体存储器器件,例如EPROM、EEPROM和闪存设备;磁盘,例如内置硬盘或可移动磁盘;磁光盘;和CD-ROM以及DVD-ROM盘。处理器和存储器可以由专用逻辑电路作为补充,或者被包含在专用逻辑电路中。
为了提供和用户的交互,实施方式可以在具有显示设备和键盘以及指示设备的计算机上实施,显示设备例如阴极射线管(CRT)或液晶显示器(LCD)监视器,用于向用户显示信息,指示设备例如鼠标或轨迹球,用户利用它们可以提供到计算机的输入。其他种类的设备也可以被用来提供和用户的交互;例如,提供给用户的反馈可以是任何形式的感观反馈,例如视觉反馈、听觉反馈或触觉反馈,并且,来自用户的输入可以被以任何形式接收,包括声音、语音或触觉输入。
实施方式可以在包括后端组件或包括中间件组件或包括前端组件的计算***中实施,或者在这些后端组件、中间件组件、前端组件的任意组合中实施,后端组件例如数据服务器,中间件组件例如应用服务器,前端组件例如具有图形用户界面或Web浏览器的客户端计算机,通过图形用户界面或Web浏览器,用户可以与实施方式的交互。可以通过任何形式或介质的数字数据通信,例如通信网络,互连组件。通信网络的例子包括:局域网(LAN)和广域网(WAN),例如因特网。
虽然如这里所描述的那样已经示出了所描述的实施方式的某些特征,但是本领域普通技术人员现在应当想到很多修改、替换,变化或等同物。因此应当理解,所附权利要求旨在覆盖所有这些修改和变化。
Claims (20)
1.一种***,包括:
例程库,其被安排和配置为存储和维护一个或多个硬件库、一个或多个软件库和元数据;
混合查询引擎,其被安排和配置为接收查询,解析查询,使用元数据和来自所述硬件库和软件库中的至少一个的操作器来计算查询执行计划并且输出查询执行计划;
例程管理模块,其在逻辑上耦接到所述例程库以及所述混合查询引擎,并且被安排和配置为将来自所述例程库的元数据和操作器提供给所述混合查询引擎;和
执行引擎模块,其在逻辑上耦接到所述混合查询引擎,并且被安排和配置为接收所述查询执行计划,该执行引擎模块包括具有可重配置结构的可重配置硬件执行引擎,其中所述可重配置硬件执行引擎被安排和配置为处理所述查询执行计划。
2.如权利要求1所述的***,其中,所述混合查询引擎包括:
解析器,其被安排和配置为接收查询,以及检查与该查询相关的代码以便进行语法更正;
重写器,其被安排和配置为将所述查询重写为规范形式;和
优化器,其被安排和配置为接收所述规范形式并且生成所述查询执行计划。
3.如权利要求1所述的***,其中:
所述混合查询引擎被安排和配置为将所述查询执行计划划分为第一查询执行计划和第二查询执行计划;以及
所述执行引擎模块还包括主内存执行引擎,其中所述可重配置硬件执行引擎被安排和配置为处理所述第一查询执行计划,并且所述主内存执行引擎被安排和配置为处理所述第二查询执行计划。
4.如权利要求1所述的***,其中:
所述混合查询引擎被安排和配置为将所述查询执行计划划分为第一查询执行计划和第二查询执行计划;以及
所述执行引擎模块还包括常驻磁盘执行引擎,其中所述可重配置硬件执行引擎被安排和配置为处理所述第一查询执行计划,并且所述常驻磁盘执行引擎被安排和配置为处理所述第二查询执行计划。
5.如权利要求1所述的***,其中:
所述混合查询引擎被安排和配置为将所述查询执行计划划分为第一查询执行计划、第二查询执行计划和第三查询执行计划;以及
所述执行引擎模块还包括主内存执行引擎和常驻磁盘执行引擎,其中所述可重配置硬件执行引擎被安排和配置为处理所述第一查询执行计划,所述主内存执行引擎被安排和配置为处理所述第二查询执行计划,并且所述常驻磁盘执行引擎被安排和配置为处理所述第三查询执行计划。
6.如权利要求5所述的***,其中:
所述混合查询引擎包括优化器,其被安排和配置为生成所述第一查询执行计划、所述第二查询执行计划和所述第三查询执行计划,其中所述优化器包括:
成本估计器,其被安排和配置为基于由所述例程管理模块提供的元数据,评估用于所述第一查询执行计划、所述第二查询执行计划和所述第三查询执行计划的可替换操作器的成本;和
执行计划器,其被安排和配置为构造所述第一查询执行计划、所述第二查询执行计划和所述第三查询执行计划。
7.如权利要求5所述的***,还包括:
存储器管理模块,其在逻辑上耦接到所述混合查询引擎以及所述执行引擎模块,并且被安排和配置为与多个存储资源交互以及优化在所述执行引擎模块和多个存储资源之间的数据的分布。
8.如权利要求5所述的***,还包括:
调度器,其在逻辑上耦接到所述混合查询引擎、所述执行引擎模块和所述例程管理模块,并且被安排和配置为接收所述查询执行计划以及调度所述混合可重配置执行引擎、所述主内存执行引擎和所述常驻磁盘执行引擎上的操作。
9.如权利要求5所述的***,还包括:
通信管理模块,其在逻辑上耦接到所述执行引擎模块,并且被安排和配置为:
协调与所述可重配置硬件执行引擎和所述可重配置结构的通信;
协调所述执行引擎模块和多个数据源之间的通信;以及
使用一个或多个交互接口协调与终端用户的通信。
10.一种***,包括:
例程库,其被安排和配置为存储和维护一个或多个硬件库、一个或多个软件库和元数据;
混合查询引擎,其被安排和配置为接收查询,解析查询,使用元数据和来自所述硬件库和软件库中的至少一个的操作器来计算查询执行计划并且输出该查询执行计划,其中所述查询执行计划被划分为多个子执行计划;
例程管理模块,其在逻辑上耦接到所述例程库以及所述混合查询引擎,并且被安排和配置为将来自所述例程库的元数据和操作器提供给所述混合查询引擎;和
执行引擎模块,其在逻辑上耦接到所述混合查询引擎,并且被安排和配置为接收所述子执行计划,该执行引擎模块包括:
具有可重配置结构的可重配置硬件执行引擎,其中所述可重配置硬件执行引擎被安排和配置为处理所述子执行计划中的一个;
主内存执行引擎,其被安排和配置为处理所述子执行计划中的一个;和
常驻磁盘执行引擎,其被安排和配置为处理所述子执行计划中的一个;
存储器管理模块,其在逻辑上耦接到所述混合查询引擎和所述执行引擎模块,并且被安排和配置为与多个存储资源交互以及优化在所述执行引擎模块和所述多个存储资源之间的数据的分布;和
通信管理模块,其在逻辑上耦接到所述执行引擎模块,并且被安排和配置为:
协调与所述可重配置硬件执行引擎和所述可重配置结构的通信;
协调在所述执行引擎模块和多个存储数据的数据源之间的通信;以及
协调使用一个或多个交互接口与终端用户的通信。
11.如权利要求10所述的***,其中,所述混合查询引擎包括:
解析器,其被安排和配置为接收查询,以及检查与该查询相关的代码以便进行语法更正;
重写器,其被安排和配置为将所述查询重写为规范形式;和
优化器,其被安排和配置为接收所述规范形式并且生成所述子执行计划。
12.如权利要求11所述的***,其中,所述优化器包括:
成本估计器,其被安排和配置为基于由所述例程管理模块提供的元数据来评估用于所述子执行计划的可替换操作器的成本;和
执行计划器,其被安排和配置为构造所述子执行计划。
13.如权利要求10所述的***,其中存储在所述例程库中的元数据包括关于存储在所述硬件库和所述软件库中的操作器的信息,其中所述关于操作器的信息包括性能特征、参数、端口带宽和布置约束条件。
14.如权利要求10所述的***,还包括:
调度器,其在逻辑上耦接到所述混合查询引擎、所述执行引擎模块和所述例程管理模块,并且被安排和配置为接收所述子执行计划以及调度所述混合可重配置执行引擎、所述主内存执行引擎和所述常驻磁盘执行引擎上的操作。
15.如权利要求10所述的***,其中所述存储器管理模块包括:
高速缓存管理模块,其被安排和配置为维护数据库高速缓存的状态与数据库的状态之间的一致性;
数据访问管理模块,其被安排和配置为控制对与所述存储器管理模块接口的数据源的访问,其中所述数据源包括数据、索引数据、数据字典和日志;和
数据转移模块,其被安排和配置为将数据从所述存储资源中的一个移动和复制到所述存储资源中的另一个。
16.如权利要求10所述的***,还包括一个或多个协同仿真工具。
17.如权利要求10所述的***,其中,所述可重配置硬件执行引擎还包括:
重配置控制器,其被安排和配置为配置所述例程库中存储的操作器的硬件算法;和
执行控制器,其被安排和配置为接收所述子执行计划中的一个并控制其在可重配置结构上的执行。
18.一种方法,包括:
接收查询;
解析该查询;
使用元数据和来自硬件库和软件库中的至少一个的操作器来计算查询执行计划;以及
使用具有可重配置结构的可重配置硬件执行引擎来处理所述查询执行计划。
19.如权利要求18所述的方法,还包括:
将所述查询执行计划划分为第一查询执行计划和第二查询执行计划,其中,处理所述查询执行计划包括使用所述可重配置硬件执行引擎处理第一查询执行计划,以及使用主内存执行引擎处理所述第二查询执行计划。
20.如权利要求18所述的方法,还包括:
将所述查询执行计划划分为第一查询执行计划和第二查询执行计划,其中,处理所述查询执行计划包括使用所述可重配置硬件执行引擎处理所述第一查询执行计划,以及使用常驻磁盘执行引擎处理所述第二查询执行计划。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/103,426 | 2008-04-15 | ||
US12/103,426 US7974967B2 (en) | 2008-04-15 | 2008-04-15 | Hybrid database system using runtime reconfigurable hardware |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101587491A true CN101587491A (zh) | 2009-11-25 |
Family
ID=40934888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2009101348923A Pending CN101587491A (zh) | 2008-04-15 | 2009-04-15 | 使用运行时可重配置硬件的混合数据库*** |
Country Status (3)
Country | Link |
---|---|
US (1) | US7974967B2 (zh) |
EP (1) | EP2110761A3 (zh) |
CN (1) | CN101587491A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102243646A (zh) * | 2010-05-12 | 2011-11-16 | 微软公司 | 使用语句执行计划获取依赖性元数据 |
CN103177061A (zh) * | 2011-12-23 | 2013-06-26 | Sap股份公司 | 分区表中的唯一值估计 |
CN104866521A (zh) * | 2014-02-20 | 2015-08-26 | 株式会社特迈数据 | 处理具有混合存储器的数据库中的查询的设备和方法 |
CN109891402A (zh) * | 2016-10-28 | 2019-06-14 | 微软技术许可有限责任公司 | 可撤销和在线模式转换 |
WO2020135613A1 (zh) * | 2018-12-26 | 2020-07-02 | 中兴通讯股份有限公司 | 数据查询处理方法、装置及***、计算机可读存储介质 |
CN111670436A (zh) * | 2018-02-01 | 2020-09-15 | 微软技术许可有限责任公司 | 数据库*** |
CN112148650A (zh) * | 2020-09-30 | 2020-12-29 | Oppo广东移动通信有限公司 | 一种存储控制器的设计方法、装置、设备以及存储介质 |
CN113127441A (zh) * | 2019-12-31 | 2021-07-16 | 华为技术有限公司 | 一种动态选择数据库组件的方法及自组装数据库管理*** |
US11966385B2 (en) | 2018-02-01 | 2024-04-23 | Microsoft Technology Licensing, Llc. | Database transaction log writing and integrity checking |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101608495B1 (ko) * | 2009-12-11 | 2016-04-01 | 삼성전자주식회사 | 데이터 스트림 처리 장치 및 방법 |
US8745037B2 (en) * | 2009-12-17 | 2014-06-03 | Microsoft Corporation | Exploiting partitioning, grouping, and sorting in query optimization |
US9665620B2 (en) * | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US8239363B2 (en) * | 2010-06-11 | 2012-08-07 | Microsoft Corporation | Query context selection using graphical properties |
US8903805B2 (en) * | 2010-08-20 | 2014-12-02 | Oracle International Corporation | Method and system for performing query optimization using a hybrid execution plan |
US8356027B2 (en) * | 2010-10-07 | 2013-01-15 | Sap Ag | Hybrid query execution plan generation and cost model evaluation |
US9495398B2 (en) | 2011-02-18 | 2016-11-15 | International Business Machines Corporation | Index for hybrid database |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
US9600522B2 (en) * | 2012-08-20 | 2017-03-21 | Oracle International Corporation | Hardware implementation of the aggregation/group by operation: filter method |
US8977637B2 (en) | 2012-08-30 | 2015-03-10 | International Business Machines Corporation | Facilitating field programmable gate array accelerations of database functions |
US9218373B2 (en) * | 2012-10-10 | 2015-12-22 | Business Objects Software Ltd. | In-memory data profiling |
US10114908B2 (en) | 2012-11-13 | 2018-10-30 | International Business Machines Corporation | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data |
US9053210B2 (en) | 2012-12-14 | 2015-06-09 | Microsoft Technology Licensing, Llc | Graph query processing using plurality of engines |
US10296508B2 (en) * | 2013-06-06 | 2019-05-21 | Sap Se | Systems and methods to manage online analytical and transactional processing for an in-memory columnar database |
US10909113B2 (en) | 2013-07-31 | 2021-02-02 | Sap Se | Global dictionary for database management systems |
US10162858B2 (en) | 2013-07-31 | 2018-12-25 | Sap Se | Local versus remote optimization in encrypted query processing |
CA3092699C (en) | 2013-12-06 | 2023-07-25 | Ab Initio Technology Llc | Source code translation |
US9652497B2 (en) * | 2014-04-23 | 2017-05-16 | International Business Machines Corporation | Processing queries using hybrid access paths |
US20160154812A1 (en) * | 2014-12-02 | 2016-06-02 | Altibase Corp. | Hybrid database management system |
US20150379083A1 (en) * | 2014-06-25 | 2015-12-31 | Microsoft Corporation | Custom query execution engine |
US11487771B2 (en) | 2014-06-25 | 2022-11-01 | Microsoft Technology Licensing, Llc | Per-node custom code engine for distributed query processing |
US11461319B2 (en) * | 2014-10-06 | 2022-10-04 | Business Objects Software, Ltd. | Dynamic database query efficiency improvement |
US10437819B2 (en) | 2014-11-14 | 2019-10-08 | Ab Initio Technology Llc | Processing queries containing a union-type operation |
US10810200B2 (en) | 2015-01-07 | 2020-10-20 | International Business Machines Corporation | Technology for join processing |
US10417281B2 (en) | 2015-02-18 | 2019-09-17 | Ab Initio Technology Llc | Querying a data source on a network |
WO2016146057A2 (en) * | 2015-03-16 | 2016-09-22 | Huawei Technologies Co., Ltd. | A method and a plan optimizing apparatus for optimizing query execution plan |
US9778918B2 (en) * | 2015-09-01 | 2017-10-03 | Sybase, Inc. | Native access plan source code generation |
US10885032B2 (en) * | 2016-11-29 | 2021-01-05 | Sap Se | Query execution pipelining with shared states for query operators |
US10838959B2 (en) * | 2017-04-10 | 2020-11-17 | Sap Se | Harmonized structured query language and non-structured query language query processing |
CN113874832A (zh) * | 2019-03-22 | 2021-12-31 | 华为技术有限公司 | 使用具有规范形式的逻辑查询步骤进行查询处理 |
US11138165B2 (en) * | 2019-04-04 | 2021-10-05 | Sap Se | Cost heuristic for filter evaluation |
US11163766B2 (en) * | 2019-04-04 | 2021-11-02 | Sap Se | Unique key lookup with additional filter |
US11176133B2 (en) * | 2019-04-04 | 2021-11-16 | Sap Se | Filter evaluation for table fragments |
US11093223B2 (en) | 2019-07-18 | 2021-08-17 | Ab Initio Technology Llc | Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods |
US11782921B2 (en) * | 2021-11-08 | 2023-10-10 | Google Llc | Columnar cache query using hybrid query execution plan |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7036106B1 (en) * | 2000-02-17 | 2006-04-25 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6665710B1 (en) * | 2000-05-11 | 2003-12-16 | International Business Machines Corporation | Searching local network addresses |
US7010521B2 (en) * | 2002-05-13 | 2006-03-07 | Netezza Corporation | Optimized database appliance |
EP1649390B1 (en) * | 2003-07-07 | 2014-08-20 | IBM International Group BV | Optimized sql code generation |
-
2008
- 2008-04-15 US US12/103,426 patent/US7974967B2/en active Active
-
2009
- 2009-04-14 EP EP09005306A patent/EP2110761A3/en not_active Ceased
- 2009-04-15 CN CNA2009101348923A patent/CN101587491A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102243646A (zh) * | 2010-05-12 | 2011-11-16 | 微软公司 | 使用语句执行计划获取依赖性元数据 |
CN102243646B (zh) * | 2010-05-12 | 2016-05-11 | 微软技术许可有限责任公司 | 使用语句执行计划获取依赖性元数据 |
CN103177061A (zh) * | 2011-12-23 | 2013-06-26 | Sap股份公司 | 分区表中的唯一值估计 |
CN103177061B (zh) * | 2011-12-23 | 2017-08-08 | Sap欧洲公司 | 分区表中的唯一值估计 |
CN104866521A (zh) * | 2014-02-20 | 2015-08-26 | 株式会社特迈数据 | 处理具有混合存储器的数据库中的查询的设备和方法 |
CN104866521B (zh) * | 2014-02-20 | 2018-10-12 | 株式会社特迈数据 | 处理具有混合存储器的数据库中的查询的设备和方法 |
CN109891402A (zh) * | 2016-10-28 | 2019-06-14 | 微软技术许可有限责任公司 | 可撤销和在线模式转换 |
CN109891402B (zh) * | 2016-10-28 | 2023-03-28 | 微软技术许可有限责任公司 | 可撤销和在线模式转换 |
CN111670436A (zh) * | 2018-02-01 | 2020-09-15 | 微软技术许可有限责任公司 | 数据库*** |
CN111670436B (zh) * | 2018-02-01 | 2024-03-26 | 微软技术许可有限责任公司 | 数据库*** |
US11966385B2 (en) | 2018-02-01 | 2024-04-23 | Microsoft Technology Licensing, Llc. | Database transaction log writing and integrity checking |
WO2020135613A1 (zh) * | 2018-12-26 | 2020-07-02 | 中兴通讯股份有限公司 | 数据查询处理方法、装置及***、计算机可读存储介质 |
CN113127441A (zh) * | 2019-12-31 | 2021-07-16 | 华为技术有限公司 | 一种动态选择数据库组件的方法及自组装数据库管理*** |
CN112148650A (zh) * | 2020-09-30 | 2020-12-29 | Oppo广东移动通信有限公司 | 一种存储控制器的设计方法、装置、设备以及存储介质 |
CN112148650B (zh) * | 2020-09-30 | 2022-07-19 | Oppo广东移动通信有限公司 | 一种存储控制器的设计方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20090259644A1 (en) | 2009-10-15 |
EP2110761A2 (en) | 2009-10-21 |
US7974967B2 (en) | 2011-07-05 |
EP2110761A3 (en) | 2009-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101587491A (zh) | 使用运行时可重配置硬件的混合数据库*** | |
US6801903B2 (en) | Collecting statistics in a database system | |
EP3740880A1 (en) | Pick and applicator for use with a stringed instrument | |
Boja et al. | Distributed parallel architecture for" big data | |
US10733184B2 (en) | Query planning and execution with source and sink operators | |
US20100198778A1 (en) | Method and system for collecting and distributing user-created content within a data-warehouse-based computational system | |
CN106663224A (zh) | 用于机器学习模型评估的交互式界面 | |
CN110019251A (zh) | 一种数据处理***、方法及设备 | |
WO2015030767A1 (en) | Queries involving multiple databases and execution engines | |
US20180018370A1 (en) | Query processing using primary data versioning and secondary data | |
Bala et al. | A Fine‐Grained Distribution Approach for ETL Processes in Big Data Environments | |
US11803550B2 (en) | Workload-aware column imprints | |
US10860579B2 (en) | Query planning and execution with reusable memory stack | |
Gupta | Real-Time Big Data Analytics | |
Huang et al. | PFPMine: A parallel approach for discovering interacting data entities in data-intensive cloud workflows | |
US10157419B1 (en) | Multi-factor risk modeling platform | |
US10929395B2 (en) | Data modification in hypothetical planning | |
Baumbach et al. | Accelerating Data Transformation with IBM DB2 Analytics Accelerator for z/OS | |
CN109828983A (zh) | Pg数据库处理方法、装置、电子设备及存储介质 | |
Patel | Scalable big data modelling | |
US20240256426A1 (en) | Runtime error attribution for database queries specified using a declarative database query language | |
Khatiwada | Architectural issues in real-time business intelligence | |
WO2024156113A1 (en) | Runtime error attribution for database queries specified using a declarative database query language | |
Oduor | Using in-memory Computing to Provide Real-time and Actionable Sales Insights | |
US20240184764A1 (en) | Relationship analysis using vector representations of database tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20091125 |