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

面向行与面向列

时间:2015-09-02 10:46:06      阅读:1010      评论:0      收藏:0      [点我收藏+]

标签:

最近看到H5、H2、HBase的,以为有啥关联,后来知道H5->HTML5(很多人在吐槽这个缩写), H2 -> 一个内存数据库, HBase是一个分布式的、面向列的开源数据库。

-。-

原谅我着急的智商,以我对数据库的了(shui)解(ping),我之前根本不知道”基于行“与”面向列“这样的概念。。只知道SELECT\UPDATE\DELETE...

好吧,好好搜搜,找到这么一篇(H2与HBase)面向行or面向列的存储模型?

数据库的内部结构不敢多谈,因为不清楚。-。- 大体上是采用了B-Tree或其变种(B* Tree, LSM-Tree等)来组织数据方便查询也减少磁盘IO次数。

数据在磁盘上按块存放,这每一块里面的内容及格式决定了是”基于行“还是”面向列“的。

基于行:

  数据库表的每一行,都是一条独立的数据,这样一行,如果存储在磁盘上的一块区域内,通过标记哪一列是什么值来存储。比如:

     列1:12312列2:2222列3:333 (不要在意如何区分列等细节,总之放一块就行,因为我也不知道0.0)

面向列:

     没有那么死板的表~列的数目可以随意(理论上)~

    在磁盘上存储的时候,也是一块一块滴(要不呢。。)~但是这一块里面存的是同样类型的数据~

    假如有两条数据: 数据为两个学生,有姓名,身高和年龄三个字段。

   小明  172        14

   小张  (木有)      20

   那么,在面向列的数据库里面,(应该)是这样的:

 key      type   value  等等

 rowId1  姓名   小明

 rowId1  年龄   14

 rowId1  身高   172

 rowId2  姓名   小张

 rowId2  年龄    20

属于同一条数据的rowId都是一样的,用来关联~

查询效率我不太了解,但是应该可以猜到,面向列的可以利用分布式的优势来提高查询速度。

比如当数据量比较大的时候,可以通过rowId分为几组,分布到不同的机器上。当查询为”小明“时,多个机器都并行找~找到rowId后,再拿别的内容就快了~

 

 

好吧,只是表达一下自己的想法以及自己个人对面向列的了解,最好还是看一下上面我参考的那篇~

权当我在扯淡~欢迎批评指出~

知识不够用,打算再补一下数据库知识~-。-

面向行与面向列

标签:

原文地址:http://www.cnblogs.com/kischn/p/4777835.html

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