基于Oracle组件的数据采集与全文检索系统设计与优化

2016-05-14 00:24袁琴琴李志勋吕林涛
现代电子技术 2016年8期
关键词:全文检索检索资料

袁琴琴 李志勋 吕林涛

摘 要: 从应用系统数据采集与全文检索的需求出发,结合权限控制,提出基于Oracle Transparent Gateway,Oracle Text的数据采集与全文检索的设计和实现方案。基于此方案,着重进行系统框架设计、采集存储及数据库设计,实现创建索引及检索流程,最后给出系统性能优化方法,并对检索速度和查准率进行测试分析。目前系统已上线运行,取得高效简捷、运行稳定的使用效果。

关键词: 数据采集; Oracle Transparent Gateway; 全文检索; Oracle Text; 性能优化

中图分类号: TN911?34; TP392 文献标识码: A 文章编号: 1004?373X(2016)08?0037?04

Design and optimization of data acquisition and full?text retrieval system

based on Oracle component

YUAN Qinqin1, LI Zhixun2, L? Lintao1

(1. Department of Electronic and Information Engineering, Xijing University, Xian 710123, China;

2. Xian Aerospace Propulsion Test Technique Institute, Xian 710100, China )

Abstract: Proceeding from the requirements of data acquisition and full?text retrieval for the application system, and in combination with the access control, the design and implementation scheme of data acquisition and full?text retrieval based on Oracle Transparent Gateway and Oracle Text is proposed. Based on this scheme, the system structure design, collection storage and database design are conducted emphatically. The index creation and search procedure were realized. At the end of this paper, the optimization method of system performance is given, and the retrieval speed and precision ratio of the system are analyzed. Now the system has been run on line, and achieved the using effect with high efficiency and stable running.

Keywords: data acquisition; Oracle Transparent Gateway; full?text retrieval; Oracle Text; performance optimization

0 引 言

随着信息化建设的不断推进以及信息技术的快速发展,为适应多元化业务发展需要,多个业务系统随之建设,产生了大量的以不同方式存储、依赖于不同数据库管理系统的数据。例如业务数据分别存储在SQL Server,Oracle数据库中[1],在这些异构数据库[2]平台上运行着业务相关的多种应用系统。如何在不影响现有系统运行的前提下,最大限度地利用信息资源,避免重复开发,必须解决异构数据库的统一操作问题。如何快速有效地采集异构数据库中的信息,建立综合信息资源库,实现数据共享,是本文需要解决的问题之一。另外,面对综合信息资源库中的大量数据,怎样在业务应用中实现快速、有效、全面的检索效果,提高数据的利用性,也是本文需要解决的另一问题。

本文围绕基于J2EE技术架构的多个业务应用系统开展研究,其信息来源十分广泛,包括现有的业务管理系统、文件系统、文档资料等。而各个系统的数据存储方式、存储结构、数据库类型均不相同,如何在异构的存储环境下实现稳定可靠的数据共享和数据采集是本文设计的要点之一。同时,业务数据涵盖日常应用中的所有资料、文档等信息,信息类型复杂多样,包括结构化信息、非结构化信息、文件(DOC,PDF,txt,Excel,HTML)等多种格式。系统数据量随着日积月累会越来越大,要在这样大量复杂的数据中实现对多种类型信息的高效准确检索也是本文设计的另一要点。

基于上述分析,本文采用了Oracle数据库的Oracle Transparent Gateway[3?4],Oracle Text[5?6]等技术。在设计采集检索功能时,不仅要满足异构数据库环境下数据的实时采集和共享,还要支持权限控制[7?8]下对多种类型、多种格式文件内容的高效检索。

1 数据采集与全文检索方案设计与实现

1.1 系统框架设计

在Oracle Transparent Gateway,Oracle Text组件的基础上,结合权限控制,本系统实现了高效简洁的数据采集与全文检索功能,系统框架设计如图1所示。

系统数据来源于异构SQL Server数据库、Excel文件和本系统的文档资料。针对不同数据源,SQL Server数据库采用“采集—处理—导入”的数据层集成方式,实现了异构数据向本系统数据库的迁移,Excel文件和本系统的文档资料通过导入、手工录入方式将资料信息装载入库,自动建立全文信息索引, 为实现全文检索奠定基础。全文检索建立于权限控制体制之上,首先由用户提出检索请求,待全文检索模块处理后进入综合信息库进行关键词检索,之后将检索匹配的结果传递给权限审核模块,然后在检索记录中过滤出可供用户查阅的信息, 并将过滤后的信息经检索结果处理模块处理后存储于用户临时存储区供用户浏览查询。用户浏览资料详情时, 必须同时具备对资料所属目录的查看权限和对资料的查看权限才能查看资料。

1.2 系统实现

(1) 数据库设计

综合考虑系统采集检索需求,需要采集的数据类型包含数字、字符、日期、文本等,需要检索的资料信息分为三类:字符类型(varchar2)、大文本类型(clob)、非结构化blob类型数据(DOC,PDF,txt,Excel,HTML)。数据库设计采用了反规范化设计方式,需要检索的资料信息按其数据类型分别存储在三张表:资料内容1、资料内容2、资料内容3中,每张表中均用记录ID、资料类型ID、资料表ID、资料表记录的ID、资料表记录的字段ID进行关联。系统资料与权限管理的数据库设计见图2。

(2) 数据采集与存储

系统的数据来源主要有三部分:采集日报资料、导入重点资料和现行文档资料。日报资料来源于基于SQL Server平台的管理系统,系统采用Oracle Transparent Gateway实现与SQL Server的无缝连接,采取“采集—处理—导入”的数据层集成方式,实现了异构数据向本系统数据库的迁移;重点资料为系统用户批量导入的Excel信息;现行文档为DOC,PDF,txt,Excel,HTML等格式的文档资料。重点资料的批量导入和文档资料的手工录入在应用层实现。日报资料的采集是在数据层采用Oracle Transparent Gateway连接SQL Server,由PL/SQL编程实现。Oracle Transparent Gateway的采集过程见图3。

在采集服务器上安装Oracle Transparent Gateway for SQL Server,完成配置透明网关相关参数、listener.ora、tnsnames.ora。在Oracle端创建链接SQL Server数据库的database link,发出查询需求,SQL Server通过Transparent Gateway识别出Oracle端发出的查询需求,获取查询结果记录集,记录类型主要包括数字、字符、日期、文本等,Transparent Gateway将记录集数据转换为与Oracle兼容的数据,并返回给Oracle服务器,存储在临时表中。通过临时表上的行级触发器将不同字段类型的数据导入到对应的信息资料表中。

(3) 创建索引和索引同步

系统采用CONTEXT类型索引,它支持并行检索方式,在创建本地CONTEXT索引时,需要设置并行度和系统资源属性。在执行检索任务时,并行协调器依据创建索引时设置的并行度和系统资源属性调用多个从属进程对全文索引进行并行检索。每个从属进程对应于全文检索的一个或多个分区,当检索任务完成后,协调器负责将各个检索结果进行汇总并传递给用户。本系统分别对资料内容1、资料内容2、资料内容3的“存储字符”、“存储大文本”、“存储二进制文件路径”创建并行分区全文索引。

本系统在创建全文索引的同时采用了索引同步机制,原因是当资料内容1、资料内容2、资料内容3表中发生DML操作后,基表上对应的全文索引不会自动更新,需要手动对其更新,在此之前是不能检索到基表中的新内容,因此需要调用CTX_DDL.SYNC_INDEX存储过程手动同步索引。

(4) 检索存储过程

为实现文档信息的全文检索和权限过滤,本文的检索存储过程采用了如下核心SQL语句:

select /*+FIRST_ROWS*/ e.* from (

select b.*, rownum as rt from

(select n.资料ID,n.拟稿时间, n. 资料名称,

u.用户或部门名称,t.资料类型名称

from

(select v.资料ID from 资料内容1 v

where v.资料类型ID in (||′类型ID串′||) and

contains(v.内容, ||′关键词′||,1) > 0 //全文检索

union

select b.资料ID from 资料内容3 b

where b.资料类型ID in (||′类型ID串′||) and

contains(b.内容, ||′关键词′||,1) > 0 //全文检索

union

select c.资料ID from资料内容2 c

where c.资料类型ID in (||′类型ID串′||) and

contains(c.内容, ||′关键词′||,1) > 0 //全文检索

) y,资料信息表 n,资料类型表 t,用户部门表 u

where n.资料ID = y.资料ID and

n.资料类型ID = t.资料类型ID

) b,

(select uip.资料ID

from (select u.用户或部门ID from用户部门表) u

where u.用户或部门ID = ||′传入部门ID′||) c,

用户与资料权限关系表 uip,

功能权限类型表 ip

where uip.用户或部门ID = c.用户或部门ID and

uip.权限ID = ip.权限ID and //权限过滤

ip.权限类型= ′传入的权限参数′) d

where d.资料ID = b. 资料ID and

b.rt >=||′翻页记录起始条数′||

)e where e.rownum<=||′翻页记录终止条数′|| )

2 系统优化

为了提高数据库性能,加快应用系统的检索速度,系统采用了以下方法进行优化。

2.1 采用分区表技术

系统在设计资料内容1、资料内容2、资料内容3时采用了按范围分区的分区表技术[9?11],可以将大表分成多个存储单元,避免了系统资料信息表作为一个大的、单独的对象进行管理,提高了大量数据的伸缩性。

通过采用分区表技术,实现了对资料信息表的多分区管理,每个分区对应一个小的存储单元,每个存储单元可以单独操作管理。检索时采用多分区并行处理技术,减少时间开支,提高执行效率,还可通过采用屏蔽故障分区技术,确保数据检索的可靠性。

2.2 优化检索响应时间

在大规模数据检索过程中,用户期望在最短时间内看到检索结果,可采用快速返回前几条检索结果的方式显示给用户。在编写查询语句时加入FIRST_ROWS提示,可以使查询优化器以较快的查询速度将前几条检索结果传递给用户,避免了在整个查询任务结束后方能浏览检索结果的局限性,满足了用户快速检索的需求。

另外本系统在创建CONTEXT索引时采用了索引分区技术,为分区表创建相应的分区索引。这样在检索过程中,只需要检索相关的分区,特别是对于分区键列上的范围搜索和排序,可避免全表扫描过程,能够显著缩短检索响应时间。

2.3 定时优化全文索引

全文检索对象所在的基表经DML操作后,其相应的全文索引不会自动更新,有必要采用全文索引同步机制。同时频繁的索引同步操作会导致索引的碎片,过多的碎片会降低检索的效率,因此,需要对全文索引进行优化。

例如资料信息中包含关键词“优化”的文档有doc2,doc6,doc7,当含有关键词“优化”的doc8被存储之后,倒排索引会单独为doc8文档创建一条索引条目,从而产生了碎片。系统采用CTX_DDL.OPTIMIZE_INDEX存储过程对索引进行优化,可以避免碎片的产生,由于系统创建CONTEXT索引采用了分区索引技术,因此需要对每个分区进行索引优化。Oracle Text仅提供了一种手动索引优化方式,本系统采用dbms_scheduler调度的create_job创建作业,可定时自动优化全文索引。

2.4 定期维护统计信息

在Oracle较新版本中查询优化器采用了改进的CBO(基于成本的优化器)[12],根据收集的系统统计信息和对象统计信息对查询计划成本进行计算,最终实施选用最低成本的查询计划。这就需要对系统统计信息和对象统计信息进行实时更新,以确保CBO有良好执行计划。为获取最新系统统计信息和对象统计信息,系统将收集表统计信息过程DBMS_STATS.GATHER_TABLE_STATS和收集索引统计信息过程DBMS_STATS.GATHER_INDEX_STATS写入Oracle的自动维护作业中,定期自动执行,确保统计信息的实时更新。

2.5 存储优化

若将blob格式的数据存储在数据库中,随着数据量的增大,将导致全文索引的膨胀率随之增大,不仅占用较大的存储空间,增加管理维护难度,而且还会影响I/O效率。为此,系统采用了将blob格式(DOC,PDF,txt,Excel,HTML)数据存储在外部专用存储设备上的存储方式,使Oracle Text以 FILE_DATASTORE方式进行数据访问。另外采用了Oracle的ASM(自动存储管理机制)以优化I/O资源实现负载均衡。通过创建ASM实例,系统可以自动将数据均匀地存储在不同通道的不同磁盘上,实现I/O请求的均匀化,并将对文件的操作改为对磁盘组的操作,可显著提高I/O性能。

3 系统测试分析

系统开发完成后,重点对检索速度和查准率进行了测试,测试过程如下:对于检索速度的测试,采用Oracle Text对1 000个Word,PDF格式文档循环插入生成的50万条记录进行了查询时间测试;对于查准率的测试,分别用微软和Adobe的搜索工具对1 000个Word和PDF文档进行10组关键词的检索,两者的检索结果合并后作为基准,与Oracle Text全文检索结果进行比较,以确定Oracle Text检索功能的准确性。

系统测试环境中戴尔 R720服务器CPU为2×4核E5620 2.4 GHz,内存为12 GB,操作系统为redhat 5.5 Linux,Oracle数据库版本为Oracle 11g R2 11.2.0.4。选取50万条文档资料作为测试对象,在1 000,10 000,100 000,200 000,500 000条数据规模下对Oracle Text检索分别进行了20次测试,取其平均值作为测试结果,结果如表1所示。

表1 Oracle Text的检索时间、查准率

测试结果表明:数据库表中的记录在50万数据量级的测试条件下,Oracle Text的检索响应时间小于1 s,平均查准率为88%,可以满足用户需求。

4 结 语

本文采用Oracle Transparent Gateway,Oracle Text等关键技术,结合权限控制,给出了应用系统数据采集与全文检索的方案设计与优化。该方案具有运行效率高、简单快捷等优点,可以有效地采集业务系统中的异构信息资源,提供对多种类型、多种文件格式内容的高效检索。

从该方案应用前景来看,其异构数据库采集功能较强,不仅支持SQL Server数据库,还可扩展至Sybase,DB2等数据库。

参考文献

[1] 魏永丰,刘立月.异构数据库系统中的Oracle与SQL Server 数据共享技术[J].华东交通大学学报,2005,22(1):92?94.

[2] 郭东恩,沈燕.Oracle透明网关技术实现异构数据库互连[J].电脑开发与应用,2008,21(9):58?59.

[3] 蓝永健.利用Oracle透明网关技术进行系统整合的研究[J].广东第二师范学院学报,2008,28(5):92?96.

[4] Oracle Corporation. Oracle 11g database documentation: gateway for SQL server users guide, 11g release 2 [R]. California, USA: Oracle Corporation, 2009.

[5] Oracle Corporation. Oracle 11g database documentation: text application developers guide 11g Release 2 [R]. California, USA: Oracle Corporation, 2009.

[6] Oracle Corporation. Oracle 11g a documentation: text reference [R]. California, USA: Oracle Corporation, 2009.

[7] 熊志辉,王德鑫,王炜,等.基于Oracle的多权限多格式文档组织与检索系统[J].计算机应用,2008,28(9):2407?2409.

[8] 朱松岩,叶华平,李生林,等.基于多层授权体制的档案全文检索系统设计与实现[J].后勤工程学院学报,2005,21(1):57?60.

[9] 李瑞丽,钱皓,黄以凯.基于Oracle大数据的全文检索技术研究与实现[J].微型电脑应用,2013,29(1):18?21.

[10] 李尚初.Oracle的全文检索技术[J].哈尔滨师范大学自然科学学报,2009,25(4):92?95.

[11] Oracle Corporation. Oracle 11g database documentation: performance tuning guide [R]. California, USA: Oracle Corporation, 2009.

[12] 赵伟,张学,廉鑫.全文检索应用开发中的性能优化方法[J].信息与电脑(理论版),2011(4):65?67.

猜你喜欢
全文检索检索资料
Party Time
PAIRS & TWOS
JUST A THOUGHT
2019年第4-6期便捷检索目录
Oracle数据库全文检索性能研究
专利检索中“语义”的表现
全文检索引擎技术在电子病历中的应用
基于KySou的全文检索系统的分析与优化
国际标准检索
国际标准检索