zoukankan      html  css  js  c++  java
  • 数据库行式存储和列式存储的区别

    这里简单介绍数据库行式存储和列式存储的概念和它们之间的区别。

    行式存储

    传统的数据库是关系型的,按行来存储(二维表)数据,如下图:

    其中,只有张三把一行数据填满了,李四王五赵六都没有填满。因为这里的行结构是固定的,每一行都一样,即使你不用,也必须要空到哪里,而不能没有。

    列式存储

    为了与传统数据库做区分,新型的数据库被叫做非关系型数据库,按列来存储数据,如下图:

    原来张三的一列(单元格)数据对应现在张三的一行数据,原来张三的六列数据对应现在张三的六行数据。原来的六列数据是在一行,所以共用一个主键(即张三)。现在变成了六行数据,每行数据都需要一个主键(不然不知道这行数据是谁的),所以原来的主键(即张三的唯一标识)重复了六次。

    由于原来的列变成了现在的行,有需要就加一行,没需要就不加,这样就不会造成空间的浪费。

    行式存储和列式存储的区别

    1.行式存储倾向于结构固定,列式存储倾向于结构弱化。

    2.行式存储存储一行数据仅需要一个主键,列式存储存储一行数据需要多份主键。

    3.列式存储存储的都是业务数据,而列式存储除了业务数据之外,还需要存储列名。

    4.行式存储更像是一个Java Bean,所有的字段都提前定义好,且不能改变;列式存储更像是一个Map,不提前定义,随意往里面添加key/value。

    "关于青春的故事,总是在晴朗的天气里,用最欢快的语气开头。就好像,讲故事的人,真的不知道结局有多忧伤似的。"

  • 相关阅读:
    database homework1
    数据库基础
    MySQL操作
    [BZOJ 1305][CQOI2009]dance跳舞(网络流+二分答案)
    [BZOJ 1834][ZJOI2010]network 网络扩容(费用流)
    [BZOJ 3931][CQOI2015]网络吞吐量(SPFA+网络流)
    [BZOJ 3576][Hnoi2014]江南乐(博弈论)
    [BZOJ 1086][SCOI2005]王室联邦(贪心?树分块)
    [BZOJ 4765]普通计算姬(分块+树状数组)
    [BZOJ 4802]欧拉函数(Pollard_rho+Miller_Rabin)
  • 原文地址:https://www.cnblogs.com/yanggb/p/11179056.html
Copyright © 2011-2022 走看看