数据库表结构设计方法

author:skate

time:2011-02-12


 

 

数据库表结构设计方法

 

当我们设计一个数据库存储模式时,要仔细分析数据模式,不要一股脑的把所有的数据都放在一起。那样的话对系统的可用性,高效能,扩展性都会有严重的影响。当然你设计的系统非常小,完全可以用最简单的方法。

 

要通过对业务的熟练,从不同的角度对数据进行多维度分析,一般可以从如下几个方向分析:

 

1.       数据流向

2.       数据访问特点

3.       数据量的大小

4.       数据的增长量

5.       数据的生命周期

 

根据以上数据特点,综合数据模式对数据表进行分类:

 

1.       恒数表

2.       递增表

3.       流水表

4.       状态表

5.       核心表

6.       过程表

 

在我们进行大数据量系统的模型设计时,根据不同的数据表,必须要遵循这几个要点。

 

 

核心表:

核心表是系统访问最频繁的,在设计时要考虑访问的代价,一定要遵循范式,注意字段的个数和字段长度,注意范围查询。如果核心表的数据量很大的话,要根据分区表或表路由等方式进行数据归档,以保证核心表的性能。

 

过程表:

过程表顾名思义是用来记录某一过程的,一般指数据的生命周期;在设计过程表时要设计一个明显代表数据生命周期的字段,对于数据仓库系统更是要合理的利用生命周期字段,可以高效的统计不同生命周期的数据;在设计表时也要考虑增删改的代价,插入的代价最小,修改需要检索数据保留修改字段值,删除要保留整条记录,代价最为昂贵。

 

恒数表:

恒数表几乎很少变化,类似我们使用字典表,在设计这样的表时,要设计好表的参数,较小的表就不建议建立索引。

 

递增表:

递增表的增长是很快的,并不是所有的数据都是常用的,所以分区的大小要尽量均衡,严格区分核心数据和过程数据,索引的键值选择性尽量高,谨慎使用复合索引,按照关联关系设计合适的分区和索引。

 

流水表:

流水表类似记录log,记录些流水信息,流水表数据量一般都很大,信息几乎没有变更。在设计时要注意分区的粒度和选择,一般不建议建立太多的索引。

 

状态表:

状态表一般指记录某一行为的状态过程,生命周期很短,很容易和过程表混淆。可以简单区别它们,状态表是动作行为的轨迹;过程表是数据的生命周期。

 

 

状态表的应用举例:

 

状态表在替代分布式事务起到重要的作用。

参考:http://blog.csdn.net/wyzxg/archive/2011/02/12/6181574.aspx

 

 

 

 

 

 

-------end------

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。