码迷,mamicode.com
首页 > 其他好文 > 详细

列式存储设计实战

时间:2014-06-02 16:26:56      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:c   style   a   http   ext   width   

背景:

      开发个学生系统,数据库设计。

设计实施:

传统数据库学生表行设计

学号

姓名

性别

年龄

1

张三

16

2

李红

15

3

王五

16

 

 

 

 

 

 

当想扩展属性时,相对应的会增加字段。

学号

姓名

性别

年龄

住址

1

张三

16

河南

2

李红

15

湖北

3

王五

      男

16

北京

 

 

 

 

 

 

实际开发中这样做的缺点:

1:属性字段向主表加,会导致列越来越多,增加表拆分成本。

2:  增加字段,程序中实体模型,SQL查询字段,DTO及文档数据模型都要跟着发生变化,增加成本。

3:查询单个字段,也需要查询整个行。增加Io消耗。

 

Ps:优点就不多说了。

 

 

怎么解决这个问题呢?其实很简单,只是一个思路的转变。

 

我们把一个对象==一条行记录,转化成列式存储。

 

学号

属性key

值value

1

姓名

张三

1

性别

1

年龄

16

1

住址

河南

....

.....

....

 

 

 

 

 

 

 

 

 

这样做就完美解决上面的问题了。数据量也会N倍增加。

 

 

题外话:

本文仅仅是思路,具体设计看需求,个人习惯。

索引字段不需要查询整行,查询需要行转列等等,这类问题不做讨论。

 

相关资料

1:列式数据库 http://zh.wikipedia.org/wiki/%E5%88%97%E5%BC%8F%E6%95%B0%E6%8D%AE%E5%BA%93

2:五大存储模型 http://www.csdn.net/article/2012-03-12/313041

 

列式存储设计实战,布布扣,bubuko.com

列式存储设计实战

标签:c   style   a   http   ext   width   

原文地址:http://www.cnblogs.com/mushroom/p/3764171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!