精华内容
下载资源
问答
  • 仓库资源优化方案DOC

    2020-12-16 04:10:55
    仓库资源优化方案DOC是一篇关于物流采购的参考,能让你全面了解与感悟仓库资源优化方案DOC,喜欢的朋友赶...该文档为仓库资源优化方案DOC,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • WMS仓库流程优化方案.pptx
  • WMS仓库流程优化方案.pdf
  • 仓库优化布局方案设计.doc
  • 元器件仓库管理漏洞元器件仓库整改方案优化方法.pdf
  • 利用ET200s_CPU实现对立体仓库控制方案优化.pdf
  • 数据仓库优化步骤

    2012-05-21 10:15:26
    数据仓库优化步骤
  • 基于SQL优化提高数据仓库的ETL效率的方案.pdf
  • infobright是开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算
  • ETL优化方案

    2011-09-16 14:34:20
    优化方案:ETL的过程原理和数据仓库建设
  •  数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取、转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对数据的直接操作,SQL语句的效率将直接影响到数据仓库...

    1.引言

       数据仓库建设中的ETL(Extract, Transform, Load)是数据抽取、转换和装载到模型的过程,整个过程基本是通过控制用SQL语句编写的存储过程和函数的方式来实现对数据的直接操作,SQL语句的效率将直接影响到数据仓库后台的性能。

      目前,国内的大中型企业基本都具有四年以上计算机信息系统应用经验,积累了大量可分析的业务数据,这些信息系统中的数据需要通过搭建数据仓库平台才能得到科学的分析,这也是近几年数据仓库系统建设成为IT领域热门话题的原因。

      2.优化的思路分析

      数据仓库ETL过程的主要特点是:面对海量的数据进行抽取;分时段对大批量数据进行删除、更新和插入操作;面对异常的数据进行规则化的清洗;大量的分析模型重算工作;有特定的过程处理时间规律性,一般整个ETL过程需要在每天的零点开始到6点之前完成。所以,针对ETL过程的优化主要是结合数据仓库自身的特点,抓住需要优化的主要方面,针对不同的情况从如何采用高效的SQL入手来进行。

      3.优化的实例分析

      目前数据仓库建设中的后台数据库大部分采用Oracle,以下的SQL采用Oracle的语法来说明,所有的测试在Oracle9i环境中通过,但其优化的方法和原理同样适合除Oracle之外的其他数据库。

      3.1索引的正确使用

      在海量数据表中,基本每个表都有一个或多个的索引来保证高效的查询,在ETL过程中的索引需要遵循以下使用原则:

      (1) 当插入的数据为数据表中的记录数量10%以上时, 首先需要删除该表的索引来提高数据的插入效率,当数据全部插入后再建立索引。

      (2) 避免在索引列上使用函数或计算,在where子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。举例:

      低效: select * ROM DEPT where SAL * 12 > 25000;

      高效: select * FROM DEPT where SAL > 25000/12;

      (3) 避免在索引列上使用NOT和”!=” , 索引只能告诉什么存在于表中,而不能告诉什么不存在于表中,当数据库遇到NOT和”!=”时,就会停止使用索引转而执行全表扫描。

      (4) 索引列上用>=替代>

      高效: select * FROM EMP where DEPTNO >=4

      低效: select * FROM EMP where DEPTNO >3

      两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。

      (5) 函数的列启用索引方法,如果一定要对使用函数的列启用索引,Oracle9i以上版本新的功能:基于函数的索引(Function-Based Index)是一个较好的方案,但该类型索引的缺点是只能针对某个函数来建立和使用该函数。

      create INDEX EMP_I ON EMP (UPPER( ENAME));       

      select * FROM EMP where UPPER(ENAME) = ‘BLACKSNAIL’;

      3.2 游标的正确使用

      当在海量数据表中进行数据的删除、更新和插入操作时,用游标处理的效率是最慢的方式,但它在ETL过程中的使用又必不可少,而且使用有着及其重要的地位,所以游标的正确使用尤为重要。

      对数据仓库维表的数据进行维护时,因为需要保证维表ID的一致性,所以采用游标的是数据维护完整性的最好方式。由于它的效率低,如果按照普通的方式将无法处理大数据量的维表数据维护(一般是指10万条记录以上的维表),以下是处理这种情况的有效方式:

      (1) 在数据抽取的源表中使用时间戳,这样每天的维表数据维护只针对更新日期为最新时间的数据来进行,大大减少需要维护的数据记录数。

      (2) 在insert和update维表时都加上一个条件来过滤维表中已经存在的记录,实例为:

      insert INTO DIM_CUSTOMER select * FROM ODS_CUSTOMER where ODS_CUSTOMER.CODE NOT exists (DIM_CUSTOMER.CODE)

      (3) 使用显式的游标(CURSORs) ,因为使用隐式的游标将会执行两次操作,第一次检索记录,第二次检查TOO MANY ROWS 这个EXCEPTION,而显式游标不执行第二次操作。

      3.3数据抽取和上载时的SQL优化

      3.3.1 where子句中的连接顺序

      ORACLE采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其它where条件之前,那些可以过滤掉最大数量记录的条件必须写在where子句的末尾。

      低效:select * FROM EMP E where SAL > 50000 AND JOB = ‘MANAGER’ AND 25 < (select count(*) FROM EMP where MGR=E.EMPNO);

      高效:select * FROM EMP E where 25 < (select count(*) FROM EMP where MGR=E.EMPNO) AND SAL > 50000 AND JOB = ‘MANAGER’;

      3.3.2 删除全表时用truncate替代delete

      当delete删除表中的记录时,有回滚段(rollback segments ) 用来存放可以被恢复的信息,而当运用truncate时,回滚段不再存放任何可被恢复的信息,所以执行时间也会很短。同时需要注意truncate只在删除全表时适用,因为truncate是DDL而不是DML。

      3.3.3 尽量多使用COMMIT

      ETL中同一个过程的数据操作步骤很多,数据仓库采用的是数据抽取后分析模型重算的原理,所以对数据的COMMIT不像业务系统为保证数据的完整和一致性而需要某个操作过程全部完成才能进行,只要有可能就在程序中对每个delete、insert和update操作尽量多使用COMMIT, 这样系统性能会因为COMMIT所释放的资源而大大提高。

      3.3.4 用exists替代IN

      在许多基于基础表的查询中,为了满足一个条件往往需要对另一个表进行联接,例如在ETL过程写数据到模型时经常需要关联10个左右的维表,在这种情况下,使用exists而不用IN将提高查询的效率。

      3.3.5 用NOT exists替代NOT IN

      子查询中,NOT IN子句将执行一个内部的排序和合并,无论在哪种情况下,NOT IN都是最低效的,因为它对子查询中的表执行了一个全表遍历。用NOT exists替代NOT IN将提高查询的效率。

      3.3.6 优化GROUP BY

      提高GROUP BY 语句的效率,可以通过将不需要的记录在GROUP BY 之前过滤掉。

      低效: select JOB , AVG(SAL) FROM EMP GROUP BY JOB HAVING JOB = ‘PRESIDENT’ OR JOB = ‘MANAGER’

      高效: select JOB , AVG(SAL) FROM EMP where JOB = ‘PRESIDENT’ OR JOB = ‘MANAGER’ GROUP BY JOB

      3.3.7 有条件的使用union-ALL 替换union

      ETL过程针对多表连接操作的情况很多,有条件的使用union-ALL 替换union的前提是:所连接的各个表中无主关键字相同的记录,因为union ALL 将重复输出两个结果集合中相同记录。

      当SQL语句需要union两个查询结果集合时,这两个结果集合会以union-ALL的方式被合并,然后在输出最终结果前进行排序。如果用union ALL替代union,这样排序就不是必要了,效率就会因此得到提高3-5倍

      3.3.8 分离表和索引

      总是将你的表和索引建立在不同的表空间内,决不要将不属于ORACLE内部系统的对象存放到SYSTEM表空间里。同时确保数据表空间和索引表空间置与不同的硬盘控制卡控制的硬盘上

    TechTarget中国原创内容,原文链接:http://www.searchdatabase.com.cn/showcontent_9319.htm

    展开全文
  • oracle 数据仓库解决方案案例分析, 一.数据仓库发展的商业驱动力 3 1.1 企业生存环境的变化 3 1.2 企业如何迎接市场变化带来的挑战 4 1.2.1 开拓市场:理解市场 4 1.2.2 提高企业运作绩效:理解业务 5 1.2.3 平衡...
  • 目录 一、需求 二、思路 三、解决方案 一、需求 1、由于公司的Mysql表中有很多单表存储量有几亿,单表达到40多个G 2、 二、思路 三、解决步骤

    目录

    一、现状和需求

    二、思路

    三、注意事项

    四、解决方案


    一、现状和需求

    现状
    1、由于公司的Mysql表中有很多表的存储数量达几亿,单表达到40多个G,无法通过sqoop同步到数据仓库中。
    2、mysql的引擎为【MyISAM】,表的索引只有 ID和Entid字段。
    3、公司的Mysql表存储如下所示:
    在这里插入图片描述
    需求
    1、需要对Mysql表进行特殊处理,达到通过sqoop同步到数据仓库的一张表【company】中。

    二、思路

    1、停止当前表的所有功能
    2、全量快速方案:
           1)建立相同字段的表【table_000】到【table_XXX】;
           2)将大表按照索引均匀查出数据,分批插入到【table_000】到【table_XXX】中;
           3)通过SQOOP分别将对于表分批导入数据仓库中同一张表的不同分区中【hive_

    展开全文
  • 1.3 基于数据仓库的有效的商务解决方案的要求 6 1.4 ORACLE数据仓库:被证明是有实力的商务解决方案 6 二、ORACLE数据仓库的体系结构 7 2.1 数据仓库的平台:数据库和决策分析工具 11 2.1.1 Oracle8i的数据仓库新...
  • Infobright是开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算(类似sum/avg/group by之类),infobright 是基于mysql的,但不装mysql亦可,因为它本身就自带了一个。mysql可以粗...
  • 数据仓库方案选型

    万次阅读 2017-11-07 10:43:20
    总体框架通常采用三层体系结构:前端工具(顶层)-OLAP服务器(中间层)-数据仓库服务器(底层)。底层的数据仓库服务器通常是一个关系数据库系统(各种表关联的sql统计会更方便一些,非关系型数据库目前在这方面还是...


    总体框架

    通常采用三层体系结构:前端工具(顶层)-OLAP服务器(中间层)-数据仓库服务器(底层)。

    底层的数据仓库服务器通常是一个关系数据库系统(各种表关联的sql统计会更方便一些,非关系型数据库目前在这方面还是有所区别)。
    中间层OLAP服务器,典型实现为ROLAP模型或MOLAP模型。
    顶层为前端客户端,用于数据分析和挖掘等(如趋势分析、预测)。
    当然现在很多成熟的BI工具都是集成了OLAP服务器的,所以我们只是需要选择ETL工具以及存储方案和 可视化BI方案即可。


    ETL工具

    1、KETL,由具有IBM和KPMG背景的Kinetic Networks公司开发,现在已经有三年多的产品应用历史,成功应用于一些产品中,在点击流(ClickStream)分析应用中表现出色。KETL采用Plug-in的架构,使用Java开发。
    2、KETTLE,为一个元数据驱动的ETL工具。已经加入Pentaho。
    3、Clover ETL,为一个基于Java的ETL Framework,可以用来开发自己的ETL应用。 (开源)
    4、Enhydra Octopus,为一个基于Java的ETL工具,使用JDBC来连接各种数据源,易于使用和部署。曾有人应用于电信网络资源分析系统中。
    5、Informatica Powercenter,oracle的ETL工具
    6、Datastage,IBM的Datastage工具
    7、oracle warehouse builder,oracle的ETL工具(OWB)
    8、Oracle Data Integrator,oracle的ETL工具(ODI)
    9、微软DTS
    10、Beeload(国内北京灵蜂纵横)
    11、微软DTS
    12、Talend
    13、DataSprider
    14、Spark自己写抽取保存
    15、Octupus(开源)

    对比

    Pentaho Data Integration (Kettle)是Pentaho生态系统中默认的ETL工具。通过非常直观的图形化编辑器(Spoon),您可以定义以XML格式储存的流程。在Kettle运行过程中,这些流程会以不同的方法编译。用到的工具包括命令行工具(Pan),小型服务器(Carte),数据库存储库(repository)(Kitchen)或者直接使用IDE(Spoon)。
    Talend Open Studio是 Talend 开发的ETL工具——Talend 是一家主营数据集成和数据管理解决方案的企业。Talend 采用用户友好型,综合性很强的IDE(类似于Pentaho Kettle 的 Spoon)来设计不同的流程。这些流程可以在IDE内部测试并编译成Java 代码。您可以随时查看并编辑生成的Java代码,同时实现强大的控制力和灵活性。
    两者都非常优秀,都属于用户友好型的交叉平台(基于Java的)工具。它们的主要差异在于Kettle 将 ELT 流程编译为 XML 格式,然而Talend Open Studio 则生成 Java 代码。
    易用性:
    Talend:有 GUI 图形界面但是以 Eclipse 的插件方式提供。
    Kettle:有非常容易使用的 GUI,出现问题可以到社区咨询。
    技术支持:
    Talend:主要在美国
    Kettle:在美国,欧洲(比利时,德国,法国,英国),亚洲(中国,日本,韩国)都可以找到相关技术支持人员。
    部署:
    Talend:创建 java 或perl 文件,并通过操作系统调度工具来运行
    Kettle:可以使用 job 作业方式或操作系统调度,来执行一个转换文件或作业文件,也可以通过集群的方式在多台机器上部署。
    速度:
    Talend:需要手工调整,对特定数据源有优化知识。
    Kettle:比 Talend 快,不过也需要手工调整,对 Oracle 和 PostGre 等数据源做了优化,同时也取决于转换任务的设计。
    数据质量:
    Talend:在 GUI 里有数据质量特性,可以手工写 SQL 语句。
    Kettle:在 GUI 里有数据质量特性,可以手工写 SQL 语句、java脚本、正则表达式来完成数据清洗。
    监控:
    Talend:有监控和日志工具
    Kettle:有监控和日志工具
    连接性:
    Talend:各种常用数据库,文件,web service。
    Kettle:非常广泛的数据库,文件,另外可以通过插件扩展

    Talend: 基于Eclipse,具有很好的扩展性、稳定性以及可定制化(可以自己开发eclipse插件),并且服从Eclipse标准(如文件目录结构都是程序员熟悉的结构)。Talend具有很好的嵌入性,因为它生成的是Java代码,这些代码可以很好的和其他系统结合在一起,这就要求使用者会java。如果不会Java的话,Talend的缺点是学习曲线将会非常陡峭,但是如果会java的话,Talend将是一个绝佳的选择。

    Penthao: 它是一个老牌的工具,在2001年就发布了第一个版本,Kettle是Penthao整个解决方案的一个组件,用来进行数据集成。它也是基于java开发的,但是它不要求用户会java,将底层实现细节都隐藏了。这样即使不会编程的用户也可以轻易的上手,学习曲线非常平缓。它主要的缺点是,和talend相比,它的扩展性较差。由于它很难扩展,所以在社区中可用的组件就比较少;同时,由于它是直接解析存放在xml中的任务信息,不直接生产java代码,使得它和现有的java开发的系统进行集成非常困难。

    CloverETL: 它是在talend和penthao之后发展起来的工具,使用的人数没有talend和penthao多,它主要的优点是,轻量级、容易嵌入、易于使用。但是它的功能远没有talend和kettle强大。

    性能:从clover的官网上,有如下两组性能测试报告(2009年),分别是1GB的文件大小和10GB的文件大小,从这两组系统报告可以看出,clover的性能是最好的,Talend的性能次之,Penthao的性能最差。

    从使用教程上来看,cloverETL百度查询条数是5W4,Tanlend是32W,Kettle是900多W。 所以Kettle是资料比较丰富的,如果时间紧迫建议选择Kettle。


    存储方案


    方案1:采用传统的关系型数据库,或经过功能扩展的MPP(massively paralle processing)数据库

    传统的关系型数据库
    oracle
    mysql

    大规模并行处理数据库
    Vertica
    Teradata(商业)
    Greenplum (开源)
    据了解,Greenplum数据库是业界最快和最高性价比的高端数据仓库解决方案。
    Greenplum是基于PostgreSQL的。于2015年开源。
    传说中四大行有3家在用,5大物流公司有4家在用,我还知道有国内航空业龙头顺利完成了Teradata到GP的迁移,去除人工后还省下了过千万费用。

    SequoiaDB
    广州巨杉软件专注新一代大数据技术研发,是国内唯一的原厂企业级分布式数据库公司。
    SequoiaDB巨杉数据库,是一款企业级分布式NewSQL数据库,自主研发并拥有完全自主知识产权,没有基于任何其他外部的开源数据库源代码。SequoiaDB支持标准SQL、事务操作、高并发、分布式、可扩展、与双引擎存储等特性,并已经作为商业化的数据库产品开源。


    方案2:Hadoop+Hive

    这样的组合:PG(TB级数据)、GP(百TB级数据)、Hadoop(PB级以上数据)的组合。


    sql查询引擎

    Impala
    Presto
    Drill
    Shark —>Spark sql


    OLAP服务器

    Mondrian


    报表展示工具

    目前较为知名的开源报表工具有
    JasperReports,一个优秀的Java报表工具,始于2001,现在JasperSoft公司持续开发和支持该工具。该工具类似于商业软件Crystal Report,支持PDF、HTML、XLS、CSV和XML文件输出格式,现在是Java开发者最常用的报表工具。
    OpenReports,提供基于web的灵活报表解决方案,通过浏览器自动生成动态PDF,XLS,HTMLCSV 和Chart报表,它是用Java开发的,使用JasperReports 作为报表引擎,利用到的开源技术有Hibernate,Veloctiy,Webwork。
    JFreeReport,现在是Pentaho的一部分,它是一个优秀的用来生成报表的Java类库。它为Java应用程序提供一个灵活的打印 功能并支持输出到打印机和PDF, Excel, HTML和XHTML, PlainText, XML和CSV文件中。
    Eclipse BIRT,是Eclipse下面的一个企业智能和报表 工具,能为J2EE的WEB应用程序创建漂亮醒目的PDF或者HTML格式的报表,它提供了核心的报表功能。
    Jpivot(一般与Mondrian配合使用)


    BI可视化分析工具(BI一般都集成了OLAP服务器和报表展示工具)

    SpotView
    FineBI(国内)
    Z-Suite(国内)
    SmartBI(国内)
    Power-BI(国内)
    QuickBI(国内阿里)
    QlikView
    SpagoBI(集成了Mondrain和JProvit)
    Pentaho
    Tableau
    Openi

    Openi是轻量级的。Openi的技术文档非常少,而且完全不支持中文,所以暂不采用。SpagoBI和Pentaho使用的开源技术很类似,技术都比较强大,属于重量级的开发工具。但是SpagoBI中文支持不太好。Pentaho的中文文档多,国际化做的比较好。所以选用Pentaho作为研究的开源数据仓库工具。


    其他公司的选型方案

    唯品会 Hadoop+Hive + Presto

    阿里 oracle —> Greenplum —> Hadoop+Hive —>飞天


    参考文献

    数据仓库是什么
    http://blog.csdn.net/zzq900503/article/details/78405958

    据了解,Greenplum数据库是业界最快和最高性价比的高端数据仓库解决方案。请问国内互联网行业,现在有哪些公司在使用它呢?
    https://www.zhihu.com/question/20249206

    聊聊Greenplum的那些事
    http://blog.csdn.net/paicmis/article/details/53576859

    唯品会海量实时OLAP分析技术升级之路
    http://blog.csdn.net/zzq900503/article/details/78436038

    阿里云大数据三次技术突围:Greenplum、Hadoop和飞天
    http://blog.csdn.net/zzq900503/article/details/78435281

    展开全文
  • Infobright是开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算(类似sum/avg/group by之类),infobright 是基于mysql的,但不装mysql亦可,因为它本身就自带了一个。mysql可以粗...

    Infobright是一款基于独特的专利知识网格技术的列式数据库。Infobright是开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算(类似sum/avg/group by之类),infobright 是基于mysql的,但不装mysql亦可,因为它本身就自带了一个。mysql可以粗分为逻辑层和物理存储引擎,infobright主要实现的就是一个存储引擎,但因为它自身存储逻辑跟关系型数据库根本不同,所以,它不能像InnoDB那样直接作为插件挂接到mysql,它的逻辑层是mysql的逻辑层加上它自身的优化器。
    一、Infobright特征
    1.大数据量查询性能强劲、稳定:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM、InnoDB等普通的MySQL存储引擎快5~60倍。高效查询主要依赖特殊设计的存储结构对查询的优化,但这里优化的效果还取决于数据库结构和查询语句的设计。
    2.存储数据量大:TB级数据大小,几十亿条记录。数据量存储主要依赖自己提供的高速数据加载工具(百G/小时)和高数据压缩比(>10:1)
    3.高数据压缩比:号称平均能够达到 10:1 以上的数据压缩率。甚至可以达到40:1,极大地节省了数据存储空间。高数据压缩比主要依赖列式存储和 patent-pending 的灵活压缩算法.
    4.基于列存储:无需建索引,无需分区。即使数据量十分巨大,查询速度也很快。用于数据仓库,处理海量数据没一套可不行。不需要建索引,就避免了维护索引及索引随着数据膨胀的问题。把每列数据分块压缩存放,每块有知识网格节点记录块内的统计信息,代替索引,加速搜索。
    5.快速响应复杂的聚合类查询:适合复杂的分析性SQL查询,如SUM, COUNT, AVG, GROUP BY
    二、Infobright的价值
    1.节约设计开销。没有复杂的数据仓库模型设计要求(比如星状模型、雪花模型),无需要物化视图、数据分区、索引建立
    2.节省存储资源。高压缩比率通常是10:1,某些应用可能达到40:1
    3.集成利用广泛。和众多的BI套件相容,比如Pentaho、Cognos、Jaspersof
    4.降低运维成本。随着数据库的逐渐增大,查询和装载性能持续保持稳定,实施和管理简单,需要极少的管理
    5.商业保证。第一个商业支持的开源仓储分析数据库,是Oracle/MySQL 官方推荐的仓储集成架构
    三、Infobright的适用场景
    1.大数据量的分析应用。网页/在线分析、移动分析、客户行为分析、分析营销和广告
    2.日志/事件管理系统。电信详单分析和报告、系统/网络 安全认证记录
    3.数据集市。企事业单位特定数据仓库、为中小企业提供数据仓库
    4.嵌入式分析。为独立软件供应商/ SaaS供应商提供嵌入式分析应用
    四、Infobright的限制
    1.不支持数据更新:社区版Infobright只能使用“LOAD DATA INFILE”的方式导入数据,不支持INSERT、UPDATE、DELETE。这使对数据的修改变得很困难,这样就限制了它作为实时数据服务的数据仓库来使用。
    2.不支持高并发:只能支持10多个并发查询,虽然单库 10 多个并发对一般的应用来说也足够了,但较低的机器利用率对投资者来说总是一件不爽的事情,特别是在并发小请求较多的情况下。
    3.没有提供主从备份和横向扩展的功能。如果没有主从备份,想做备份的话,也可以主从同时加载数据,但只能校验最终的数据一致性,使得从机在数据加载时停服务的时间较长;横向扩展方面,它本身就不是分布式的存储系统。
    五、与MySQL对比
    1.infobright适用于数据仓库场合:即非事务、非实时、非多并发;分析为主;存放既定的事实,例如日志,或汇总的大量的数据。所以它并不适合于应对来自网站用户的请求。实际上它取一条记录比mysql要慢很多,但它取100W条记录会比mysql快。
    2.mysql的总数据文件占用空间通常会比实际数据多,因为它还有索引。infobright的压缩能力很强大,按列按不同类型的数据来压缩。
    3.服务形式与接口跟mysql一致,可以用类似mysql的方式启用infobright服务,然后原来连接mysql的应用程序都可以以类似的方式连接与查询infobright。这对熟练mysql者来说是个福音,学习成本基本为0。
    infobright有两个发布版:开源的ICE及闭源商用的IEE。ICE提供了足够用的功能,但不能 INSERT,DELETE,UPDATE,只能LOAD DATA INFILE。IEE除提供更充分的功能外,据说查询速度也要更快。
    六、社区ICE版投产少的原因
    社区ICE版,国内各大企业均有测试,投入生成系统的较少,主要有以下原因:
    1.对DML、alter语句限制
    2.需定时增量load导出导入
    3.自带的MyISAM难以支持高并发,若想充分利用服务器资源,需开启另外的MySQL实例
    4.对中文等多字节文字支持不好
    5.仅支持单核调度
    6.缺少原厂的支持
    七、ICE与IEE版本区别
    IEE包含针对大多数企业工作需求的附加特性,如:更好的查询性能、DML语句支持、分布式导入等。另外,IEE版本还包含了一定级别的Infobright原厂或代理商的支持救援服务、产品培训等。
    1.明显的查询性能差异。虽然IEE和ICE版本均具有明显超出例如Oracle、SQL Server、MySQL等行式数据库的查询性能,但IEE还要比ICE版本快50-500%。这个明显差距来自于IEE核心引擎中特有的——多线程调度模块(自IEE3.5引入).而在ICE中,一个独立的查询只能使用单个CPU核心,其他的查询进程只能使用其他核心。对于需要筛选和区分大量数据的复杂查询,使用IEE多线程调度模块可以显著地节约查询时间。
    2.支持DML语句。IEE支持标准的SQL 数据操作语言,使用insert、update、delete操控数据。而ICE只支持Load data infile进行数据导入,任何数据的变化都需要重新导入全部数据。DML语句的使用会降低数据查询性能,随次数递增。
    3.支持DDL语句。包括alter table rename,add column,drop column(但是列操作只能对最后列生效)
    4.支持Hadoop接口(通过DLP)
    5.高级复制和高可用。IEE版本包含主从功能,基于SQL statement
    6.更简易的导入和更快的导入速度。IEE支持分布式导入工具-DLP;且包含标准的MySQL原生loader,用于处理一些复杂数据的导入,另一方面也说明IBloader的容错性较差
    7.Load或DML同时的一致性查询
    8.支持临时表
    9.其他商业授权,售后支持等
    八、Infobright查询优化
    1)配置环境:在Linux下面,Infobright环境的配置可以根据README里的要求,配置brighthouse.ini文件。
    2)选取高效的数据类型
    Infobright里面支持所有的MySQL原有的数据类型。其中Integer类型比其他数据类型更加高效。尽可能使用以下的数据类型:
    1.TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
    2.DECIMAL(尽量减少小数点位数)
    3.DATE ,TIME
    4.效率比较低的、不推荐使用的数据类型有:
    5.BINARY VARBINARY
    6.FLOAT
    7.DOUBLE
    8.VARCHAR
    9.TINYTEXT TEXT

    Infobright数据类型使用的一些经验和注意点:
    1.Infobright的数值类型的范围和MySQL有点不一样,比如Infobright的Int的最小值是-2147483647,而MySQl的Int最小值应该是-2147483648。其他的数值类型都存在这样的问题。
    2.能够使用小数据类型就使用小数据类型,比如能够使用SMALLINT就不适用INT,这一点上Infobright和MySQL保持一致。
    3.避免效率低的数据类型,像TEXT之类能不用就不用,像FLOAT尽量用DECIMAL代替,但是需要权衡毕竟DECIMAL会损失精度。
    4.尽量少用VARCHAR,在MySQL里面动态的Varchar性能就不强,所以尽量避免VARCHAR。如果适合的话可以选择把VARCHAR改成CHAR存储甚至专程INTEGER类型。VARCHAR的优势在于分配空间的长度可变,既然Infobright具有那么优秀的压缩性能,个人认为完全可以把VARCHAR转成CHAR。CHAR会具有更好的查询和压缩性能。
    5.能够使用INT的情况尽量使用INT,很多时候甚至可以把一些CHAR类型的数据往整型转化。比如搜索日志里面的客户永久id、客户id等等数据就可以用BIGINT存储而不用CHAR存储。其实把时间分割成year、month、day三列存储也是很好的选择。在我能见到的系统里面时间基本上是使用频率最高的字段,提高时间字段的查询性能显然是非常重要的。当然这个还是要根据系统的具体情况,做数据分析时有时候很需要MySQL的那些时间函数。
    6.varchar和char字段还可以使用comment lookup,comment lookup能够显著地提高压缩比率和查询性能。

    3)使用comment lookup
    comment lookup只能显式地使用在char或者varchar上面。Comment Lookup可以减少存储空间,提高压缩率,对char和varchar字段采用comment lookup可以提高查询效率。Comment Lookup实现机制很像位图索引,实现上利用简短的数值类型替代char字段已取得更好的查询性能和压缩比率。Comment Lookup的使用除了对数据类型有要求,对数据也有一定的要求。一般要求数据类别的总数小于10000并且当前列的单元数量/类别数量大于10。Comment Lookup比较适合年龄,性别,省份这一类型的字段。
    comment lookup使用很简单,在创建数据库表的时候如下定义即可:
    act   char(15)   comment 'lookup',
    part  char(4) comment 'lookup',
    4)尽量有序地导入数据
    前面分析过Infobright的构架,每一列分成n个DP,每个DPN列面存储着DP的一些统计信息。有序地导入数据能够使不同的DP的DPN内的数据差异化更明显。比如按时间date顺序导入数据,那么前一个DP的max(date)<=下一个DP的min(date),查询的时候就能够减少可疑DP,提高查询性能。换句话说,有序地导入数据就是使DP内部数据更加集中,而不再那么分散。
    5)使用高效的查询语句。
    这里涉及的内容比较多了,总结如下:
    1.尽量不适用or,可以采用in或者union取而代之
    2.减少IO操作,原因是infobright里面数据是压缩的,解压缩的过程要消耗很多的时间。
    3.查询的时候尽量条件选择差异化更明显的语句
    4.Select中尽量使用where中出现的字段。原因是Infobright按照列处理的,每一列都是单独处理的。所以避免使用where中未出现的字段可以得到较好的性能。
    5.限制在结果中的表的数量,也就是限制select中出现表的数量。
    6.尽量使用独立的子查询和join操作代替非独立的子查询
    7.尽量不在where里面使用MySQL函数和类型转换符
    8.尽量避免会使用MySQL优化器的查询操作
    9.使用跨越Infobright表和MySQL表的查询操作
    10.尽量不在group by 里或者子查询里面使用数学操作,如sum(a*b)。
    11.select里面尽量剔除不要的字段。
    12.避免使用select * from table
    13.避免使用union all
    14.尽量使用系统提供的函数
    Infobright执行查询语句的时候,大部分的时间都是花在优化阶段。Infobright优化器虽然已经很强大,但是编写查询语句的时候很多的细节问题还是需要程序员注意。
    九、Infobright导入工具
    1.Insert
    2.MySQL 导入工具 (@bh_dataformat=’mysql’)
    3.ETL工具:http://www.infobright.org/Downloads/Contributed‐Software/
    4.Infobright 自身的导入工:CSV格式(@bh_dataformat=’txt_variable’),二进制格式(@bh_dataformat=’binary’)
    5.DLP 分布式导入工具(1.6TB/小时)

    展开全文
  • 数据仓库备份方案

    千次阅读 2012-10-10 21:14:47
    5、 备份和还原优化 6、 与介质管理器轻松集成 7、 块介质恢复 8、 归档日志验证和管理 9、 损坏块检测   三、 使用只读表空间备份 将静态表和分区放到只读表空间中。只读表空间只需...
  • 实时OLAP数据仓库架构优化.pptx
  • Android应用优化方案

    万次阅读 2017-01-22 17:38:38
    Android应用优化方案一  点击进入  Android应用优化方案二  点击进入  Android应用优化方案三  点击进入  Android应用优化方案
  • infobright 是基于mysql...infobright主要实现的就是一个存储引擎,但因为它自身存储逻辑跟关系型数据库根本不同,所以,它不能像InnoDB那样直接作为插件挂接到mysql,它的逻辑层是mysql的逻辑 层加上它自身的优化器。
  • 数据仓库技术解决方案

    千次阅读 2008-02-24 23:58:00
    数据仓库技术解决方案目录:1. BusinessObjects(BO)数据仓库解决方案2. IBM数据仓库解决方案 3. Oracle数据仓库解决方案 4. Sybase数据仓库解决方案 5. Infomix数据仓库解决方案 6. NCR数据仓库解决方案 7. ...
  • 数据仓库解决方案比较

    千次阅读 2009-09-26 11:16:00
    http://www.uml.org.cn/sjjm/200503282.htm 数据仓库解决方案比较 作者: 王建新 刘东波 IBM、Oracle、Sybase、CA、NCR、Informix、Microsoft、
  • 关键字:RedP RedPrairie公司是世界上发展最快的物流管理公司,最近宣布通过采取最少周转时间和增加作业效率的技术先进物流设想,新推出了具有全面优化生产能力和设施为特点的DLx仓库。通过采用包括射频、声频和...
  • 问题导读:1、数据仓库的总体架构是怎样的? 2、如何进行数据采集? 3、数据是如何进行加工和处理的?1.1 数据仓库总体架构专家系统接收增购项目车辆TCMS或其他子系统通过车地通信传输的实时或离线数据,经过一系列...
  • 数据库SQL优化大总结之 百万级数据库优化方案

    万次阅读 多人点赞 2016-06-23 09:43:50
    网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。 这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的...
  • 关于数据仓库系统的运维优化的详细内容:Apsara Clouder大数据专项技能认证:数据仓库系统的运维优化(本课程是阿里云大学Apsara Clouder大数据专项技能认证:数据仓库系统的运维优化相关课程,仅能试听免费课时,需...
  • [转]开源数据仓库解决方案GreenPlum

    万次阅读 2016-05-03 18:51:18
    Greenplum DB 号称是世界上第一个开源的大规模并行数据仓库,最初是基于 PostgreSQL,现在已经添加了大量数据库方面的创新。Greenplum 提供 PD 级别数据量的强大和快速分析能力,特别是面向大数据方面的分析能力,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,444
精华内容 22,177
关键字:

仓库优化方案