行数据库和列数据库各有什么优势?

大部分数据库是行数据库,数据是按照一行一行存储的,这最符合人类的思维模型,但是有人确认为数据可以按列存储,并且认为这样做大有益处,为什么呢?

先看看下面的数据:

row IDStudent IDNameProvinceAge
11001张三北京16
21002李四湖北15
31003王五河南16
41004刘备北京14
51005关羽上海16
行数据库如何存储数据

在行数据库里这些数据是一行一行存储的,比如“王五”的数据:

row IDStudent IDNameProvinceAge
31003王五河南16

要查找某个记录只要找到它的行ID,就可以一次取出这个记录的所有元素。比如上面的王五,只需要找到 row ID == 3 的记录就可以了。

列数据库如何存储数据

列数据库把数据库一列一列的存储在一起。比如上面那张表,它就会存储为下面的形式。
列数据库的存储
可以看到所有的 Student ID 被存储在一起,所有的 name 被存储在一起,所有的 Province 被存储在一起,当然所有的 Age 也被存储在一起。那么要读取王五的记录,就需要分别读取4列找到王五的记录分别读出来。

为什么说分析数据列数据库有性能优势?

如果我们要统计学生的平均年龄,我们需要把所有的年龄加起来然后再除以学生的人数。

  1. 行数据库会怎么做呢?
    行数据库需要把每行里的 age 数据读出来,如果有上百万行就需要读百万次所有的数据,然后再摘出来age进行统计。
  2. 列数据库会如何做呢?
    列数据库可以一次性读出 age 列里的所有数据,就能进行统计。

列数据库相比行数据库只要四分之一的 I/O 工作量就能完成上面的任务。

为什么说列数据库更易于数据的压缩存储?

由于每列的数据类型都是一样的,这样更便于数据的压缩,所以列数据库可以把数据压缩的更小。

总结

本文介绍了行数据库和列数据库是如何存储数据的。行数据库更适合事务处理,因为行数据库可以一次性读出一条记录所有的内容,而列数据库有数据分析的性能优势,因为会使用更少的I/O,而存储上因为数据类型一样,更易于数据的压缩存储。当然行数据库和列数据库的优势比较不限于此,在明白相关的概念后,我相信大家在做架构设计时就会知道如何选择了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

surfirst

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值