【IT168报道】4月2日-3日,中国首届数据库技术大会在北京盛大召开。在这一面向数据库及商业智能技术专业人群的技术盛会上,各路DBA、数据库开发,商业智能技术高手云集,分享各自在数据库技术领域深入研究的体会和非常好的实践。
李强在中国数据库技术大会演讲
在4月2日进行的“SQL Server、DB2应用实践专场”中,来自于华为公司的首席DBA做了题为“数据库架构设计与选型经验谈”的演讲,会后,IT168记者对李强进行了专访。
专访华为公司的首席DBA 李强现场
记者了解到,李强负责制定公司商用数据库选型策略,支撑关键战略产品的数据库设计与全球交付。他在主流数据库产品如DB2/ORACLE的企业级应用方面有深厚的工作背景,同时关注数据建模、数据访问、内存库等技术领域。在2006年进行的全国十大杰出数据库工程师评选活动中,李强入选为十大杰出数据库工程师。
李强数据库架构设计与选型经验谈 演讲现场
在演讲中,李强首先分析了关键性业务系统的设计特点,他指出,关键性业务系统中,除了考虑长数据库的在OLAP和OLTP方面的高性能、可扩展性之外,还要考虑高可靠性以及成本问题,成本不仅仅包括购买软硬件的开销,还要考虑开发工作量和后期维护等等,基于廉价硬件搭建可扩展的集群系统是大势所趋。
对于数据库整体架构设计,他认为,可以通过模式设计提高系统整体质量,在选型层面把握不同的数据库集群模式的差异性; 在系统架构上挖掘中间层应用数据访问模式的能力; 在数据库部署上探索大数据量下存储设计模式; 在开发流程和后期维护上考虑数据库重构。
在数据库集群模式设计方面,有Share everything架构和Share nothing架构,前者以以ORACLE RAC为代表,IBM DB2 Purescale为挑战者;后者以IBM DB2 DPF为代表。
李强接着着重对比分析了Oracle RAC和DB2 DPF两种在关键性应用中主要常用的架构。
对于DB2 Purescale架构,李强给出了更多的分析和评价,是否会成为终结者有待时间检验。在这种架构中,客户端看到的是一个数据库实例,DB2实例运行在各节点上;集成GPFS,RDMA;核心CS模块提供全局缓冲。
DB2 Purescale架构
数据库存储设计模式
李强分析了大数据量的特点,解释了存储设计模式,他认为,数据混放后果将十分严重。在分析数据模式时,可以在数据流向,数据访问特点,数据量,数据的增长量,数据的生命周期等几个方面对数据进行多维度划分分析,然后根据模式对数据表进行分类,可以分为恒数表,递增表,流水表,状态表。
在进行数据模型设计时,必须遵循相关要点,如:对核心表, 务必要尊重范式,注意字段个数和字段长度, 注意范围查询;对过程表,设计明显的代表数据生命周期终止的字段,从增删改的代价来考虑,插入代价最小,修改需检索数据,删除最为昂贵。对恒数表,设计符合表大小的数据分配参数,较小的恒数表不建议建立索引;对于递增表,严格区别核心数据和过程数据,分区的大小尽量均衡,索引的键值选择性尽量高,谨慎使用复合索引,按照关联关系设计合适的分区和索引;对流水表,要注意分区的粒度和选择,不建议建立太多索引。
对于状态表的设计,需要考虑更多状态的转换:
软件架构中的存储设计模式:
数据库设计如何重构
关于重构,我们更多的是听到代码重构,对于设据库设计,同样需要通过重构的手段来演进设计。但数据库领域一向对待变更缺乏很好的应对机制,面临巨大的挑战,对开发者来说,尽管现在是“敏捷”的时代,可是数据似乎无法敏捷;对客户而言,现在是“随需应变”的时代,可是数据却很难变更。
Flower在《代码重构》一书中提到“代码味道”的概念,重构时,我们需要找出有“坏味道”的代码块。对数据库而言,同样也要找出“数据库的味道”,如: 多用途的列,智能的列,多用途的表,行或列太多的表,重复的数据等。
李强认为,在敏捷成为主流的今天,重构是使数据库社区跟上时代的快车道, 重构是低成本提升系统可靠性的法宝。比如,拆分表;关联表就是典型的数据库重构操作。
关于数据访问模式设计,李强谈到,通过改善中间件的数据访问模式设计,可以大规模提高系统整体性能,实现架构的平滑扩展,还可以屏蔽数据库的差异性。最后,他举例说明了并发模式和缓存模式这2种最常见的数据库访问设计模式。
最后,李强展望了数据库行业的前景,认为数据库技术不会停滞不前,还会以更快的速度发展。数据库技术涉及的专业知识非常广泛,各子领域都面临这许多挑战和机遇,数据库专业工作者在这些技术发展过程中,也能找到更多的机会,实现自身的价值。