plum中的列式greenplum存储结构 最多支持多少列

学习Greenplum多级分区超大表拆分如何更快提高效率的小技巧
现实生产环境中,一些大表免不了需要进行拆分,那么这里我们介绍一下Greenplum对大表的处理方法
一般我们表都是堆表,按行存储的,Greenplum支持列存储,并且支持数据压缩 如果当你的表大到一个度,那么就需要进行逻辑上的拆分,将一张大表拆分为多张小表,这样可以提升相关表操作的效率,一般我们的行存储在返回多列的效率上比较高,所以一般OLTP都是使用行存储,列存储更适合用于统计的相关操作,所以都是用在OLAP下
创建一个范围分区表
CREATE TABLE sales (id int, date date, amt decimal(10,2))
DISTRIBUTED BY (id)
PARTITION BY RANGE (date)
( PARTITION Jan16 START (date '') INCLUSIVE ,
PARTITION Feb16 START (date '') INCLUSIVE ,
PARTITION Mar16 START (date '') INCLUSIVE ,
PARTITION Apr16 START (date '') INCLUSIVE ,
PARTITION May16 START (date '') INCLUSIVE ,
PARTITION Jun16 START (date '') INCLUSIVE ,
PARTITION Jul16 START (date '') INCLUSIVE ,
PARTITION Aug16 START (date '') INCLUSIVE ,
PARTITION Sep16 START (date '') INCLUSIVE ,
PARTITION Oct16 START (date '') INCLUSIVE ,
PARTITION Nov16 START (date '') INCLUSIVE ,
PARTITION Dec16 START (date '') INCLUSIVE
END (date '') EXCLUSIVE );
insert into sales values (1,'',1.02);
select * from sales_1_prt_jan16;
----+------------+------
insert into sales values (1,'',1.02);
select * from sales_1_prt_mar16;
----+------------+------
这里没有定义end的值,那么结束值就是下一个开始值,但是不包含这个值
创建一个list分区
CREATE TABLE rank (id int, rank int, year int, gender
char(1), count int )
DISTRIBUTED BY (id)
PARTITION BY LIST (gender)
( PARTITION girls VALUES ('F'),
PARTITION boys VALUES ('M'),
DEFAULT PARTITION other );
list之前一篇文章详细介绍过,不再细讲
创建Multi-level分区表
CREATE TABLE sales (trans_id int, date date, amount
decimal(9,2), region text)
DISTRIBUTED BY (trans_id)
PARTITION BY RANGE (date)
SUBPARTITION BY LIST (region)
SUBPARTITION TEMPLATE
( SUBPARTITION usa VALUES ('usa'),
SUBPARTITION asia VALUES ('asia'),
SUBPARTITION europe VALUES ('europe'),
DEFAULT SUBPARTITION other_regions)
(START (date '') INCLUSIVE
END (date '') EXCLUSIVE
EVERY (INTERVAL '1 month'),
DEFAULT PARTITION outlying_dates );
这里先按date范围分区,间隔按月,然后又按region进行list分区
warehouse=# \dt+ sales_1_prt_3*
--经过查证,后面插入22年2月的数据都是落在这个范围分区
List of relations
| Storage | Description
--------+-----------------------------------+-------+---------+---------+-------------
public | sales_1_prt_3
| table | gpadmin | heap
public | sales_1_prt_3_2_prt_asia
| table | gpadmin | heap
public | sales_1_prt_3_2_prt_europe
| table | gpadmin | heap
public | sales_1_prt_3_2_prt_other_regions | table | gpadmin | heap
public | sales_1_prt_3_2_prt_usa
| table | gpadmin | heap
插入2011年不同region举例
warehouse=#
insert into sales VALUES (1,'',3.96,'hank');
INSERT 0 1
warehouse=# select *
trans_id |
| amount | region
----------+------------+--------+--------
3.96 | hank
warehouse=#
insert into sales VALUES (1,'',3.96,'usa');
INSERT 0 1
warehouse=# select * from sales_1_prt_3;
trans_id |
| amount | region
----------+------------+--------+--------
3.96 | usa
3.96 | hank
warehouse=# select * from sales_1_prt_3_2_prt_
trans_id |
| amount | region
----------+------------+--------+--------
3.96 | usa
warehouse=# select * from sales_1_prt_3_2_prt_other_
trans_id |
| amount | region
----------+------------+--------+--------
3.96 | hank
大于2011年的数据举例:
warehouse=# insert into sales VALUES (3,'',3.96,'asia');
warehouse=# select * from sales_1_prt_outlying_
trans_id |
| amount | region
----------+------------+--------+--------
3.96 | asia
warehouse=# select * from sales_1_prt_outlying_dates_2_prt_
trans_id |
| amount | region
----------+------------+--------+--------
3.96 | asia
创建three_level分区表
CREATE TABLE p3_sales (id int, year int, month int, day int,
region text)
DISTRIBUTED BY (id)
PARTITION BY RANGE (year)
SUBPARTITION BY RANGE (month)
SUBPARTITION TEMPLATE (
START (1) END (13) EVERY (1),
DEFAULT SUBPARTITION other_months )
SUBPARTITION BY LIST (region)
SUBPARTITION TEMPLATE (
SUBPARTITION usa VALUES ('usa'),
SUBPARTITION europe VALUES ('europe'),
SUBPARTITION asia VALUES ('asia'),
DEFAULT SUBPARTITION other_regions )
( START (2002) END (2012) EVERY (1),
DEFAULT PARTITION outlying_years );
以上例子是三层分区,就不再插入数据进行举例,是按year,再按month,最后按region进行的分区,但是这样会创建很多自分区,所以在选择分区键和策略的时候尽量减少没有必要的分区,否则也会增加相关查询语句的时间和内存占用。 如果想要将一个普通表转换为分区表
1.创建分区表
2.从普通表将数据导入
3.删除原始表
4.修改分区表名为原始表名
5.赋予原始表的相关权限
CREATE TABLE sales2 (LIKE sales)
PARTITION BY RANGE (date)
( START (date ') INCLUSIVE
END (date '') EXCLUSIVE
EVERY (INTERVAL '1 month') );
INSERT INTO sales2 SELECT * FROM
DROP TABLE
ALTER TABLE sales2 RENAME TO
GRANT ALL PRIVILEGES ON sales TO
GRANT SELECT ON sales TO
分区表最大可以有32767个分区
分区表如果是等值查询,会选择性的找对应的分区,以提升效率
warehouse=# EXPLAIN SELECT * FROM sales WHERE date='01-07-12' AND
warehouse-# region='usa';
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------
Gather Motion 64:1
(slice1; segments: 64)
(cost=0.00..0.00 rows=2 width=53)
(cost=0.00..0.00 rows=1 width=53)
Seq Scan on sales_1_prt_outlying_dates_2_prt_usa sales
(cost=0.00..0.00 rows=1 width=53)
Filter: date = ''::date AND region = 'usa'::text
Seq Scan on sales_1_prt_outlying_dates_2_prt_other_regions sales
(cost=0.00..0.00 rows=1 width=53)
Filter: date = ''::date AND region = 'usa'::text
effective_cache_size=4GB; random_page_cost=2
可以通过一下数据字典查询分区表的相关信息
SELECT partitionboundary, partitiontablename, partitionname,
partitionlevel, partitionrank
FROM pg_partitions
WHERE tablename='sales';
pg_partition -跟踪分区表子分区的级别依赖关系以及分区表信息.
pg_partition_templates - Shows the subpartitions created using a subpartition template.
pg_partition_columns - Shows the partition key columns used in a partition design.豆丁微信公众号
君,已阅读到文档的结尾了呢~~
Greenplum 数据库最佳实践
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Greenplum 数据库最佳实践
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Greenplum行存与列存的选择以及转换方法
数据在数据库中的存储形式多种多样,比较常见的如
1. PostgreSQL的堆表,以行的形式存储,(当变成字段压缩后的长度超过数据块的四分之一时,会以TOAST的形式存储到TOAST表)。
2. MySQL innodb则是以b+tree形式存储的。
在数据仓库产品中,如Greenplum,支持行存,也支持列存。
还有很多存储格式,本文将讨论行存和列存应该如何选择呢?
行存储优劣分析
Greenplum行存储(堆表)的优势在哪里?
数据顺序写入BLOCK中,持续写入的情况下,一条记录命中在一个块中,IO开销相对比较小,速度较快。
查询多个字段时,因为记录在一个块中命中,速度较快。
Greenplum行存储(堆表)的劣势在哪里?
查询少量字段时,也要访问整条记录,造成一定的IO浪费。
行存储的压缩比有限。
行存储适合什么应用场景
行存储适合非常典型的OLTP应用场景。
列存储优劣分析
Greenplum列存储的优势在哪里?
数据按列存储,压缩比可以做到很高。
当查询少量字段时,扫描的块更少,可以节约IO还能提升效率。
Greenplum列存储的劣势在哪里?
因为是按列存储的,当需要查询大量字段时,或者查询的记录数偏少时,会造成离散IO较多。
例如查询1条记录的20个列,行存储可能只需要扫描1个块,而列存储至少需要扫描20个块。
由于IO的放大,列存储不适合OLTP的场景,如有大量的更新,查询操作。
列存储适合什么应用场景
列存储适合非常典型的OLAP应用场景,按列做较大范围的聚合分析,或者JOIN分析。
如何设置表的存储格式
建表时,在with(storage parameter)中指定
或者在分区的with(storage parameter)中指定
或者在子分区的with(storage parameter)中指定
因此Greenplum的存储格式支持到了子分区这个级别,一张表(指父表)可以混合使用行存储与列存储。
如何转换表的存储格式
行列混合存储应用场景
例如用户如果有一张按时间分区的表,最近1个月的查询类似OLTP的请求,需要查询较多字段,而一个月以前的表则OLAP的需求更旺盛。
这种情况下,我们的需求是将老的分区转换为列存储,怎么做呢?
创建分区表,选择行存储
create table t_digoal (id int, info text, crt_time timestamp) distributed by (id) partition by range(crt_time) (start (date '') inclusive end (date '') exclusive every (interval '1 day'));
查看分区定义
postgres=& select * from pg_
-[ RECORD 1 ]------------+----------------------------------------------------------------------------------------------------------------------------------------------
schemaname
| t_digoal
partitionschemaname
partitiontablename
| t_digoal_1_prt_1
partitionname
parentpartitiontablename |
parentpartitionname
partitiontype
partitionlevel
partitionrank
partitionposition
partitionlistvalues
partitionrangestart
| ' 00:00:00'::timestamp without time zone
partitionstartinclusive
partitionrangeend
| ' 00:00:00'::timestamp without time zone
partitionendinclusive
partitioneveryclause
| '1 day'::interval
partitionisdefault
partitionboundary
| START (' 00:00:00'::timestamp without time zone) END (' 00:00:00'::timestamp without time zone) EVERY ('1 day'::interval)
parenttablespace
| pg_default
partitiontablespace
| pg_default
-[ RECORD 2 ]------------+----------------------------------------------------------------------------------------------------------------------------------------------
schemaname
| t_digoal
partitionschemaname
partitiontablename
| t_digoal_1_prt_2
partitionname
parentpartitiontablename |
parentpartitionname
partitiontype
partitionlevel
partitionrank
partitionposition
partitionlistvalues
partitionrangestart
| ' 00:00:00'::timestamp without time zone
partitionstartinclusive
partitionrangeend
| ' 00:00:00'::timestamp without time zone
partitionendinclusive
partitioneveryclause
| '1 day'::interval
partitionisdefault
partitionboundary
| START (' 00:00:00'::timestamp without time zone) END (' 00:00:00'::timestamp without time zone) EVERY ('1 day'::interval)
parenttablespace
| pg_default
partitiontablespace
| pg_default
创建列存单表,用于交换分区
postgres=& create table t_digoal_col(id int, info text, crt_time timestamp) with (appendonly=true, ORIENTATION=column) distributed by (id);
CREATE TABLE
将历史分区数据插入列存储的交换分区
insert into t_digoal_col select * from t_digoal_1_prt_1;
指定对应的rank,交换分区
alter table t_digoal exchange partition for (rank(1)) with table t_digoal_
可以使用 without validation 加快速度。
祝大家玩得开心,欢迎随时来 阿里云促膝长谈业务需求 ,恭候光临。
阿里云的小伙伴们加油,努力 做好内核与服务,打造最贴地气的云数据库 。greenplum列存检索速度加快多少_百度知道
greenplum列存检索速度加快多少
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
匿名用户知道合伙人
主要还是看select的内容,如果只是每一列的信息,会快一下,我刚刚看到下面的网站,那个人测试的列式没有一点优势比起行式来说,不知道是不是数据量不够大
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
大数据不是谎言?Chorus完善Greenplum社交分析
关键字:Privotal Labs
非结构化数据 列式数据库 协作分析
   4月23日 北京报道(文/黄亮)
  近日在网上看到一篇题为《》的评论,笔者被其标题所吸引并点击阅读。那么,这篇看似与当今火热的“”概念相悖的文章都说了些什么呢?
  我现在主要关注,对于软件和应用有些外行。不过像这样的传统厂商都通过收购Greenplum进入大数据领域,笔者不得不也做些了解,下面简单谈谈自己在这方面的认识。
  大数据究竟是不是一个谎言?
  在该文中的观点,可以简单归纳为:使用列式就可以应对包含非结构化数据在内的“大数据”分析。当然SAP也使用了“数据仓库”一词,就是说他们在数据量的增长方面,与新兴的Teredata(天睿)、被收购的Netazza,以及被EMC收购的Greenplum等公司的认识是一样的。
  属于SAP的这样说自然有其所处立场的原因。SAP和上述几款数据仓库产品都提到了压缩对于节省空间和在一些情况下提高数据加载速度的重要性,类似的是被分别收购的和存储产品线加入了适用于自家数据库的混合列式压缩功能,将相关工作卸载到存储硬件上来执行。
  笔者认为,“大数据”相对于传统交易型数据库,除了强调挖掘其商业价值、分析之外,上面没有提及的还有对硬件设备的需求特点。请大家先下面这个表:
笔者较早下载的一个EMC文档中,Greenplum DCA的规格表
  上面为EMC Greenplum DCA(Data Computing Appliance,设备)产品家族的规格表。其中GP1000和GP1000C的区别主要在于后者针对大容量,应该是使用了低转速(7200rpm)硬盘,因此未压缩/压缩可用容量分别达到了124TB和496TB,数据扫描速度为14GB/s;而GP1000估计是相对小容量高转速(10K/15K rpm)的硬盘,容量比不上GP1000C,当数据扫描速度高达24GB/s。
  这里强调数据加载和扫描速度(带宽)而不是IOPS,可以明显地反映出与OLTP应用之间的区别。另外,这两款Greenplum DCA都是由2台主和16台(Segment)服务器组成,也就是说都是基于高性价比的工业标准服务器的MPP(大规模并行处理,最多6个机架)分布式可扩展架构。这也是许多“大数据”设备共同的特点。
  如果说Greenplum DCA是该产品线的硬件基础的话,那么像Greenplum Database、Greenplum HD就是运行在上面的数据平台,如今其中又加入了一位新成员――“Made in China”的Greenplum Chorus。
EMC全球副总裁兼中国区总裁蔡汉辉(左)和全球副总裁兼中国研发集团总经理李映(右),借一个月之前EMC宣布收购Privotal Labs和推出Greenplum Chorus之机,于上周向国内媒体介绍该公司的大数据战略。
  对于大数据,EMC全球副总裁兼中国卓越研发集团总经理李映博士的看法是:“首先大数据的第一个概念就是大,无论是存储也好,数据分析也好,你原来可能说可以处理TB,现在随着硬件和软件的提高,现在你的数据可以乘一、乘二、乘三,是不是可以认为自己处理大数据呢,我们理解是不是的,它是随着数据量的增长和复杂程度产生对你处理数据和存储数据必须采取完全不同的处理的方法、解决的方法才可以解决这个问题,所谓的从量变到质变,这才是大数据的概念现在变成热门最主要的目的。原来你可能是纵向扩展,你原来可能是交易数据,在这个方面很容易处理,但是你在传统的数据不能处理的时候这样也可以称之为大数据。”
  EMC Greenplum UAP(统一分析平台)
  在Greenplum UAP(统一分析平台)架构中,底层硬件的选择范围比较灵活,可以是“云架构、x86集群设备或者一体机”,它上面由数据平台管理员负责的Greenplum数据库和Greenplum(HD)我们已经不陌生了,那么再往上除了“数据访问和查询层”、“三方/合作伙伴工具和服务”之外,在与数据打交道的各种用户之间又加入了一个“Greenplum Chorus-分析生产力层”。也就是说Chorus是处于Greenplum结构化/非结构化数据平台和用户分析应用之间的衔接部分。
  专门负责Greenplum Chorus产品线,EMC中国研发集团的资深产品经理庄富任先生是这样表示的:“去年对于Greenplum来讲有一个很重要的时刻,我们提出一个新的概念,叫做统一分析平台,就是针对海量数据有一个统一分析的平台,它包含什么呢?有三个主要部分,刚才也提到了第一是Greenplum的数据库,第二是Greenplum HD非结构化的数据,这有什么不一样的呢?数据库很传统,就是储存一般化的数据,这已经发展了好几十年了。我们看到客户越来越多的需求,刚才提到非结构化数据,什么是非结构化数据呢?
  我们可以看见文件是非结构化数据;对于Internet来讲网站的数据是非结构化数据;对电信业者来讲,每个人打电话的明细是非结构化数据。这样的数据增长的非常快,我是不是有能力去帮助这些客户储存这些数据,用一个很便宜的架构,去存储这样的数据?这就是Greenplum的产品公布,可以帮助客户用最便宜的价格去存储这些数据。第三就是Greenplum Chorus,是基于这上面的协作分析平台,因为有了数据的储存,需要有一个共同的平台去分析底下的结构化跟非结构化数据。”
  Pivotal Labs、Chorus及其中国研发团队
  EMC全球副总裁兼中国区总裁蔡汉辉在演讲中提道:“我们在3月下旬刚刚收购了一个公司叫做Pivotal Labs,这是个旧的公司,就是在敏捷开发方面提供服务和软件的。(上图)底下都是一些有名的公司,他们都是Pivotal Labs的客户,比如Salesforce.com、等等。”
  对于为什么要推出Chorus,或者说收购Pivotal Labs这家公司?李映表示:“更重要的是把这个数据分析的结构更快的应用到应用中,使用到和你的业务流程很好的结合在一起。能不能很快的满足你的二次开发或者需求,这是很关键的要素。EMC最关键的要素是我们能够提供的解决,同时我们满足客户有开放的选择,第二个是很好的敏捷的开发,很快的把现有流程改变,以及一些新的应用开发达到很好的满足,这是我对打包方案的看法。”
EMC Greenplum Chorus北京研发团队合影
  EMC表示Chorus是全球第一个基于协作分析的大数据平台,号称“数据科学家的”。对于EMC Greenplum Chorus中国造,又是怎么回事呢?
  Pivotal Labs公司创立于1989年,总部位于旧金山,而其研发团队应该就在国内。我们觉得这给他们被EMC收购后并入中国卓越研发集团北京研发中心带来了很大方便,估计在对国内用户的支持上也容易做得比较到位吧。
  对于Greenplum Chorus的四大重要功能:个人沙盒、数据发掘、协作分析和开放架构,以及将于今年“开源”,这些已经偏向软件应用及开发领域,笔者没有什么更多的高见。如果再多写一些难免人云亦云,想进一步了解更多信息的读者估计也会看到其他媒体的相关报道,我想EMC也是乐于讲给用户听的。
[ 责任编辑:黄亮 ]
去年,手机江湖里的竞争格局还是…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注Chinabyte

我要回帖

更多关于 greenplum安装教程 的文章

 

随机推荐