并行数据库系统

2024-10-10

并行数据库系统(通用7篇)

并行数据库系统 篇1

1. 研究背景

现在的主流并行数据库都是基于无共享架构, 在制定查询计划阶段, 是采用完全相同的模式, 不同之处是查询优化的策略和路径生成过程中所考虑的代价模型不相同。在制定好查询计划后, coordinator需要将查询计划发送给需要执行的节点进行查询的执行, 此时两种策略的执行方式不同, 但对结果的回收机制相同:各节点完成自身的查询计划后, 会将结果返回给coordinator进行最后的汇总。

通过分析, 发现根据查询计划的发送方式不同, 在制定查询计划时存在的问题:采用将SQL语句重写后发送的方式, 优点是各节点是一个独立的数据库在运行, 各节点接收到完整的SQL语句 (多条子语句) , 会遵循处理一条SQL语句的标准流程执行, 即对子SQL语句进行编译、优化和路径生成, 这样一来对单节点来说所制定出查询计划是最优的, 而coordinator上所制定的全局查询计划则会被改变, 即实际运行在各个节点上的查询相对于全局很可能不是最优的, 因为各节点无法知道全局节点的信息, 在制定本节点的查询计划时自然不会考虑与其他节点的通信代价, 即使考虑与其他节点的通信代价, 也无法将不与它通信的节点的通信代价考虑在内, 因此基于这个问题进行了调查。

2. 通信代价的分析

2.1 并行数据库的通信种类

在并行数据库系统下, 节点间通信包括以下三种情景:coordinator向各节点发送查询计划、各节点之间的join操作, 各节点向coordinator返回查询结果。

Coordinator向各节点发送查询计划和对结果的回收是在查询结果的执行前和查询结果的生成后, 这部分的通信对查询计划的优化没有任何影响, 因此通信的重点是如何优化join连接操作的通信代价。

在并行数据库系统下, 数据的存储策略主要包括Hash划分策略、Range划分策略以及round-bin (循环) 分区策略, 部分并行数据库系统支持局部划分策略。由于采用局部划分策略, 相当于在单节点的数据库上执行SQL命令, 没有并行因素, 与所研究的问题无关, 这里不做考虑。若采用Hash、Range和round-bin划分策略, 每个节点都存放数据表的一部分数据, 当并行执行时, 每个节点只对本节点上的数据进行操作, 当需要进行join操作时, 需要保证join操作的两个表中至少有一个是完整表, 而由于数据库本身的数据划分策略, 每个节点上的数据都不是完整的, 因此必须进行数据的迁移操作, 及各节点之间需建立通信并发送数据, 保证建立一个完整的数据表。

2.2 Join代价评估

在不同的参考文献和书中, 对join方法都各自的描述, 下面将这些方面描述如下:在并行数据系统下, 两节点的join操作通常包括两部分:发送端的代价和接受端的代价。

在一次通信过程中, 对数据的发送者既需要计算传输的启动代价也要计算数据的传输代价, 而对数据的接收者只需计算传输启动的代价。传输代价包括两个参数mp和ml, 它们参数都基于page level。mp表示启动报文传输的时间代价, ml表示报文传输的时间代价。

计算发送者的总代价的方法为:

为描述并行数据库系统的信息, [1]通过建立一个Libraries存储环境变量, 主要包括四种环境变量:Architecture Library数据库系统的硬件环境、System Library模拟操作和事物系统、Opetator and Access Method Library模拟算法、Data Base Profile Libaray管理数据库调度策略。将代价分为三部分:CPU时间代价、内存时间代价和网络通信时间代价, 并将网络代价的计算包含:发送包的时间 (Smt) 、接收包的时间 (Rmt) 和传输包的时间 (Ptt) , 但是并没有提出如何评估这些时间代价。[2]提出一种并行数据库系统下的代价估计模型, 将查询优化划分为两部分:the metrics和the libraries部分。在计算反应时间上定义了四种类型:local response time, effective time, distribution (partition) time, communication time, 其目的是根据并行数据库的分布策略, 在计算join操作时可能只计算几类反应时间, 本文这样分类的目的应该是对计算的细化。通过阅读以上的代表性的书籍和论文, 发现在并行数据库系统下, 将通信代价考虑在查询优化中已被多处提出, 但现有的开源数据库系统Gridsql和Postgres-xc都没有实现 (此点已被确认) ;但是现有文章都没有提出一个具体的通信代价计算模型, 论文中对这一部分的计算都是提出要考虑的变量, 打算做的工作就是提出一种数学模型计算各节点之间的通信代价。

3. 解决思路

对于问题一将SQL语句分解而无法计算通信时间的问题, 需要在coordinator节点上建立全局信息表, 全局信息表除了要包含并行架构下的硬件资源外还要记录当前运行事物的状态, 即每个事物开始和结束后都要向coordinator提交一个请求用来修改全局表中当前事物的运行状态。

结合问题一和问题二提出一种并行数据库系统下的优化方法, 该方法满足不论是将SQL语句分开发送还是以执行树的形式发送都适用。具体工作如下:

(1) 建立一个全局信息表。该表主要包含3部分:全局硬件信息、全局网络构建、各节点状态信息。硬件信息用来估算各节点的处理延迟, 全局网络用来计算通信时的代价, 各节点状态信息用来描述当前系统中运行事物的状态。

(2) 选择概率统计模型。概率统计模型用来计算当处理多个写事物时, 写写之间发生冲突的概率。使用概率分布模型统计出在当前系统下, 发生n次写冲突的概率, 对于不同的冲突次数, 应该在coordinator节点上估计出处理这些冲突所需要的等待时间, 将这部等待的代价加入查询优化的代价估计中。

(3) 当发生冲突后, 根据步骤2中概率的大小, 和全局信息表中硬件信息估算出处理冲突的时间, 将这部时间加入到查询路径的生产阶段, 此部分的代价可能改变执行树的结构, 从而达到优化的效果。

4. 结论

本文通过分析并行数据库系统的查询优化的制订, 指出存在的弊端, 提出对应问题的解决方案, 为今后查询优化的制订提出技术支持。

参考文献

[1]F.Andrès et al.“A Multi-Environment Cost Evaluator for Parallel Database Systems”, 2nd Intl.Symp.on Database Systems for Advanced Applications, DASFAA’91, Tokyo, April 1991.

[2]HAMEURLAIN, A., et al., "A Cost Evaluator for Parallel Database Systems", 6th Intl.Conf.on Database and Expert Systems Applications, DEXA'95, London, 4-8 Sept.1995, LNCS, n978, pp.146-156.

并行数据库系统 篇2

在突防作战研究中,详细的导引头状态和回波数据是开展研究的前提和基础。但作为作战装备,导引头没有全面的数据采集功能,仅提供简单的状态指示,无法全面反映自身的工作状态和战场的电磁环境。

为解决这一问题,本文设计了单脉冲雷达并行高速数据采集系统,可以实现发射机、接收机和天线系统数据的实时、同步采集,全面反映导引头的工作状态和回波波形。该系统具有如下特点:

(1)实时采集并同步存储发射信号、和、差通道回波信号、航向控制电压等导引头相关数据;

(2)实现连续长时的精采(连续采集每个PRI的回波);

(3)数据回放,包括波形图和全景视图(PPI);

(4)分布式处理结构,实现采集、处理、显示、存储模块的独立工作,减轻处理器负担,保证数据采集完整、实时显示流畅。

系统的总体框图如图1。

系统在功能上可分为信号转换组件、并行采集组件、同步控制模块和分布式处理模块。雷达工作过程中,发射信号、接收机中频信号等高速信号和天线航控电压(指示天线的朝向)等低速信号经信号转换组件的放大、滤波和去直流偏置后馈送到并行采集组件,后者对以上信号进行采样和预处理,将高、低速信号数据打包后经PCI总线传递到分布式处理模块进行显示、存储和实时处理;同步控制模块负责采集系统与雷达系统协调工作,按照用户需求完成采集和雷达系统的同步控制。

1 信号转换与适配

信号转换组件实现导引头信号的适配与变换。由于不同型号的导引头在工作体制和系统结构上有较大差别,导致中频信号的特征参数,视频信号的幅度、极性,天线方向信号的输出形式等参数都不尽相同。考虑到系统的通用性,信号转换组件采用了模块化设计思路,即将组件的功能进行分块和打包,将联系紧密的功能封装成可更换(调谐)的模块,以满足不同应用场合的需要。

导引头大多采用磁控管产生发射信号,由于器件自身结构和信号产生模式无法对信号进行精确控制,磁控管发射机输出的探测信号在波形和稳定性上都不理想,后期信号处理需要采集发射信号进行比对。发射信号采集的关键问题是功率适配和采样时序。大多数导引头提供发射信号检测接口,一般是通过定向耦合器引出。由于不同雷达的耦合输出功率不一样,因此信号转换组件采用了大功率容量的可变增益结构,并增加了限幅环节保护后级电路。在同步控制组件的协调和导引头同步信号的触发下,组件打开采样波门,采集发射信号。

导引头的天线方向信号一般没有数字形式的输出,而是以航控电压这种模拟信号表示。天线组合输出的航控电压是一个双极性大动态范围的电压信号,并且叠加了较强的纹波,如果直接采样将无法获得准确、稳定的数据。为保证采样质量,在航控电压的引出端采用具有宽电压范围的低噪声放大器ADA4084-2构建二阶有源滤波网络[1]。

该网络完成信号的低通滤波,其截止频率为100 kHz。滤波后的信号经过分压后馈送到AD7663完成信号采集。AD7663是16 bit的双极性ADC,对低速信号有很高的采样精度,并能最大限度地降低纹波的影响[2]。

2 并行采集与预处理

并行采集组件对和、差通道的中频IQ信号、视频检波脉冲和天线航控电压共6路信号进行同步采样,其中航控电压通道为低速采样,其余为高速采样。由于通道多、数据量大,并且采样速率不一致,要满足持续精采的设计要求,必须整体考虑采样频率、存储器容量和PCI端口速率之间的配合关系,并设计高效的FPGA逻辑实现数据的实时预处理。

2.1 采样频率选择

导引头中频频率较高,如果采用常规的奈奎斯特采样,则采样频率接近100 MHz。在这一速率下,5通道同步采集每秒可产生800 MB的数据。大量的数据对系统的缓冲存储能力(RAM容量)和数据传输速度(PCI传输速率)都有较高要求。解决这一问题有两种方案:

(1)缩短采样时长。

这种方案采用传统的奈奎斯特采样,同时缩短采样时长,从而将生成的数据量降低到PCI接口可以承受的水平。这种方案的优势是可以完整采集中频的所有频率成分,最大限度地保留信号特征;缺点是将导致时域探测能力下降:由于采样时域波门变窄,可观测的时域信息少;并且为了采集到敏感数据,需要额外设计波门同步逻辑,根据导引头输出的距离信息自动设置采样波门,增加了系统的复杂度和研制工作量。这一方案实际上是以牺牲时域信息为代价降低数据量。

(2)降低采样频率。

将采样频率降低到奈奎斯特频率以下,从而在保持采样时域波门宽度的同时减小数据量[3]。这一方案的的优点是保证了回波信号时域信息的完整性;不足是信号频谱有重叠,无法保留所有的频率成分,实际上是以牺牲频域信息为代价降低数据量。

由于导引头内部有自动频率跟踪机构,接收机输出的中频信号是一固定频点的窄带信号,因此无需保留(采集)完整的频谱;对脉冲导引头而言,时域波形包含了目标的距离、功率等重要信号,较宽的时域采样波门可以获得更多的战场环境信息(如干扰信号、地物杂波等),有利于后续分析。基于这一考虑,并行采集系统利用带通采样原理,降低采样频率。在中频信号为fc、带宽为B时,采样频率fs可由带通采样公式确定[4]:

{fs2B;2fc-Bmfs2fc+Bm+1

带入导引头参数得出带通采样频率范围为(26.6—36)MHz,综合考虑系统数据处理能力和事后分析对波形分辨力的要求,确定采样频率为36 MHz

2.2 异步数据传输

系统中数据的采集和传输在不同的时钟域进行:数据采样由FPGA内部时钟驱动,而数据的传输则由PCI读时钟驱动;这两个时钟频率不同,并且没有必然的联系,因此FPGA与PCI接口的数据交换是异步方式。协调好数据异步传输中的时序,尽量避免亚稳态造成的传输错误是采样逻辑的难点和重点[5]。

鉴于系统内FPGA提供了足够的存储空间,我们采用FIFO解决异步时钟域的数据传输问题。对于异步FIFO而言,其读信号和写信号处于不同的时钟域,因此如何准确判断FIFO的空和满状态成为逻辑设计的关键[6]。

数据读写过程中,如果FIFO处于空状态,但读取方错误地判断为非空而继续读操作,则将导致下溢出(underflow),读取方将读入一个无效数据,并破坏读写指针的同步;同样,如果FIFO处于满状态,但写入方错误地判断为非满而继续写操作,则将导致上溢出(overflow),写入方将覆盖一个尚未被读取的有用数据,并破坏读写指针的同步。由于空、满标志的产生依赖于读指针和写指针,而这两个指针产生于不同的数据域,极可能由于亚稳态的影响而导致地址的传递发生错误,从而影响读、写状态的正确判断,最终导致数据读写出错。

目前解决读、写地址同步中的亚稳态问题有两种主要技术,即采用格雷码指针和采用握手机制。

格雷码是一种特殊的编码,其相邻的码字之间只有一位发生变化。格雷码相对于普通二进制码的优势是显而易见的:二进制码相邻的码字之间可能有多位发生变化,如由01111111变到10000000意味着所有8位数据均发生了变化,这在亚稳态的异步数据传输中非常容易出错;而格雷码相邻码字之间仅有一位发生变化,极大地降低了数据出错的风险。但值得注意的是,格雷码只能降低数据出错的风险,并不能将之完全消除。这一方式适用于FIFO较小的场合,实现了最大的RAM利用率和传输速度。

握手机制可以完全消除亚稳态造成的传输错误。虽然在空满判断时会消耗更多的时钟周期,但对于采用大容量FIFO的系统而言,这一时延是可以接受的[7]。由于采集系统采用了32768Byte的大容量RAM,故逻辑设计选择了握手机制解决亚稳态传输问题。

如图3,FIFO以双口RAM为中心,采用独立的模块产生读写地址,同步模块则负责按照握手机制实现地址在不同时钟域间的传递。FIFO逻辑的设计难点在于利用握手机制实现地址的无差错传送,实现空、满状态的正确判断,这一逻辑的实现可简要描述如下:

对于空标志的判断,写入方将写指针存放到写地址寄存器,同时向读取方的同步模块发送就绪信号(Wr_ready);读取方收到Wr_ready后从写地址寄存器读取写指针;成功读取后,读取方将写地址传递到空标志产生逻辑进行比较判断,同时向写入方发送完成信号(Wr_ack);写入方收到Wr_ack后用当前的写地址更新写地址寄存器。在写入方收到Wr_ack前,写地址寄存器的内容保持不变,保证了数据传输的正确性。满标志的判断逻辑与空标志相同。

下面分析握手过程对FIFO的读写产生的影响:

握手导致的延迟会降低RAM的空间利用率,但同时保证了数据传输的正确性:当RAM为空时,用于比较的写指针是读取方通过握手机制从写时钟域读取的,由于握手需要消耗多个时钟周期,故写地址已经发生了变化(写入方已经向RAM写入了数据),用于比较的写指针已经不是当前的写地址了,而RAM此时已经为非空;因此读取方将判定RAM为空(即判断错误)而停止读取,同时RAM中也已经有数据,故不会导致下溢出(underflow)。同样,判断RAM是否为满的逻辑也不会导致上溢出(overflow)。握手机制带来的延时可能会导致RAM在还有一定空间时停止写数据,或在还有少量数据时停止读取,这降低了RAM空间的利用率,但保证了传递的数据真实有效。实测显示,系统中RAM容量的平均利用率约为99.973%,其读写速度满足设计要求。

3 分布式系统结构

系统以36 MHz的速率进行并行采样,其数据生成速率接近PCI总线的传输速率极限。实际应用中发现,主机必须持续读取PCI接口才能保证数据的完整传输,而这一方式将导致主机无法完成显示、存储和数据处理等其他任务。为了在保持高速率采集的同时实现数据的实时显示、存储和数据处理,我们采用了广播内存网络。

广播内存网络是一种高性能集线器配置网络,适用于高数据传输负荷的实时网络系统[8]。广播内存技术使得网络内的所有节点共享网络内存,节点写入自身RAM的数据也同时广播到网络的其他节点,各节点间接收数据的延迟不大于10 μs。系统的拓扑结构如图:

如图5所示,系统采用星型拓扑结构,所有节点均直接连接到中心Hub上。采集节点不断地通过PCI接口读取数据并存储到网络内存,由中心Hub负责将数据广播到所有节点。由于写内存的速率极高,因此采集节点有足够的时间读取PCI端口,保证数据读取速度;广播内存的底层软件则保证了其他节点能够同时、准确地收到广播数据,实现所有功能节点的同步工作。

4 测试结果

图6和图7是在采集过程中实时显示的导引头数据,图8是回放数据。从PPI视图可以看出,系统完整地采集了导引头的数据,没有出现丢帧的情况;从波形图可以看出,采集系统36 MHz的采样率可以精细刻画波形细节,满足后续处理要求;系统采用分布式结构同时实现了采集、显示、存储等多项功能,满足设计要求。目前,该系统已应用于部队训练中,取得了良好效果。

参考文献

[1] Analog Devices,Inc.ADA4084-2 Data Sheet Rev A2,012—2

[2] Analog Devices,Inc.AD7663 Data Sheet Rev B,2003—5

[3] Hill G.The benefits of undersampling.Electronic Design,1994

[4] Vaughan R,Scott N,White D.The theory of abndpass sampling.IEEE Trans.on Signal Processing1,991;9:1973—1984

[5]张毅,周成英.高速同步FIFO存储器在数字信号源中的应用.电子技术,2003;(11):48

[6]常胜,黄启俊.基于异步FIFO实现不同时钟域间数据传递的设计.电子设计应用2,004;(8):57—59

[7]黄隶凡,郑学仁.FPGA设计中的亚稳态研究.微电子学,2011;41(2):266—267

并行数据库系统 篇3

测井数据是利用井下仪器、地面设备获得的一种测井资料, 利用测井曲线可以预测含有原油的砂体分布, 掌握储层物性参数空间分布规律, 该数据的处理在石油勘探与开发过程中占有重要地位。目前, 测井曲线的处理大多由手工完成, 费工费时。通常, 一条中等规模的测井曲线, 需要10个以上的人时处理, 而国外基于UNIX工作站开发的测井曲线处理系统, 不但操作复杂, 脱离我国实际生产情况, 且价格过于昂贵, 由于此类系统通常采用单机处理模式, 信息检索和处理速度、系统容量低下, 严重制约了油田开发数据处理的进程。因此, 开发基于Windows平台的, 适合我国实际生产需求的分布式测井数据自动处理系统是非常必要的。

1 系统模型

测井数据处理的主要工作是确定石油储层的性质。储集层是指具有储集空间, 储集空间又相互连通的岩层。本系统主要处理的测井参数有储层厚度、孔隙度、油气饱和度、渗透率等等, 图1是经过分析得到的数据流图。其中现场生产单位给出的测井数据分为新老两个系列。

新系列经验公式的变量有:厚度外 (米) ;三側向 (黑) /Rlls;三側向 (红) /Rlld;密度/Den;声波时差/Hac;井径/Cal;微电极 (黑) /Rmg;微电极 (红) /Rmn;自然电位/Sp;伽玛/Gr。

老系列经验公式的变量有:厚度外 (米) ;0.25米/R025;0.45米/R045;三側向 (黑) /Rlls;三側向 (红) /Rlld;声波时差/Hac;井径/Cal;微电极 (黑) /Rmg;微电极 (红) /Rmn;自然电位/Sp。

该系统通过对原始数据读取, 绘制曲线, 将数据导入内存;然后根据分层数据表对原始数据进行读值操作, 得到读值曲线;最后根据经验公式计算出参数数据;在整个过程中, 操作员都可以对当前数据进行处理, 调整预设参数, 人工干预数据的生成过程[2,3,4]。

2 关键技术

2.1 高速分布式并行检索

分布式并行体系结构下的测井数据的检索通常分为两个步骤, 其方法与系统内部结构如图2所示。

(1) 异地检索所要处理的测井曲线所在位置

注意:尽管单个测井曲线数据文件可以被存放在磁带或者硬盘中, 但运算时为了加快处理速度, 通常需要将其导入内存。为此, 在从单机中读出测井数据进行扩散的同时, 硬盘存储该数据的节点自动记录各条曲线的扩散信息 (包括文件名称、曲线名称、源节点、目的节点、目前状态等) ;同时, 由于此类信息的数据项较多, 且使用频繁, 在此采用了“分布式哈希”DHT (Distributed Hash Table) 算法, 计算求得该曲线扩散的目标节点, 并将其主动发布到该节点上;目标节点接到扩散信息后, 将其纳入本地测井曲线记录表中。当其他节点需要该曲线信息时, 首先从本地记录表中检索曲线所在的位置, 如果有对应的记录, 则通过千兆以太网, 从对应节点的内存 (而不是硬盘) 中获得该曲线的最新数据。如果没有该项记录, 则利用曲线的文件名等元数据, 通过DHT算法得出该曲线的扩散记录所在的目标节点;进而向目标节点发出查询信息;目标节点接到信息后, 查询本地记录表, 发送对应的曲线数据给请求节点。这种方法从系统整体上降低了检索的开销。

(2) 测井曲线特定层段的检索

当本地/异地需要从特定曲线中检索层段数据时, 如何从数万条相关记录中检索有用信息一直困扰着研发人员。根据测井曲线自身的特性 (沿y轴反方向生长, 并逐级分层) , 且相同深度包含的层段数据量可能不同 (浅层砂岩通常分层较少, 而深层砂岩可能在数米之内有上百个层段) , 因此本系统采用了二级并行索引的方式解决该问题:第一级索引基于深度构建, 其基本思路是在导入数据时, 在曲线模型中加入深度索引信息;即每读出100米数据, 即标注该100米数据的起始段编号和结束段编号。第二级索引基于层段名建立, 即每当读出名称相同 (中/英文名前缀相同) 的层段数据, 记录其若干连续同名层段中的起始/结束段名以及编号;所有的索引信息以附加信息形式添加在特定曲线数据的尾部, 并且在曲线模型的元数据记录其入口及相关信息。

2.2 分布式数据同步

该系统将有众多的操作员进行数据处理, 可能会出现多个操作员频繁处理同一条记录的情况, 如果不采用分布式数据同步方法保证数据处理的顺序性, 将会导致数据的不一致。本系统采用的分布式同步算法的主要步骤如下:

1) 当编辑曲线的节点需要进入处理特定层段时, 利用“文件名称+曲线名+处理层段名称”, 按照哈希类算法生成仲裁节点标志, 然后向仲裁节点发送请求。

2) 仲裁节点中建立“先进先出”的请求队列, 并按照请求消息到达的先后顺序发送应答给请求节点;当队列头部是连续“读”请求时, 可以同时发送若干应答给多个“读”请求节点;如果队列头部是“写”请求, 则仅仅发送应答给“写”请求节点。至此, 分布式同步问题以本地方法得到了解决。

3) 仲裁节点将携带本地请求队列的应答消息发送给优先级最高的节点;当该节点退出临界区后, 如应答消息中的队列非空, 无需发送释放消息给仲裁节点, 直接转发应答给下一个节点 (也可能是多个“读”节点) ;如此循环, 直到应答消息中的队列为空;应答消息中的队列为空后, 最后一个获得该消息的节点, 退出编辑状态后, 将发送释放消息给仲裁节点。

3 试验与分析

该系统目前已在生产现场得到了应用。生产部门组织了该系统与目前国外某型专用测井数据处理系统的对比试验。其中, 本系统采用4台微机服务器 (CPU 2.8G, 内存1G, 并且可以随时扩容) 作为试验平台;国外专用小型机中有4片CPU, 内存1G, 系统无法扩容。最终的处理时间对比如图3所示。较之国外系统, 本系统的平均处理时间缩短了三分之二以上;国外系统只允许一个操作员控制一条曲线, 整个系统最多只有5个操作员可进入系统;而本系统可以同时容纳20个操作员, 提高了工作效率。

4 结 论

本文给出了基于分布式并行结构的测井数据处理系统, 并描述了该系统实现的关键技术。该系统已经在生产中得到了应用。现场使用证明, 该系统具有良好的扩容性能, 能够减轻计算、通信等负载, 因此具有较高的推广价值。

摘要:针对测井数据处理系统中交互数据检索速度慢等一系列问题, 提出一个专用分布式并行模型。该模型通过分布式并行技术提高数据检索速度, 通过定点同步的方法保证了多用户数据一致性。性能及试验分析表明, 该模型提高了系统的容量和处理速度, 提供了高效的数据一致性维护等服务。

关键词:分布式并行,检索,数据处理

参考文献

[1]王群.矿场地球物理.黑龙江:大庆石油学院出版社, 1999:1-3.

[2]Jose Duato.并行计算机互联网络技术[M].谢伦民, 等译.北京:电子工业出版社, 2004:22-48.

[3]Jie Wu.分布式系统设计[M].高传善, 译.北京:机械工业出版社, 2001:3-16.

[4]张海藩.软件工程导论[M].3版.北京:清华大学出版社, 1998:8-129.

并行数据库系统 篇4

美国国家航空航天局(NASA)的地球观测系统(EOS)向全球免费提供的MODIS(中分辨率成像光谱仪)地球观测数据,从20世纪90年代中期发展至今,已成为全球最重要的卫星遥感观测数据之一。MODIS影像数据覆盖了可见光、近红外和远红外总计36个波段,光谱分辨率高,数据来源稳定,不仅对全球气候变化、生态环境研究等具有重要意义,更可以为自然灾害预测、预警和监控,陆地生态环境监测、海洋监测及气象预报提供重要依据和手段。以美国(由NASA主导)为首的多个国家,包括我国在内,已经建立起了若干国家级乃至国际性MODIS数据采集、处理、分析和应用平台,为各类地球科学研究提供数据支持。

MODIS数据为地球科学的研究及各种地球生态环境监测提供了海量翔实数据,也对科研人员使用计算机系统快速高效处理MODIS数据提出了巨大挑战。目前大空间和时间跨度的MODIS数据处理,以及基于MODIS数据进行的环境和灾害监测,多需要依托大型计算机系统或大规模计算机集群系统。该类系统建设周期长,投资巨大,而且维护成本昂贵,使用难度高。不仅要求使用者具有卫星遥感数据处理知识和技能,更需要其具备深厚的大型计算机或计算机集群系统上专业编程知识和技能[1,2]。而依托工作组级服务器或计算机工作站建立的MODIS数据处理系统,虽然相对简便易用,但其计算能力有限,难以在短时间内完成对MODIS动辄TB级的海量数据的实时处理分析。以EOS-MODIS一年期全球范围1B级别1 000米精度的HDF格式数据为例,其总存储容量可达到20TB以上,文件总数超过100 000个。按微型计算机或工作站100MB/S的理想I/O带宽计算,一部计算机读取一次该组数据就要耗时超过40个小时。科研机构和科研人员缺乏简便廉价的高效计算系统,极大制约了他们对MODIS数据的研究和应用。

1传统MODIS 数据处理方法及若干新探索

由于MODIS数据文件多以HDF-EOS面向对象格式存储,针对某项研究或应用的数据集内文件数目多、数据文件包含信息丰富,因此传统MODIS数据处理方法多采用多次读取同一数据文件,逐一提取不同波段数据的办法。或者通过若干专用数据处理工具顺次批处理完成,处理过程中要多次转储成临时中间结果文件,占用大量额外的存储空间,处理过程繁琐复杂。

传统MOIDS数据处理模式如图1所示。该流程中多个步骤都包含对MOIDS数据提取和转换过程,如辐射校正和几何校正需要依次提取各个通道的信息及附属信息;云检测、大气校正等通用性遥感处理过程需要先后提取1个或多个通道的数据进行计算;在做好了这些准备工作后进行产品反演时,又需要先后提取1个或多个通道的数据进行计算。这些过程需要反复多次读取1B数据文件,而且在处理的过程中要多次生成中间结果文件。MODIS数据处理过程具有典型的批处理、数据密集型和I/O密集型的特征[3]。

若干研究者注意到并行计算方法能够提升MODIS数据处理效率。刘良明等提出了“MODIS数据并行计算方法”[4],相对传统方法,其处理能力随CPU数目的增加而有所提高。但该方法仅限于单一计算节点的多线程并行,并行处理能力受限于单一节点的CPU最大容量,一旦其运行所依托的单一节点出现故障,则整个处理过程即会失败。且处理程序读取海量数据时,该方法仍不能解决因单一计算节点I/O带宽不足而产生较长I/O等待延迟的问题。郭建平等提出的基于并行计算的气溶胶定量遥感反演模型[5],因采用SYNTAM算法和IBM小型机计集群并行计算,而取得了计算性能的显著提高。但该模型仅针对MODIS数据在气溶胶反演方面的研究,较适合处理MODIS单个数据产品,不能作为各类数据产品的普遍处理方法。

从以上研究结果得到启示,如果能够有一种对MODIS各个通道数据均通用的并行处理方法,把一个MOIDS数据集中多个数据文件放入存储各自独立的计算节点,用同样的处理过程同时并行处理,不仅使处理过程并行化,而且使数据存储分布化,进而合并各个子处理过程的结果,那么就可大大提高整个MODIS数据处理的效率。

2使用MapReduce计算模型处理 MODIS 数据的方法及具体实现

传统MODIS数据处理方法要用同一过程反复处理一个数据集合中多个数据文件,Google提出的MapReduce[6]计算模型较为适合处理此类问题。

MapReduce模型的核心思想是将数据处理任务抽象为一系列的Map (映射)和 Reduce(化简)操作对,Map负责分解任务为多个子任务(即键值对) ,并对数据进行预处理;Reduce负责把子任务的中间结果聚合成为最终结果。用户在使用该编程模型时,只需按照自己的业务逻辑实现Map函数和Reduce函数即可,多数Map-Reduce的具体实现,如Hadoop,会自动对任务进行划分以做到并行执行[7]。

MapReduce计算模型相对传统的多线程模型的一个重要优势在于,MapReduce模型能够突破单一计算节点I/O带宽的限制。在MapReduce模型中,系统并不设定集中的存储节点,不需要把海量数据传输到运算节点,而是把数据和处理数据的代码分布于整个系统的各个计算节点之中,使代码向数据迁移。 MapReduce将任务和数据分配到N个计算节点上,每个计算节点执行的任务相同,但每个计算节点处理的数据减少为1/N。如果利用MapReduce模型,把多个不同MODIS数据文件的相同处理过程并行化,即可缩短整个MODIS数据集的处理时间,并规避单计算节点I/O带宽不足的局限,提升整个系统单位时间内的数据吞吐量。

2.1基于Hadoop平台的MODIS数据并行处理系统架构和处理流程

Hadoop是基于MapReduce模型的分布式计算框架中功能比较完善的一个MapReduce开源实现。基于Hadoop的MODIS数据并行处理的系统架构如图2所示。

主节点可以看作是分布式处理系统中的管理者,主要负责管理系统的命名空间、集群配置信息和存储块的复制等。主节点会将整个系统的元数据存储在内存中,这些信息主要包括了数据文件信息、每一个文件对应的数据块的信息和每一个数据块在数据节点的信息等。 数据节点是数据存储的基本单元,它将数据块存储在本地文件系统中,保存了数据块的元数据,同时周期性地将本地持有的数据块信息发送给主节点。同时数据节点也承担运算工作,对本节点持有的MODIS数据进行校正、检测、转换等数据处理工作,最后把处理结果返回给主节点。

使用MapReduce计算模型处理 MODIS 数据的具体流程如图3所示。

MODIS并行数据处理过程中的Map过程:Map过程即把数据分组和有序化的过程。在该过程中,通过卫星数据和卫星观测通道的对应关系,以及卫星观测数据和对应观测目标的物理特性的内在联系,进行分组和排序。

在初始化阶段,Hadoop框架把按照不同地理经纬度划分或按照不同时间区间划分的海量MODIS 数据文件(单个文件从60-300MB 不等,一般超过100个文件)分配到各个运算节点。若某个节点计算任务失败,则Hadoop系统会把失败的任务重新分配给其他可用节点重新处理。

MODIS数据文件被分配到各个计算节点后,即保存于运算节点的本地存储系统。各运算节点同时对各自分得的数据文件,按通道类别分组,提取指定通道数据;完成辐射校正、几何校正等预处理过程和大气校正、云检测等通用数据处理过程,生成一级数据产品。接着根据当前应用的设定,应用相应的地球物理参数统计算法,如气溶胶、海温、积雪覆盖等,根据地球物理参数的类别进行分组,得到的各种地球物理参数产品,即二级数据产品。

MODIS并行数据处理过程中的Reduce过程:当有足够的Map任务被完成后,控制节点分配Reduce任务到工作节点。在Reduce过程中,任务节点调用反演聚合算法把单日数据聚合(化减)成多日(一般为周平均或月平均)平均数据,把500米精度象元数据聚合(华减)成5千米—10千米精度象元数据。最后通过控制节点合并成为最终结果,即完整区域图像或全部时间序列内的图像序列,得到三级数据产品。

最后,系统根据MODIS不同应用的具体特点,通过比对汇总结果和随机选择若干节点计算结果(≤10%)反演得出的结果,来确认数据处理结果在空间物理特性上的的正确性和一致性。

2.2基于Hadoop的MODIS并行数据处理的优势

本方法大大提高了MODIS数据处理的时间效率,公式如下:

T1=(T0-Tm)/n + Tc

T1为使用本方法的处理时间;T0为传统串行处理消耗总时间;Tm为传统方法合并最终图像,生成完整区域图像或全部时间序列内的图像序列的处理时间;Tc 为本方法数据汇总,进而合并最终图像的处理时间。n为处理节点数。因为最终合并的数据相对原始数据大大缩减,且数据合并算法相对数据处理过程算法要简单得多,所以Tc在整个处理时间所占比例不超过10%。因此,在Tc一定的前提下,处理节点越多,则越能发挥Hadoop并行处理的优势,从而显著缩短总处理时间。

同时,对于多次读取MODIS不同通道数据的应用,本方法只须一次把被处理数据加载到各运算节点的本地存储,大大节约了多次读取不同通道时的数据加载时间。

传统方法通常把数据向运算节点移动,因此传统方法的数据加载时间 :TL0= (Td+Thm ,Td为从集中存储设备加载数据到运算节点的时间,Th为运算节点从本地存储加载数据到内存的时间,m为加载数据的次数。本方法只需一次性把数据从存储设备加载(分发)到各个数据节点,即不再依赖集中存储设备提供数据支持,运算过程中数据始终分布于各个数据节点,运算代码向数据节点移动。因此本方法的数据加载时间为:TL1=Td+(Th×m),本方法节省的数据加载时间:TL0-TL1= (Td+Thm - Td+(Th×m) = (m-1)Td;随着数据加载次数的增多 (m值增大),本方法节省的数据加载时间将越显著。

3基于Hadoop的MODIS数据处理试验

试验选取了2006年1月—6月半年的MODIS传感器中国全境1B级数据(原始数据总量约433GB),在16台配置如表1所示的服务器上进行数据处理,共生成地表温度产品、海面温度产品、云顶高度产品、云分类产品、积雪监测产品、大气可降水量产品等7种产品(产品为数据产品,以HDF格式存储,没有进行显示,但是可通过另外的工具进行显示)。MODIS 1B级数据源为美国NASA MODIS 网站 (http://ladsweb.nascom.nasa.gov/data/),产品生成的具体算法和代码取自美国国家航空航天局(NASA)戈达德航天中心(GSFC)的MODIS 网站(http://www.gsfc.nasa.gov/MODIS/MODISl)。与之做对比的试验是在一台配置相同的工作站上进行,同样生成7种产品,其处理流程如图1所示。记录了每月数据从开始处理到产品被传到指定的文件夹下的总耗时,结果见图4。该图直观地表明,采用基于Hadoop的新的计算模型后的MODIS 数据处理流程比未采用MapReduce 计算模型的传统处理流程所用的处理时间明显缩短,后者是前者的6倍左右。

4总结

本文讨论了基于Hadoop系统使用MapReduce计算模型,提高MODIS数据处理效率的多节点并行计算方法。该方法把计算逻辑和数据存储作为统一的整体部署在各个计算节点上,不但缩短了计算时间,而且在反复加载同一组数据的场景下,节省了海量数据从集中存储设备到计算节点的数据传输时间。

本方法目前的局限性在于没有通用校验方法确认各个节点传回控制节点的数据物理特性的可靠性,需根据各种不同MODIS数据应用方式,设计具体的通过抽样数据反演对比的校验方法。今后我们将针对这一问题开展进一步的研究工作,通过提取MODIS数据的普遍特征,完成汇总数据的校验,从而进一步提高数据处理效率。另外,本方法还可进一步应用于其他卫星资料,如FY-3、HY-1等我国目前比较成熟的气象、海洋及环境卫星数据资料,下一步将尝试建立一个比较通用的海量数据分布式并行处理模型,争取能在气象数据、卫星数据及其他海量数据的存储处理中得到应用。

参考文献

[1]宗翔,王彬.国家级气象商性能计算机管理与应用网络平台设计[J].应用气象学报,2006,17(5):629-634.

[2]郭文生,李国和.人工神经网络在并行计算机集群上的设计研究[J].计算机应用与软件,2010,27(5):12-15.

[3]刘荣高,刘洋,刘纪远.MODIS科学数据处理研究进展[J].自然科学进展,2009,19(2):141-147.

[4]刘良明,周正.MODIS数据并行计算方法研究与实现[J].测绘信息与工程,2011,36(1):1-4.

[5]郭建平,肖华东,刘昭华,等.基于并行计算的气溶胶定量遥感反演模型实现[J].计算机应用,2009,29(6):1665-1668.

[6]Dean J,Ghenlawal S.MapReduce:simplified data processing on large clusters[J].Communications of the ACM,2008,51(1):107-113.

DB2并行数据库核心技术探究 篇5

当前, 银行业中的许多核心业务系统 (如记账系统、支付清算系统、征信系统等) , 随着业务事件的发生、业务流程的运转、业务推广, 业务系统中的生产性子系统, 每天要接受大量用户的7╳24小时高并发实时访问, 吐出海量的交易数据, 对于银行企业来说, 这些交易数据是无价之宝, 业务系统中的管理性子系统要对该海量交易数据实时进行数据归档、统计分析、货币政策及金融服务等业务价值挖掘处理, 其数据容量以TB乃至PB来衡量。时至今日, 传统的数据库系统技术仍然难以满足这个问题空间的需求。

自1945年第一台电子管计算机诞生以来, 历经近60年, 计算机硬件飞速发展, 特别是微处理器的迅猛发展, 处理器的运算性能以摩尔定律提速、每1.5年提高1倍, 主存储器的容量每3到4年翻1倍, 磁盘的容量每年提高60%, 而且这些硬件价格都一直保持下跌, 性能价格比一直在提升。这些导致了新型计算机体系结构的发展和应用。而今, 业界一致推崇, 大规模并行处理机作为海量数据处理和实时高性能计算需求的解空间, 为问题求解提供了坚实的物质基础。

在海量数据实时处理的问题空间与大规模并行处理机的解空间之间, 由于两者的概念和处理逻辑截然不同, 要弥补这一距离, 需要从问题空间向解空间进行映射, 建立映射函数f:y=f (x) , 定义域为:{x/x=海量数据实时处理的问题空间的概念和处理逻辑}, 定义域为:{y/y=大规模并行处理机的解空间的概念和处理逻辑}。由此可见, 并行数据库系统的本质可以概括为:从海量数据实时处理的问题空间到大规模并行处理机的解空间之间的映射f。而且, 从问题空间向解空间直接进行映射, 必定存在一定的复杂性, 为了控制这一复杂性, 需要建立一个复合映射函数f, 即f (x) =P (L (x) ) , 其中L为从问题空间到并行数据库系统的逻辑映射, P为从并行数据库系统到解空间的物理映射。实现映射的基本手段是建立模型, 为逻辑映射建立并行数据库系统的逻辑结构模型, 为物理映射建立并行数据库系统的物理结构模型。

2 并行数据库系统的目标、原则与方法

由映射f的定义可知, 并行数据库系统的基本目标是:高性能、高可用性。高性能由并行机制来保证, 高可用性由冗余机制来保证。

高性能由线性加速和线性扩展两个指标来度量。假设没有并行性情况下, 投入1个单位计算资源, 在1个单位时间内, 完成1个单位计算规模的1个计算任务。线性加速是指:投入n个单位计算资源, 在1/n个单位时间内, 完成1个单位计算规模的1个计算任务。线性扩展是指:投入n个单位计算资源, 在1个单位时间内, 完成1个单位计算规模的n个计算任务。

吸收业界专用数据库机研究失败教训, 为了达到并行数据库系统的上述基本目标, 遵循如下并行数据库系统的原则:由有限构建无限。即不存在一台无限快的处理器提供无限能力的计算资源, 而是由无限多个有限能力的计算资源通过一定的结构关系来形成一个无限能力的计算资源。这种结构关系就是并行计算体系结构和并行计算算法的研究内容。

并行机制的基本实现方法有流水线并行性和分区并行性。流水线并行性:把一个关系运算的输出结果串联到另一个关系运算的输入端, 使得多个关系运算构成流水线, 利用流水线深度 (即步数) 来获得并行性。由于在关系运算中, 流水线深度太小等因素限制了其并行性的发挥。分区并行性:采用分而治之的思想, 其实质是把大任务转化为多个独立的小任务, 包括数据分区和并行运算2个方面, 即分割大规模数据集为多个小规模数据集, 使得一个关系运算被分割成多个相同的子关系运算, 这些子关系运算分别作用在不同的小规模数据集上。

数据分区是分区并行性的关键, 假定要把数据映射到n个磁盘上D0, D1, …, Dn-1上, 目前, 有3种经典的数据分区策略:

轮转法:对于关系r中的第i个元组分配到第 (i mod n) 个磁盘上, 保证了元组在多个磁盘上的平均分布。适合于扫描操作。

散列分区:关系r中的一个或多个属性作为分区属性, 对于r中的元组rt, 该元组被分配到第h (rt) 个磁盘上, 其中, h为一个值域为{0, 1, 2, …, n-1}的散列函数。适合于基于分区属性的点查询, 不适合范围查询。

范围分区:对于关系r, 分区属性为A, 则在A上可以定义一个分区向量:[v0, v1, …, vn-2]。分区过程如下:若t[A]〈v0, 则t被分配给第0个磁盘, 若t[A]≥vn-2, t分配给第n-1个磁盘, 若vi≤t[A]

并行运算是分区并行性的第二步。由于关系运算是基于集合的, 集合的偏序关系、等价划分等性质, 适合于进行数据分区, 所以关系运算特别适合于并行处理。并行关系运算一直以来是算法研究的热点领域, 特别是并行连接和并行排序等。

冗余用于改善可靠性, 冗余信息可以用来在磁盘等出现故障时, 重新生成数据。

3 DB2并行数据库系统的逻辑结构模型

IBM DB2 InfoSphere Warehouse Enterprise Edition就是在并行数据库系统的目标、原则与方法指导下研发的一款高端并行数据库系统, 俗称DB2 EE with DPF。

DB2并行数据库系统的逻辑结构模型如下:

DB2数据库分区采用分区并行性中的散列分区策略来设计。每个数据库分区称为节点或者数据库节点。每个数据库分区都有自己独立的计算资源 (CPU、主存储器和磁盘) 。每个数据库分区是一个数据库, 有自己的数据、索引、事务日志和配置文件。支持的并行性粒度有:节点间、节点内、查询间、查询内部。没有限制的规模, 横向扩展。基于分区键, 通过散列函数均匀地映射数据到不同的数据库分区, 当用户发出SQL操作时, 被连接的分区作为协调节点 (协调节点是运行协调代理的一个数据库分区, 任意一个数据库分区都能够成为协调节点) , 负责处理用户的请求, 并根据分区键和分布图将用户的请求分解成多个子任务交由不同的分区并行处理, 最后将不同分区的执行结果汇总返回给用户。

DB2表空间采用分区并行性中的轮转法策略来设计, DB2中称之为条带化。表空间是由容器构成的, 容器是数据的物理存储, 如果一个表空间有多个容器, 那么数据在写容器的过程中是按照循环的方式按块 (extent) 写的。当在第一个容器中写完一块后在第二个容器写, 然后又循环到第一个容器, 以此类推。

DB2分区表采用分区并行性中的范围分区策略来设计。分区表根据分区键, 将表数据分布到多个数据分区中。允许一个逻辑表被分成多个分散的逻辑存储对象, 每个存储对象对应表的“一部分”, 值的范围用来指定每个分区。数据分区是表的一部分, 它包含该表的一部分记录, 并且与其他记录分开存储。这些数据分区可位于不同的表空间或同一表表空间中。普通表只可以放于一个表空间中, 而分区表可以将自己的各个不同部分放在不同的表空间中。

多维集群弥补数据库分区、表分区的declusterring的缺点, 从物理上把表数据同时沿着多个维聚集起来, 允许聚集多维内的物理数据页面来聚集逻辑表上的数据, 提高查询性能。

4 DB2并行数据库系统的物理结构模型

为了支持DB2并行数据库系统的逻辑结构模型向大规模并行处理机的解空间映射, 需要引入DB2并行数据库系统的物理结构模型。

大规模并行处理机MPP的3种典型物理结构:共享内存、共享磁盘、无共享。

共享内存SE:所有的处理器和磁盘共享一个公共的主存储器, 采用总线连接。优点是处理器之间的通信效率极高。缺点是其规模不能超过64个处理器, 否则会变成瓶颈。

共享磁盘SD:所有的处理器共享一组公共的磁盘。采用互连网络连接, 每个处理器都可以直接访问所有的磁盘, 每个处理器有自己私有的主存储器。优点是容错性, 缺点是速度要慢一些。

无共享SN:各处理器既不共享公共的主存储器, 又不共享公共的磁盘。在SN中, 机器的每一个节点包括多个处理器、一个主存储器和多个磁盘。采用互连网络连接, 一个节点上的处理器可以通过高速互连网络与另一个节点上的另一个处理器通信。由于局部磁盘访问有各个处理器的本地磁盘提供, 所以无共享模式客服了所有的I/O都要通过一个互联网络的缺点, 只有那些非本地磁盘的查询及其结果关系需要通过网络传送。优点是无共享体系结构更具可扩展性, 可以很容易地支持大量的处理器。缺点是数据的传输涉及两端的软件交互, 故速度要慢一些。

对比以上3种物理结构, 可知无共享SN的物理结构适合架构高性能数据库系统, 所以DB2率先采用之。DB2并行数据库系统的物理结构模型如下所示:

系统的拉动查询性能的主要组件。

5 结束语

本文提出了提高吞吐量以及满足高可靠性需求的问题空间, 然后给出了DB2并行数据库系统向相应解空间的映射及其模型建立, 同时研究了DB2并行数据库

摘要:DB2并行数据库系统当前在银行业的许多核心业务系统中被广泛使用, 本文力求以一种创新性的逻辑思路, 系统化地从并行数据库系统的本质、目标、原则、方法、逻辑结构模型、物理结构模型等方面对DB2并行数据库系统的核心技术进行研究与分析, 以期更好地指导DB2应用实践。

关键词:并行数据库系统,并行机制,DB2,数据库分区,表分区,映射

参考文献

[1]杨利、周兴铭、郑若忠.并行数据库的体系结构.国防科技大学计算机研究所.1995.

[2]陈越洲、杨树强、贾焰.基于DB2的并行数据库体系结构研究.计算机工程.2005年3月.

[3]Abraham Silberschatz (美国) 等.数据库系统概念 (第五版) .机械工业出版社.2008年12月.

[4]王立福等.软件工程 (第三版) .北京大学出版社.2009.

并行数据库系统 篇6

查询优化一直是提升并行数据库性能的研究重点,作为数据库的一个常用且重要的操作,多表连接查询是查询优化的一个难点。由于多表连接查询优化寻求最优解问题是一个NP完全问题[1,2],在参与连接的表数目过多的情况下,充分考虑所有的表连接顺序将会造成查询响应时间过长。研究表明,基于启发式的遗传优化算法可用于解决多连接查询的优化问题。

遗传算法是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型[3]。1991年,Kristin Bennett等人首次提出将遗传算法的思想应用于数据库的查询优化中。1996年,Michael Stillger等人提出使用遗传算法来进行并行查询优化[4,5]。该论文虽然考虑了算子间的并行和流水并行,但是,并没有充分考虑遗传算子内的并行和代价估计模型。

本文提出的Improved Genetic Optimization(以下简称IGO算法)是基于无共享(SN)的并行数据库架构,参考遗传算法的思想并充分考虑影响遗传收敛性的各个算子,形成的一种改进的优化算法,且鉴于并行数据库与传统数据库的差异,提出了针对并行数据库的代价估计模型。在此模型中,将多表连接造成的各个数据节点之间的数据迁移代价考虑在内,提高了代价估计的准确性。

1 代价估计

1.1 单表的代价估计

定义1 表的读取代价计算公式[4,5,6]可描述为:

读取代价 = P+W*T (1)

其中P表示需要访问的页面数;T表示需要访问的元组数;W表示磁盘I/O代价和CPU消耗的权重因子。

定义2 对无索引的情况下,表读取代价的计算公式如下:

estCost = nPages+FACTOR*nRows (2)

其中FACTOR定义为常数0.0010;nPages,nRows,FACTOR分别对应于式(1)的P,T, W。

定义3 对于含有类似于“分布表.分布列 =常量”的查询条件,其代价估计的计算公式可表示为:

estCost=I.nPages+nRows*Col.Selectivity+FACTOR*nRow (3)

其中I.nPages为索引的页数; Col.Selectivity为列的选择度。列的选择度反应了此列中的重复数据对代价的影响,重复数据越多,参与连接的概率就越大,代价估计也就越大。对于列的选择度的详细定义如定义4:

定义4 对于列的选择度的计算公式可表示为:

Selectivity=

{1.01.0(n)*i=1nstadisincti(4)

其中数据节点i上列的stadistinct= -(列的投影总数/表的元组总数)。

1.2 多表连接的代价估计

对于没有数据迁移的连接代价估计可利用单点数据库的代价估计模型,有关单点数据库的代价估计技术已经非常成熟,本文着重分析含有数据迁移的连接代价估计模型。含有数据迁移的普通连接基本模型如图 1所示。计算连接代价可按照是否有索引分为两个处理流程。

1) 首先,确定node1和node2的数据页数。

node1.nPages =

node1. RowsReturned * node1. rowSize / PAGE_SIZE

node2.nPages =

node2. baseNumRows * node2. rowSize / PAGE_SIZE

计算node1和node2的数据页数时用到了不同的参数,node1进行了选择操作,故用估计返回元组数 RowsReturned,node2上没有进行选择操作,故用表中元组的总数目baseNumRows。

其次,分布列减少因子partReduction的确定。其初始值为1.0,若Column2是Table2的分布列,则partReduction = 1.0 / Table2的分布节点个数。

2) 从数据迁移方向可知,只需要考虑Column2是否有索引。若Column2有索引,则node2的索引页数node2.IndexNumPages = 右节点的估计返回元组数 / 每个索引页的元组数。连接操作要处理的元组数目resultCardinality = 左节点的估计返回元组数 * 右节点的估计返回元组数 * Column2的选择度。

此时的连接代价可表示为:

estJoinCost = node1.nPages+ node1. RowsReturned * node2.nPages * partReduction+ FACTOR * resultCardinality * partReduction (5)

(连接代价 = 左节点I /O代价 + 右节点索引页的I /O代价+右节点数据页I /O代价+ CPU代价)

3) 若Column2上没有索引,连接代价可表示为:

estJoinCost = node1.nPages+ node1. RowsReturned * node2.nPages+ FACTOR * (joinNode. RowsReturned) (6)

(连接代价= 左节点I /O代价 + 右节点 I /O代价 + CPU处理代价)

由于在没有索引的情况,对于node1中的每一条记录,必须在node2上进行一次完整的扫描。最坏的情况下,假设缓存只能容纳每个node的一个数据页,此时共需(node1.nPages + node1.RowsReturned * node2.nPages)次数据页传输。

2 IGO查询优化算法

2.1 查询的预优化

在进行查询优化之前,是对整个查询的一个预优化过程。预优化的目的是实现对部分特定表的合并,从而减少IGO查询优化中表的数量。预优化的思想是:如果进行连接的两表采用相同的数据分布策略(如散列划分、轮询划分等)且分布列相同或者涉及复制表的连接,则说明两表的连接不需要数据迁移,只需在相应的数据节点上即可完成连接操作,对于这样的两表可进行合并操作。把合并后的两表从连接表序列中删除,把合并后的生成的新表添加到连接表序列中。

预优化的例子如图 2所示。预优化之前是一个浓密度树,经过合并表后形成了一棵含有四个叶子结点的简单左线性树。不需要数据迁移即可完成连接操作的表D和表E进行合并操作,生成新表DE添加到连接表序列中,并将表D,表E从连接表序列中删除。

2.2 IGO查询优化算法

遗传算法是模拟生物进化过程的计算模型,是现代启发式算法的一种。其具有全局优化性能、通用性强、且适合于并行处理 [7,8]。本文充分考虑遗传算法的相关因素,提出了一种IGO查询优化算法,其处理的主要处理流程如图 3所示。

1) 确定种群规模大小和编码方式。种群规模的大小直接影响到算法的性能。种群太小则不能提供基因丰富的个体;种群规模太大则过多的个体会增加优化的时间和空间消耗,造成收敛时间过长。种群规模应与参与连接的关系数和系统的处理能力有关。

表的可能的连接先后顺序可用整数组成的字符串编码。例如:图 2所示的表连接顺序的可表示为“1234”,这里的1、2、3、4分别为表A、表B、表C、表DE的ID号。

2) 适应度函数的选择。个体的适应值是遗传优化过程中优胜劣汰的准则。数据库中适应度函数的选取应与个体通过代价估计函数得出的相应代价成反比。可表示为:

fitness(Ιndii)=1/estcost(Ιndii)j=1popLength1/estcost(Ιndij)0<i<popLength

其中popLength表示种群规模;estcost(Indii)表示种群中第i个个体的代价估计值。在代价估计的过程中根据个体中参与连接的表的不同情况调用不同的公式。

● 存在索引的情况下,如果参与连接的表存在“分布表.分布列 =常量”的查询条件,则首先调用式(3),进行单表的代价估计,其次调用式(5)进行连接代价估计,两表的执行总代价为上述两个代价估计之和;如果不满足上述查询条件,则首先调用式(2)进行单表的代价估计,其次调用式(5)进行连接代价估计。 两表的执行总代价为式(2)与式(5)的代价估计之和。

● 无索引的情况下,两表的执行总代价为式(2)与式(6)的代价估计之和。

● 按照个体表示的连接顺序计算出个体中所有相邻表的执行总代价,取其和作为个体的代价估计值。

3) 挑选个体进行配对和变异,产生新个体。本文的选择算子采用的是排序选择法。在排序选择法中挑选个体遗传到下一代采用的是基于偏置因子的线性函数[9]。

f(geqo

_rand)={popLength*(bias-sqrtval)2.0*(bias-1.0)(sqrtval>0)popLength*(bias-sqrtval)2.0*(bias-1.0)(sqrtval0)

其中:sqrtval = (bias * bias)-4.0 * (bias-1.0) * geqo_rand;计算结果f(geqo_rand)表示选中个体的编号,geqo_rand是0.00-1.00之间的一个随机数,偏置因子bias设为2.0。排名靠前的个体被选中的概率大,在bias=2的情况下,排名靠前的个体选中次数是排名靠后的个体的三倍多。

其次,配对算子的选择。虽然影响遗传算法收敛性的因素比较多,但是,配对算子因具有全局搜索能力是影响遗传算法收敛性的最主要算子。传统的配对算子有部分配对(PMX),循环配对(CX),基于位置的配对和顺序配对等。由于传统的配对算子不能很好地将父代优秀的基因传递给下一代[10]。所以,结合数据库多表连接的特征和贪婪算法的思想,本文提出了一种新的配对算子。

输入:Inid1= (x1, x2,…,xn),Inid2= (y1, y2,…,yn)

//costxiyj基因xi,yj所代表的两个表的总执行代价估计值;

最后,变异算子的确定。变异算子具有局部搜索的能力,对交叉算子具有辅助作用。本文采用的变异算子大致流程可总结为:随机的从新个体中选出两个基因位,交换两个基因位的值,重复执行n次。

4) 添加新个体到种群中。按照原先的排序关系将新个体添加到种群中,并且在添加的过程中,如果出现个体重复的情况,就需删除其中一个进行单一化操作。在添加新个体完毕后,为了体现优胜劣汰的思想,并且防止种群中个体数量增多,需淘汰排名靠后的个体。

3 实验分析

实验数据库的环境采用的是开源的并行数据库gridsql,其中包括1个控制节点和8个硬件环境相同的数据节点。所有的处理结点通过交换机实现完全互连,且硬件环境均采用:CPU P4 2.0GHz;内存512MB;硬盘40GB;网卡100M bit/s。节点主机之间采用的是100M bit/s的以太局域网,操作系统为Red Hat Enterprise Linux 5.0。

实验中分别采用了6表连接、11表连接和14表连接。各个表中均含有10 000个元组。且在14表连接中存在三个表的连接不含有数据迁移。以响应时间(单位为毫秒)作为查询系统性能好坏的一个标准,并模拟了贪心算法和基于左线性树算法。设定各个处理机的可用内存为每次实验各个查询运行3次,取平均值作为该查询的查询响应时间。

实验结果如图 4所示。实验表明:IGA优化算法在处理多连接查询优化的过程中,优于其他两种算法,且通过分析11表连接和14表连接可知影响查询响应时间的主要因素为表之间的数据迁移。

4 结 语

在并行数据库中,多连接查询优化是影响查询的一个重要课题。本文提出的一种新的代价估计模型,充分结合了并行数据库优化的特殊性和遗传算法的生物学特性,并对传统遗传算法进行了改进。实验证明IGO算法减少了多表连接查询的响应时间。

摘要:多表连接查询是并行数据库中的一种常用且重要的操作,然而基于传统遗传算法所制定的多表连接查询计划,往往存在查询响应时间长的缺陷。根据无共享并行数据库的特点,将一种新的代价估计模型引入到传统遗传算法中,并对传统遗传算法进行了改进。实验证明改进后的遗传算法能制定出更优的查询计划,从而减少多表连接时的查询响应时间。

关键词:并行数据库,无共享架构,多表连接优化,代价估计,遗传算法

参考文献

[1]李建中,孙文隽.并行关系数据库管理系统引论[M].北京:科学出版社,1998.

[2]杨利,昌月楼.并行数据库技术[M].北京:国防科技大学出版社,2000.

[3]陈国良,王煦法,庄镇泉,等.遗传算法及其应用[M].人民邮电出版社,1996.

[4]Bennett K,Ferrism C,Ioannidisy E.A genetic algorithm for databasequery optimization[C]//Proceedings of the fourth International Confer-ence on Genetic Algorithms,1991:400-407.

[5]Stillger M,Spiliopqulou M,Freytagj C.Parallel query optimization:exploiting bushy and pipeline parallelism with genetic programs[R].Technical report,Humboldt-University at Berlin,1996.

[6]文继荣,陈红,王珊.Shared-nothing并行数据库系统查询优化技术[J].计算机学报,2000,23(1):28-37.

[7]彭智勇,彭煜玮.postgresql数据库内核分析[M].北京:机械工业出版社,2012.

[8]杨冬青,等译.数据库系统概念[M].北京:机械工业出版社,2008.

高程图数据相似检测及其并行算法 篇7

关键词:相似检测,曲面插值,并行算法,C语言,绘图

高程数据文件给定了横纵坐标x、y及相应点的高程z,设A、B是程序的两个输入文件,B为网格化的大图,A是B的局部,A通过实际测量得到,两组数据中x、y坐标是不一致的,需要通过比较二者对应的地形起伏,检测相似程度,求出两组数据图高程差最小即最吻合时的坐标差,从而校正A或B的坐标。程序首先读出数据,因数据量太大,用Matlab不便于处理,选用C语言用动态分配存储空间的方法,通过指针操作数据。程序中需画数据图,粗略选取比较区域,作者选用了简单的Windows绘图功能,未用复杂的MFC,以达到快捷简便,提高可移植性的目的。

检测方法为,以B的高程数据为插值节点,在B图上某区域选出一点为起始点,对应A的起始点,按A的所有数据的坐标间距,作为所求插值点,通过曲面插值算法,求出各插值点的高程,设为C。比较A与C的相似度,即通过A与C对应点高程差的绝对值和来量化相似程度。在选定区域搜索最佳起始点,并不断缩小搜索区域和步长,找到绝对值和最小的对应起始点,即可算出所求坐标差。

程序中编写了一些辅助函数来估算数据及运算量的大小,通过绘图等人工干预的方法修改一些参数来提高搜索效率。确定大致的搜索区域后,如果步长缩小,曲面插值及相似比较的运算量也是很大的,又给出基于MPI的并行算法,提高了运算速度。

1 数据结构的选定

数据文件中一般存放3列数据,x、y、z,对于等距网格高程数据,程序读取文件可转换为仅存x、y起始值及一对网格间距值,所有z值存放到动态分配的一维数组,这样可节约存储空间并提高运算效率。所以选用如下定义的结构类型存储A、B、C的数据,sx、sy为起始点即图的最左上一点的坐标,wx、wy为经纬向网格间距,M、N为网格数量,也相当于数据矩阵的行、列数,pd指向顺序存储的高程值z。

首先通过辅助程序分析数据,并进行必要的整理,确定A、B的sx、sy、wx、wy、M、N等值,C的大小等同A,定义全局变量A、B、C并分配好高程值z的存储空间,读取数据并转换,程序如下:

2 程序流程及数据绘图

程序采用最简单的Windows编程结构,主函数Win Main()中建立显示一个窗口,并开始消息循环。在消息处理函数Wnd Proc()中通过按下字符键的消息WM_CHAR,选择调用读数、计算等各函数模块,在WM_PAINT消息下绘出通用的高程色标及提示信息。

操作流程一般为:先如上所述整理和读取数据,确定所搜区域的起始点和步长,建立二维数组FMin[][];调用曲面插值函数,由数据B算出C,再对A和C高程差绝对值求和,存入FMin,同时找出最小值。主要程序如下:

在某区域计算出一组数据后,根据需要,可通过发送按键消息,调用绘图函数,再确定新的搜索起点和步长,直至找到最佳位置。

其中,绘图用画点函数Set Pixel(),如图1~图3所示,高程h和颜色的对应关系用如下函数:

3 曲面插值算法

算法采用矩形域上分片双一次插值,计算公式如下:

其中τ、h为网格宽度,pij(x,y)是1,x,y,xy 4个函数的线性组合。插值曲面p(x,y)在整个区域上连续。相应代码如下:

4 并行算法

为了提高运算速度,采用基于MPI的并行程序在Linux环境下来计算,本问题数据传输不频繁,而运算量大,很适合并行计算。先预设搜索起始点值,对搜索区域按从进程数划块,交给各个从进程计算,各从进程计算分配给自己的区域后返回最小值及坐标点位,主进程接收各个最小值后再进行比较得出结果。程序中主进程通过MPI_Send()函数发送各块起始点纵坐标,接收数据用MPI_Recv()函数。通过MPI_Reduce()函数并设置MPI_MIN参数可归约由从进程送来的值,得到最小值,主程序代码如下。

编译和运行命令如下:

mpicxx-o kj AD kj ADmpi.cpp

mpiexec-n 8./kj AD

5 结语

以上并行程序通过输出运行时间的代码进行了测试,证明在实践中是有效的,并行运算速度跟进程数及CPU内核数有关。另外,在实际应用中,如果测量所得数据不全,需要先通过插值网格化再进行相似检测计算。如果是稀疏的数据,也可改变数据结构,通过指针取测量点的坐标和高程,由网格化的大图做插值后求高程差的绝对值和来检测。

参考文献

[1]黄友谦,李岳生.数值逼近[M].北京:高等教育出版社,1987.

上一篇:历史典故中的数学下一篇:交互式英语教学环境