什么是数据仓库
数据仓库简称数仓(Data Warehousing), 是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
举例说一下,比如一个电商平台,业务系统可能有多个,像订单系统,物流系统,广告系统,进货系统等等,这些数据都是非常有价值的,可以从中挖掘,分析出很多信息。但是,这些系统的数据可能在一台或者多台数据库中,这时,如果我们直接在这些业务系统库中直接关联表,查寻我们想要的信息,需要占用业务系统库资源,影响用户的使用,同时,如果不小心修改了某一条数据,将是致命的。所以,数据仓库诞生了,将企业所有的业务系统的数据放到一个数据仓库中,抽取转换,汇总,这个过程叫ETL,分析人员想要哪些数据,直接从数仓中取,再也不需要从业务系统库中查询了。
数据仓库和数据库的区别
说到数仓与数据库的区别,这里的数据库指关系型数据库,其实从技术角度来说,数据库的原理比数据仓库复杂很多,比如完整性保护、并发控制等等。数据库即OLTP,联机型事务处理,数据仓库即OLAP,联机型分析处理。
一般来说,传统数据库是为存储而生,而数据仓库很明显,是为分析而生。实现目的的不同一开始就注定它们的差异。传统数据库包括增删改查,但数据仓库注重查询。而传统数据库的主要任务是执行联机事务处理,主要负责日常操作。数据仓库系统管理大量历史数据,提供汇总和聚集机制,而且在不同的粒度层上存储和管理信息。
关系型数据库和分布式库
1.关系型数据库,主流的产品有Oracle,DB2,Mysql,SqlServer,ProgreSQL等
2.分布式库,hive,pig,hbase
pig和hive的作用是一致的都是为了简化mapReduce的编程而开发的,但是hive是过程化语言SQL,pig是数据流语言pig Latin,用的比较少;
就工具的选择来说,HiveQL类似于SQL,不需要大量的学习,所以大家在选择工具的时候一般会选择hive,但是hive一般擅长处理的是结构化的数据,pig可以处理任何数据,所以pig还是有一定优势的;
hbase是基于hdfs的,支持大量的数据查询,速度快,不支持类sql语言,但是可以借助Phoenix实现sql查询,不支持表连接等。
离线计算,实时计算,流式计算
离线计算表面理解,计算速度比较慢,成本低,应用场景也比较多,一般指数据每天更新,关系型数据库,hive等都可以实现;
实时计算意思指比离线计算快点,成本较大,一般指数据更新级别到分钟,spark sql可以实现;
流式计算指数据像流水一样,产生一条数据,就把它放到分析结果中,即更新级别到秒,主流技术spark streaming,flink,storm,成本大,速度快,应用场景丰富,一般需要配合kafka等。
总结
对大数据感兴趣的可以深入了解一下hadoop体系,虽然hadoop出来将近十多年了,但是它依然是主流的技术之一。国内一些企业像阿里,华为,星环等公司都生产了基于hadoop,spark等一些分布式计算平台,相信,不久的未来,这些产品会像spring大家族一样,封装成一个个框架 ,让更多的开发者实现快速开发,分析。