技术开发 频道

一位资深DBA的十年企业数据库管理经历

  【IT168 专稿】针对目前中小企业IT系统选型缺乏强大奖金和雄厚技术支持的情况,IT168推出了中小企业IT系统选型系列专题,分别介绍了不同行业中小企业在IT系统选型的选型指导和产品推荐,以及对相关的厂商和用户进行了采访,此选题旨在帮助中小企业在IT系统选型给出一些参考。本期专题关注的行业是政府行业,借此机会,我们采访了某数据管理中心高级工程师、《剑破冰山——Oracle开发艺术》联合作者、ITPUB资深版主卢涛(网名:〇〇)。卢涛向我们介绍了他十年的数据库管理工作经历,希望这个经历的介绍能对企业在部署数据库有一个借鉴的经验,也希望给刚入行的DBA一个学习的榜样。

一位资深DBA的十年企业数据库管理经历
▲ITPUB资深版主卢涛(网名:〇〇)

  卢涛介绍说,在工作当中首次接触数据库要上溯到上世纪90年代中期,那时,计算机还是以单机为主,应用的主要数据库是FoxPro,这虽然也是一款支持多用户的关系型数据库产品,但主要还是限于单机使用。使用数据库的主要方式是编写和运行过程式的,包括界面和业务逻辑的prg程序访问后台的表,用到的数据库功能很有限,数据库管理也仅限于数据库表文件和程序文件的备份。

  大约在2001年,首次接触了Oracle 8i数据库,其实,单位使用这种数据库是比这个时间更早的,但只有少数Unix服务器使用,还没有推广到一般的应用。那时基本上是双轨运行,大型数据分析处理用Oracle,编写PL/SQL程序或用Pro*C程序处理业务逻辑,小型数据采集和加工用其他小型数据库,比如MS Access、Visual FoxPro等,还有自行设计的Visual C++编写的用类数据库的文件存储和处理保表的系统。

  2004年,第一次将C/S架构引入到数据采集软件之中,软件不必和小型数据库管理系统捆绑,数据库采用MySQL 4,从现在的标准去看,那是一个缺少很多基本功能的数据库,比如没有定点小数数值类型,SQL语句不支持子查询,因此给开发工作带了很多困难,基本上业务逻辑还是通过C++应用程序来实现,只不过可以通过网络并发访问数据库罢了。在数据分析阶段仍然采用Unix上的Oracle 9i数据库,因为它在大数据量处理上,性能比MySQL具有很大的优势,功能也强大很多。利用OEM工具可以进行数据库的管理和性能诊断,数据库管理使用Unix的后台定时任务crontab来执行逻辑导出到磁盘,定期备份到磁带。由于应用程序的默认口令比较简单,为了防止未经授权的用户利用该用户直接访问数据库,利用触发器和SQL net配置文件限制登录IP,保证数据库安全。

  2007年,将2004年的系统进行了升级改造,数据采集和分析的数据库同时支持MySQL 5、Oracle和MS SQL Server 2005,软件改为符合j2ee标准的3层C/S架构,中间层使用Tomcat,由于要兼顾不同数据的特点,应用软件专门虚拟了一层统一的数据访问层,自动根据数据库类别映射到不同的功能,比如数据导入,SQL Server用bcp实现,Oracle调用SQL Loader, MySQL则采用load data in file方法,有些数据库不支持的功能,就用等价的办法替代,比如用表连接代替子查询。在数据分析阶段采用Unix上的Oracle 10g数据库,充分利用数据库的功能,比如扩展的group by、分区、数据泵导入导出使得软件的性能得到很大提高。支持多种数据库平台给开发和测试工作带来了很大的工作量和维护难度,因为任何一个功能必须考虑各种数据库的特性,否则就会有问题,而不同数据库的处理机制又有较大区别。

  2008年,组织另外一个团队开发了一套数据采集和分析报表系统,采用3层B/S架构,不再支持多种数据库平台。对数据量较少的用户,用Oracle XE数据库,除了一些高级功能,如并行、分区等外,绝大多数功能都和Oracle 10个没有区别,极大地方便了将来数据量扩大时,升级到Oracle标准版或企业版。由于新开发队伍对Oracle数据库的了解不够,采用了一些不合理的表结构设计和应用程序架构,应用程序承担了大多数数据处理任务,导致不能充分发挥数据库的功能,软件性能不是很高,但仍然可以完成任务。数据库管理通过EM页面,无需安装客户端,便于随时随地监控数据库的状况。

  2010年,在2008年的系统进行了升级改造,一方面针对数据分析功能修改了算法,充分利用数据库的功能,另一方面,利用多个应用服务器合作完成较大的任务,充分利用硬件CPU和内存资源。使得产品性能有比较大的提升。为了提高并发访问能力和负载均衡,使用了F5设备。

  目前,2010年升级的系统正在运行当中,为了提高可用性,将数据库改用Oracle 11g R2 RAC。为了解决上下级数据同步问题,先后试用了GoldenGate和IBM MQ软件,有待于下一阶段实施。

  数据库在业务中的重要性日益提高,对于数据管理和处理有其他软件不能替代的作用。完全可以说现在的数据中心就是以数据库为中心的,其上层的应用软件、中间件和下层的硬件资源都是围绕数据库提供服务的。举个例子,虽然我们2001年的系统不再运行,但我们仍可以从当时的数据库中导出数据,用于2010年系统的历史数据比较和分析。可以想见,将来软件可能进一步改进和发展,但数据却是持久的。

  十余年的工作,对数据库开发和维护有下面几点体会:

  1. 开发数据处理软件已经离不开数据库, 要充分发挥数据库的功能才能开发出高效的软件。

  2. 要选择一种功能比较完善的数据库,充分利用数据库版本的升级带来的新技术的好处。

  3. 一个应用同时支持多种数据库是困难的,应该集中精力用好一种数据库。选择了一种数据库就不轻易改变,以节省学习成本和继承开发经验。

  4. 数据库的表现需要各种软硬件的配合,比如主机、存储、操作系统和应用软件,开发人员了解得越多,越有利于开发高效的软件。数据库应选择能充分利用硬件的版本,比如用64位版本。开发人员应了解技术的发展,了解过去的正确观念在新条件下未必依然正确,比如用磁盘阵列存储就不必人工指定表分区和数据文件对应就可以实现IO在多个磁盘的均衡分布。内存和CPU增加使SQL可以采用HASH连接等获得更好的执行计划。

  5. 数据库优化工作应在设计阶段就考虑,这时更改的成本最低,收效最大。系统运行时同时监控性能的状态,及时作出必要的调整,可以利用数据库提供的各种工具。

  6. 随着用户业务种类和数量的增长,需要管理的数据库数量也不断增加、环境越来越复杂,管理的难度也提高了,需要数据库开发人员和数据库管理员分工合作。虽然数据库软件在一定程度上能提供帮助,仍然需要经验丰富的专业的人员和完善的数据库管理制度,并严格执行。

  针对于数据库未来几年所面临的挑战,卢涛给出了以下几点:

  在未来的几年,随着数据大集中的要求进一步提高,系统的在线用户将有较大的增长,对系统应付并发读写访问的能力是一个考验,考虑利用内存数据库等技术提高在线事务处理的能力。

  数据库的安全日益重要。同样不能仅依靠数据库提供的功能,比如加密、口令安全策略,而要从物理安全、访问控制、安全网络协议、数据库备份恢复等多方面予以保障,经过实践检验的制度和应急方案必不可少,同时加强开发人员和用户管理,限制应用程序的用户权限,禁止管理员用户执行非管理操作。某些数据库产品提供了审计功能,如果业务有此方面需要,也考虑采用。

  传统数据库按用途分,分为OLTP和数据仓库,不同用途的数据库配置参数有一些差别,编写的应用程序也很难同时满足这2种不同的业务需要。某些厂商已经推出了同时适用2种应用场合的产品。

  2010-2011年是列存储数据库发展较快的阶段,对海量数据仓库的分析查询有很好的效果。传统数据库厂商在这方面动作不大,希望能在新版软件中添加这方面的功能,以进一步提高数据分析操作的性能。

0
相关文章