数据库转存为平面文件应用系统的设计

2011-12-31 00:00:00张军
电脑知识与技术 2011年26期


  摘要:该文分析了现有数据库存储的背景,通过介绍SQLULDR2工具及其优点,设计了将数据库大容量数据转存为平面文件的应用系统,并介绍了如何利用外部表方式,在应用系统中直接使用平面文件。
  关键词:SQLULDR2工具;大容量数据;平面文件;外部表
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)26-6336-02
  随着数据仓库与数据挖掘技术的逐渐推广,各企业中生产系统和管理系统等系统数据日益庞大,而对于这些大容量数据的查询与分析也日益增多,这就导致企业如果想要存储完整的数据用于分析,就必须准备很大容量的数据库系统。然而,对于很多生产运营的企业来说,大容量的数据库系统存在很多问题,如数据存储空间占用较大,数据过多造成查询和分析效率降低等。而如果将数据库中的数据转存为平面文件形式,存储到磁盘中,不仅可以节省数据库存储空间,也可以降低数据库应用负荷。同时,数据库中的数据在转存为平面文件存储后,也可以通过外部表的形式让数据库可以直接应用,减少了数据重新导入环节,且方便用户直接使用平面文件进行数据分析。
  基于以上分析,本文通过介绍SQLULDR2工具及其优点,设计了将数据库大容量数据转存为平面文件的应用系统,并介绍了如何利用外部表方式,在应用系统中直接使用平面文件。
  1 背景
  快速、准确、高效地收集和分析信息,是企业提高决策水平和增强企业竞争力的重要手段。而建立以数据仓库(Data Warehouse,DW)技术为基础、以数据库的联机分析处理(On-line Analytical Processing,OLAP)技术和数据挖掘(Data Mining,DM)技术为实现手段的决策支持系统[1]是现如今最常用的企业级决策支持系统。数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它并不是所谓的“大型数据库”。数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大,这就造成了在应用数据仓库时,对数据仓库所在服务器等硬件设备的要求也很大。且对于大多数企业来说,主要的数据操作是对近期数据进行操作,而对于大量的历史数据的决策分析,并不是常用的。在生产环境的数据库中,经常存储着大量的历史数据,用于不常用的决策分析处理,这不仅给数据库带来存储压力,也使得在实际应用的系统中,由于数据库负荷过大而造成系统响应时间过长,这并不利于实际的生产应用[2]。如何将不常用的海量历史数据存储为不占用数据库资源的形式,并在需要应用时可以快速提取应用,成为现在企业中需要重点研究的问题。
  2 应用工具及技术简介
  2.1 SQLULDR2工具
  Sqluldr2是灵活与强大的Oracle文本导出程序,已被大众使用三年多了,有几千国内外DBA在使用它或使用过它。Oracle有一个工具叫SQL*Loader(sqlldr),是用来将文本文件装载到数据库中的,而Sqluldr2是用来将Oracle中的数据导出成文本的,即SQL*UnLoader(sqluldr)。文本方式是不同类型数据库数据交换的重要方式,同时,对于从生产环境中导出的巨量数据,利用文本方式存储,也是导出速度极为快速,可到达每秒25万条记录。
  经过试验,利用Sqluldr2导出1G数据大约需要1分钟左右。
  2.2 外部表技术
  外部表是Oracle9i及以上版本中,新引进的一种表结构形式。这些表并不存储在数据库本身中,而是放在数据库之外,即放在平常的操作系统文件中。利用外部表可以查询数据库之外的一个文件,就好像这个文件也是数据库中平常的表一样。外部表对于向数据库加载数据最有用(外部表是非常强大的数据加载工具)[3]。
  本系统已经将数据库中的历史数据转存为平面文件形式,因此在需要应用这些数据时,只需要在应用数据库中建立外部表,并指向对应的历史数据文件,即可快速使用这些平面文件数据,减少了数据加载的时间。
  3 转存应用描述
  本文主要的目的是将企业中不常用的历史数据从数据库中转存到平面文件中,以此释放数据库的存储空间,同时,将转存出的平面文件进行压缩,使之所占的磁盘空间尽可能减少。
  具体功能流程如图1。
  在准备配置阶段,需要建立定时方法,使历史数据可以通过定时方法自动转存,减少人工操作。在定时方法开始执行后,要先建立本地临时文件夹,用于临时存储从数据库转存出的平面文件。查询导出配置信息列表,便于后期功能中根据配置信息生成sqluldr2脚本或建立FTP连接等功能的实现。
  在循环导出数据阶段,根据查询到的导出配置信息列表,循环查询该列表进行历史数据导出操作。在循环流程中,先根据导出配置信息,生成sqluldr2脚本,用于执行导出功能,然后调用sqluldr2工具,执行生成的脚本以导出相关历史数据,将导出后的历史数据平面文件存储与本地临时文件夹中后,将平面文件进行压缩,并获取压缩后文件大小,用于判断导出数据是否正常。在导出生成文件并压缩流程全部正常执行后,添加导出记录,便于日后查询导出功能相关信息。至此,一个循环结束,根据配置信息列表执行下一个导出循环,直至配置信息列表中所配置的历史数据全部导出完成。
  在文件FTP至存储服务器阶段,由于历史数据在导出后转存为压缩的平面文件形式,存于本地的临时文件夹中,而基于数据文件分布式存储的原则,需要将压缩文件通过FTP上传至指定服务器中。根据配置信息,建立本地服务器与文件存储服务器的FTP连接,在FTP连接后,将本地临时文件夹中的压缩文件通过FTP上传至文件存储服务器的指定路径中,并断开FTP连接。
  在文件FTP至备份服务器阶段,由于历史数据也是较为重要的信息数据,因此需要对已经转存出的历史数据文件进行备份,因此需要将历史数据的压缩文件通过FTP上传至备份服务器中。该阶段功能流程同上一步相同,建立本地服务器与文件备份服务器的FTP连接,将压缩文件上传至备份服务器后断开FTP连接。在该系统中,文件FTP至存储服务器与FTP至备份服务器的操作是串行进行的,因此,在文件FTP至备份服务器成功后,需要将本地临时文件夹删除,以释放本地服务器的存储资源。
  4 平面文件应用系统设计
  在数据转存为平面文件后,在需要应用时,只需在原数据库中建立对于表结构的外部表,并使外部表对应解压后的平面文件即可。
  平面文件应用系统流程设计如图2。
  平面文件的应用可以分为三种,第一种是作为页面呈现数据供用户查询,第二种是应用于创建外部表,第三种是客户下载后用于决策分析。
  首先,获取用户在页面上的输入信息,并根据输入信息查询系统,返回需要呈现的历史数据压缩文件列表。用户可查看各文件的详细信息,如文件大小,文件对应表信息,文件存储路径等。
  在应用文件用于创建外部表或用户下载时,需要获取文件的下载信息,并建立本地临时文件夹用于在本地服务器存储文件。根据文件信息建立与文件所在服务器的FTP连接,通过FTP下载文件至本地临时文件夹后,断开FTP连接。在用于用户下载时,可以直接响应界面下载功能,将存储于本地临时文件夹中的压缩文件下载至用户电脑中。
  在获取了应用文件后,如需将文件用于创建外部表功能,则需要对本地临时文件夹中的压缩文件进行解压,并获取用户在页面中输入的应用数据库及服务器信息,根据这些信息建立应用数据库连接和应用服务器FTP连接。在连接建立好后,需要在应用数据库上建立外部表结构,并将解压后的文件通过FTP上传至应用服务器指定路径中,将外部表指向对应的解压后文件,以此完成外部表的创建,并将外部表名返回。
  在文件应用完成后,需要删除本地创建的临时文件夹,并添加应用或下载记录,便于日后的相关查询工作。
  5 结论
  本文通过介绍了大容量数据存储背景及数据转存工具、外部表技术,设计了一个数据库数据转存为平面文件应用的系统。在该系统中,利用Sqluldr2工具将数据库中存储的大容量数据(不常用的历史数据)转存为平面文件,并将平面文件压缩后,通过FTP进行分布存储,在需要应用时,在应用数据库中建立外部表,并从文件存储路径中通过FTP取回文件存储于应用服务器的指定路径中,将外部表对应数据文件,使平面数据文件可以快速应用于数据库中。
  该系统可以广泛用于通信或银行企业,对不常用的大容量历史数据,通过此系统进行数据存储,既可以节省数据存储空间,同时也保证了数据的快速响应及多种方式应用。
  参考文献:
  [1] 黄斌.海量数据库数据存储及快速检索技术研究[D].北京:中国科学院研