学习一下数据库

2014年11月21日 by 林贵南

日常工作中,接触了Oracle,Essbase,也包括其他的二维数据库。 从存储方式来说, 主要有列存储, 行存储。

从应用来说:
行存储(比如Oracle,sql server,mysql,sqllite,。。。): 更适合OLTP,适合 更新、 插入,删除 的操作。
列存储(比如 Hbase,。。。): 更适合 OLAP, 查询方面比较厉害,适合商业智能分析。

从原理上来说:
行存储, 主要是按照 数据的行 存储在文件上。 因此, 如果对于有索引的查询条件,因为采用b-tree查询,所以针对这种情形在行存储上还是没有任何压力的, 如果没有索引, 那就必须要用到全表扫描, 需要浪费大量的IO。另外,因为是行存储,所以, 对于超级多的列的表格来说, 存储上就有压力, 这也就是早期的Oracle最多只能1024列,

列存储, 主要是按照 数据的列 存储在文件上, 因为对于超级大的表的存储也不会存在压力. 但是, 如果是对于这个表有大量的 插入, 更新, 删除 动作的话, 因为在数据存储上, 只是简单的清零动作, 存储空间要不断的扩展, 所以性能就会很差. 但是从查询的角度来说, 因为每次我们都会下命令 where id=2 类似的命令, 也就是告知数据库从 id 这列里头进行抓取, 这个查询过程就会超级快.

从未来的应用场景来说, 大数据只是个概念, 从技术角度来理解, 就是要针对不同的业务场景, 还是要针对不同的业务场景采用不同的数据库. 10年前, 可能自己搞个数据库会比较复杂, 随着技术的演化,目前也有很多的中国企业, 在研发着自己的数据库.

列存储数据库关键技术综述:
http://wenku.baidu.com/view/8e1ef7d128ea81c758f5789b.html

开源的列数据库(用于科研学习):
http://db.csail.mit.edu/projects/cstore/#overview

下次, 有针对性的再研究一下essbase的原理. 总觉得多维数据库是一个很有意思的东西, 应用也很重要的, 但是目前还有很多的缺陷.

Comments

  1. 查个资料查到itpub你的回复。顺手打开这里,没想到你还在更新。-周锷


    — greeting from an old friend    12月 12, 03:49 下午    #
  2. @鳄鱼,

    谢谢老同事,谢谢还记得我,哈哈~


    — Jimmy    12月 16, 11:39 下午    #

启用垃圾过滤机制: 留言须2步: 预览 --> 送出

  Textile 帮助