列存储和Greenplum压缩表
⼀、Greenplum列存储的压缩表原理:
create table testao(id int, name text) with (APPENDONLY=true, ORIENTATION=column, COMPRESSTYPE=zlib, COMPRESSLEVEL=5, BLOCKSIZE=1048576, OIDS=false)
APPENDONLY=true, ORIENTATION=column这两个属性决定了这是列存压缩表。
COMPRESSTYPE: 压缩⽅式,⽀持zlip,RTE等
COMPRESSLEVEL: 压缩级别,0-9
BLOCKSIZE: 块⼤⼩8kB-2MB
优势
1、节约成本,列存压缩表空间占⽤远⼩于普通的heap表空间
2、对查询涉及的列很少时候,⽆需去读其他列的数据,减少IO
3、追加写速度快
⼆、MySQL的列存储引擎Infobright
Infobright是⼀款基于独特的专利知识⽹格技术的列式数据库。Infobright是开源的MySQL数据仓库解决⽅案,引⼊了列存储⽅案,⾼强度的数据压缩,优化的统计计算(类似sum/avg/group by之类),infobright 是基于mysql的,但不装mysql亦可,因为它本⾝就⾃带了⼀个。mysql可以粗分为逻辑层和物理存储引擎,infobright主要实现的就是⼀个存储引擎,但因为它⾃⾝存储逻辑跟关系型数据库根本不同,所以,它不能像InnoDB那样直接作为插件挂接到mysql,它的逻辑层是mysql的逻辑层加上它⾃⾝的优化器。
Infobright特征
优点:
⼤数据量查询性能强劲、稳定:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度⽐MyISAM、InnoDB等普通的MySQL 存储引擎快5~60倍。⾼效查询主要依赖特殊设计的存储结构对查询的优化,但这⾥优化的效果还取决于数据库结构和查询语句的设计。
存储数据量⼤:TB级数据⼤⼩,⼏⼗亿条记录。数据量存储主要依赖⾃⼰提供的⾼速数据加载⼯具(百G/⼩时)和⾼数据压缩⽐
(>10:1)
⾼数据压缩⽐:号称平均能够达到 10:1 以上的数据压缩率。甚⾄可以达到40:1,极⼤地节省了数据存储空间。⾼数据压缩⽐主要依赖列式存储和 patent-pending 的灵活压缩算法.
基于列存储:⽆需建索引,⽆需分区。即使数据量⼗分巨⼤,查询速度也很快。⽤于数据仓库,处理海量数据没⼀套可不⾏。不需要建索引,就避免了维护索引及索引随着数据膨胀的问题。把每列数据分块压缩存放,每块有知识⽹格节点记录块内的统计信息,代替索引,加速搜索。
快速响应复杂的聚合类查询:适合复杂的分析性SQL查询,如SUM, COUNT, AVG, GROUP BY
Infobright的价值
节约设计开销。没有复杂的数据仓库模型设计要求(⽐如星状模型、雪花模型),⽆需要物化视图、数据分区、索引建⽴节省存储资源。⾼压缩⽐率通常是10:1,某些应⽤可能达到40:1集成利⽤⼴泛。和众多的BI套件相容,⽐如Pentaho、Cognos、Jaspersof降低运维成本。随着数据库的逐渐增⼤,查询和装载性能持续保持稳定,实施和管理简单,需要极少的管理商业保证。第⼀个商业⽀持的开源仓储分析数据库,是Oracle/MySQL 官⽅推荐的仓储集成架构
Infobright的适⽤场景
⼤数据量的分析应⽤。⽹页/在线分析、移动分析、客户⾏为分析、分析营销和⼴告⽇志/事件管理系统。电信详单分析和报告、系统/⽹络安全认证记录数据集市。企事业单位特定数据仓库、为中⼩企业提供数据仓库嵌⼊式分析。为独⽴软件供应商/ SaaS供应商提供嵌⼊式分析应⽤
限制:
不⽀持数据更新:社区版Infobright只能使⽤“LOAD DATA INFILE”的⽅式导⼊数据,不⽀持INSERT、UPDATE、DELETE。这使对数据的修改变得很困难,这样就限制了它作为实时数据服务的数据仓库来使⽤。
不⽀持⾼并发:只能⽀持10多个并发查询,虽然单库 10 多个并发对⼀般的应⽤来说也⾜够了,但较低的机器利⽤率对投资者来说总是⼀件不爽的事情,特别是在并发⼩请求较多的情况下。
没有提供主从备份和横向扩展的功能。如果没有主从备份,想做备份的话,也可以主从同时加载数据,但只能校验最终的数据⼀致性,使得从机在数据加载时停服务的时间较长;横向扩展⽅⾯,它本⾝就不是分布式的存储系统。
与MySQL对⽐
infobright适⽤于数据仓库场合:即⾮事务、⾮实时、⾮多并发;分析为主;存放既定的事实,例如⽇
志,或汇总的⼤量的数据。所以它并不适合于应对来⾃⽹站⽤户的请求。实际上它取⼀条记录⽐mysql要慢很多,但它取100W条记录会⽐mysql快。
mysql的总数据⽂件占⽤空间通常会⽐实际数据多,因为它还有索引。infobright的压缩能⼒很强⼤,按列按不同类型的数据来压缩。greenplum数据库
服务形式与接⼝跟mysql⼀致,可以⽤类似mysql的⽅式启⽤infobright服务,然后原来连接mysql的应⽤程序都可以以类似的⽅式连接与查询infobright。这对熟练mysql者来说是个福⾳,学习成本基本为0。
infobright有两个发布版:开源的ICE及闭源商⽤的IEE。ICE提供了⾜够⽤的功能,但不能 INSERT,DELETE,UPDATE,只能LOAD DATA INFILE。IEE除提供更充分的功能外,据说查询速度也要更快。
社区ICE版,国内各⼤企业均有测试,投⼊⽣成系统的较少,主要有以下原因:
对DML、alter语句限制
需定时增量load导出导⼊
⾃带的MyISAM难以⽀持⾼并发,若想充分利⽤服务器资源,需开启另外的MySQL实例
对中⽂等多字节⽂字⽀持不好
仅⽀持单核调度
缺少原⼚的⽀持
ICE与IEE版本区别
IEE包含针对⼤多数企业⼯作需求的附加特性,如:更好的查询性能、DML语句⽀持、分布式导⼊等。另外,IEE版本还包含了⼀定级别的Infobright原⼚或代理商的⽀持救援服务、产品培训等。
明显的查询性能差异。虽然IEE和ICE版本均具有明显超出例如Oracle、SQL Server、MySQL等⾏式数据库的查询性能,但IEE还要⽐ICE 版本快50-500%。这个明显差距来⾃于IEE核⼼引擎中特有的——多线程调度模块(⾃IEE3.5引⼊).⽽在ICE中,⼀个独⽴的查询只能使⽤单个CPU 核⼼,其他的查询进程只能使⽤其他核⼼。对于需要筛选和区分⼤量数据的复杂查询,使⽤IEE多线程调度模块可以显著地节约查询时间。
⽀持DML语句。IEE⽀持标准的SQL 数据操作语⾔,使⽤insert、update、delete操控数据。⽽ICE只⽀持Load data infile进⾏数据导⼊,任何数据的变化都需要重新导⼊全部数据。DML语句的使⽤会降低数据查询性能,随次数递增。
⽀持DDL语句。包括alter table rename,add column,drop column(但是列操作只能对最后列⽣效)
⽀持Hadoop接⼝(通过DLP)
⾼级复制和⾼可⽤。IEE版本包含主从功能,基于SQL statement
更简易的导⼊和更快的导⼊速度。IEE⽀持分布式导⼊⼯具-DLP;且包含标准的MySQL原⽣loader,⽤于处理⼀些复杂数据的导⼊,另⼀⽅⾯也说明IBloader的容错性较差
Load或DML同时的⼀致性查询
⽀持临时表
其他商业授权,售后⽀持等

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。