分布式数据库Greenplum基本原理和使用
行式存储
传统的关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based)。
在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的,一行中的数据在存储介质中以连续存储形式存在。
数据是一行一行的存贮起来的,如果想要查询,就会一行行的扫描,从而得到数据。假定我们只想要name这一行的数据,其实查询的时候也必须把其他的数据顺便给查出来了,因为他们是一起的。
每一行都有id,name,age,sex属性,每一行的所有属性连贯起来存贮起来。即使某一个行某一个字段为空,也会占用一个存贮位置。
缺点:即使我们只想要一行的数据,也得整行扫描,多的那些数据都是磁盘IO,不得不需要加上额外的不需要的数据。
解决方案:行式数据库的给出的优化方案是加索引、给表分区等等,通过给字段额外的存储空间来换取查询时间,但这样存储空间、插入逻辑会更复杂。
适用场景:
1、适合随机的增删改查操作;
2、需要在行中选取所有属性的查询操作;
3、需要频繁插入或更新的操作,其操作与索引和行的大小更为相关。
列式存储
列式存储(Column-based)是相对于行式存储来说的,新兴的 Hbase、HP Vertica、EMC、Greenplum 等分布式数据库均采用列式存储。
数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。
我们只想要name这一列,这个时候我们就只需要把这一列查询出来,其他的不用管,这样就减少了数据量,这个优点尤其是在海量数据的时候尤其明显,查询速度秒杀行式数据库。
MySQL查询优化常用的手段是建立索引,数据量一旦大的时候,索引也会成倍的增长。
列式数据库的每一列就是索引,减少了额外建立索引的内容。
缺点:如果我们的需求是查询所有字段,列式数据库的处理方式是先把所有列查询出来,再拼接起来,速度方面是比不上行式数据库的。
优点:压缩比例大
行式数据库因为存贮数据是一行行的来存贮,而每一行数据的差异性太大,所以压缩比小。
因为各列独立存储,且数据类型已知,可以针对该列的数据类型、数据量大小等因素动态选择压缩算法,以提高物理存储利用率;如果某一行的某一列没有数据,那在列存储时,就可以不存储该列的值,这将比行式存储更节省空间。
因为拥有超高的压缩比,在磁盘IO传输的时候,速度快很多,而且顺带减少磁盘的使用率。
适用场景:
1、在大数据领域,进行所有字段的查询的这个要求少。
2、计算聚合的分析型工作负载,例如查找趋势、计算平均值等(比如计算股票价格的波动趋势)具有不同的重要性并且该字段所存储的数据经常被一起使用。
查询过程中,可针对各列的运算并发执行(SMP),在内存中聚合完整记录集,可降低查询响应时间
Greenplum行式和列式的使用
Greenplum在创建表的时候可以选择表存储方式,比如是行存储,还是列存储,是普通的heap表(堆表),还是append optimized表(AO表)。
创建一个heap表
CREATE TABLE foo (a int, b text) DISTRIBUTED BY (a);
不带压缩的ao表
CREATE TABLE bar (a int, b text)
WITH (appendonly=true)
DISTRIBUTED BY (a);
创建列存储表
CREATE TABLE bar (a int, b text)
WITH (appendonly=true, orientation=column)
DISTRIBUTED BY (a);
创建压缩表
CREATE TABLE foo (a int, b text)
WITH (appendonly=true, compresstype=zlib, compresslevel=5);
OLTP
全称:Online Transaction Processing,翻译:在线事务处理,就是传统MySQL那种行式数据库,可以理解为有强事务的,数量小的。
对于GP(GreenPlum)来说,堆表,创建的表默认都是堆表,适合频繁的更新删除操作的小表,适合OLTP系统。
OLAP
全称:Online Analytical Processing,翻译:在线分析处理,就是GreenPlum这种大数据的海量静态数据,列式数据库,较少全字段查询的。
AO表,适合批量数据写入,不适合单行的insert,适合大表使用,所以一般用在数据仓库系统,适合OLAP系统。
列存储是以列为单位存储数据,物理上一列会对应一个或者多个数据文件,而且列存储的压缩比比较高,但是如果查询的时候,如果返回的列很多,那么效率不如行存储,列存储更适合对某一列做相关统计,列存储更适合OLAP的系统。
唠嗑广场
也忘了从哪里看来的,说段永平先生、黄铮先生认为:要相信简单、常识的力量。
如果从看公司的角度来看,也许就是这样。
就APP而言,拼多多就比淘宝、京东简单很多嘛,不需要各种各样的券来计算价格,该多少就多少,补贴就是正儿八经的补贴,下单速度快很多。
如果从投资角度而言,我们需要寻找的公司画像是这样的:主业很强大(不需要开展副业)、业务很简单、业务可以经营的时间长,不需要为明年的订单发愁。
我想说,水电行业真是上天厚爱啊。