数据库存储设计模式
李强分析了大数据量的特点,解释了存储设计模式,他认为,数据混放后果将十分严重。在分析数据模式时,可以在数据流向,数据访问特点,数据量,数据的增长量,数据的生命周期等几个方面对数据进行多维度划分分析,然后根据模式对数据表进行分类,可以分为恒数表,递增表,流水表,状态表。
在进行数据模型设计时,必须遵循相关要点,如:对核心表, 务必要尊重范式,注意字段个数和字段长度, 注意范围查询;对过程表,设计明显的代表数据生命周期终止的字段,从增删改的代价来考虑,插入代价最小,修改需检索数据,删除最为昂贵。对恒数表,设计符合表大小的数据分配参数,较小的恒数表不建议建立索引;对于递增表,严格区别核心数据和过程数据,分区的大小尽量均衡,索引的键值选择性尽量高,谨慎使用复合索引,按照关联关系设计合适的分区和索引;对流水表,要注意分区的粒度和选择,不建议建立太多索引。
对于状态表的设计,需要考虑更多状态的转换:
软件架构中的存储设计模式:
数据库设计如何重构
关于重构,我们更多的是听到代码重构,对于设据库设计,同样需要通过重构的手段来演进设计。但数据库领域一向对待变更缺乏很好的应对机制,面临巨大的挑战,对开发者来说,尽管现在是“敏捷”的时代,可是数据似乎无法敏捷;对客户而言,现在是“随需应变”的时代,可是数据却很难变更。
Flower在《代码重构》一书中提到“代码味道”的概念,重构时,我们需要找出有“坏味道”的代码块。对数据库而言,同样也要找出“数据库的味道”,如: 多用途的列,智能的列,多用途的表,行或列太多的表,重复的数据等。
李强认为,在敏捷成为主流的今天,重构是使数据库社区跟上时代的快车道, 重构是低成本提升系统可靠性的法宝。比如,拆分表;关联表就是典型的数据库重构操作。
关于数据访问模式设计,李强谈到,通过改善中间件的数据访问模式设计,可以大规模提高系统整体性能,实现架构的平滑扩展,还可以屏蔽数据库的差异性。最后,他举例说明了并发模式和缓存模式这2种最常见的数据库访问设计模式。
最后,李强展望了数据库行业的前景,认为数据库技术不会停滞不前,还会以更快的速度发展。数据库技术涉及的专业知识非常广泛,各子领域都面临这许多挑战和机遇,数据库专业工作者在这些技术发展过程中,也能找到更多的机会,实现自身的价值。