上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2 数据库的设计
数据库的设计在系统设计当中是一个非常重要的环节,但目前看来,很多开发商忽略了它应有的重要性,大多数的数据库设计基本上等同于创建业务所需要的所有对象,仅此而已。这是作者从事了10年DBA工作的切身体会,也许这也不能全怪开发商,比如他们有工期的压力,有人员成本的压力,那应该是另外一个话题。
对于数据库的设计,我认为除了一些必需的对象创建之外,应该还要更多地考虑在整个系统运行的生命周期中,按照系统的实际情况及可能的变化做一些前瞻性的设计,以基本满足系统生命周期里的各方面需求,不至于发生大的修改或是升级。
说起系统的升级,这是一个有趣的话题,可能很多开发人员,特别是做项目开发的人员,应该会深有体会。比如我身边的一些案例,明明是最初设计上存在着缺陷或者疏漏,导致后来系统出了问题,却成了开发商项目的二期、三期的理由,也成为软件1.0版、2.0版的理由。
基本上看来,前期数据库设计的一个根基就是要弄清楚数据库的类型。通常来说,我们把业务分为两类,在线事务处理系统(OLTP)和在线分析系统(OLAP)或者DSS(决策支持系统),这两类系统在数据库的设计上是如此不同,甚至有些地方的设计是貌似相悖的。比如OLTP系统强调数据库的内存效率,强调内存各种指标的命中率,强调绑定变量,强调并发操作;而OLAP系统则强调数据分析,强调SQL执行时长,强调磁盘I/O,强调分区等。因为这些区别,在数据库设计的阶段,弄清楚数据库类型是至关重要的,只有在这个前提之下,才能够讨论数据库的具体设计,否则设计必然是盲目的,“皮之不存毛将焉附”。