文档介绍:数据库、数据仓库、大数据平台、数据中台、数据湖对比分析
一、概况
层出不穷的新技术、新概念、新应用往往会对初学者造成很大的困扰,有时候很难理清楚它们之间的区别与联系。本文将以数据
研发相关领域为例,对比分析我们工作中高频出现的几个名词
・一致性(Consistency)等同于所有节点访问同一份最新的数据副本。即任何一个读操作总是能够读到之前完成的写操作的结果,也就是说,在分布式环境中,不同节点访问的数据是一致的。
・可用性(Availability)每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据。即快速获取数据,可以在确定的时间内返回操作结果。
・分区容错性(Partitiontolerance)以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。即指当出现网络分区时係统中的一部分节点无法与其他的节点进行通信),分离的系统也能够正常运行,即可靠性。
一个分布式的系统不可能同时满足一致性、可用性和分区容错性,最多同时满足两个。当处理CAP的问题时,可以有以下几个选择:
・满足CA,不满足P。将所有与事务相关的内容都放在同一个机器上,这样会影响系统的可扩展性。传统的关系型数据库。如MySQL、SQLServer、PostgresSQL等都采用了此种设计原则。
・满足AP,不满足Co不满足一致性(C),即允许系统返回不一致的数据。其实,,更加关注的是服务是否可用,而不是一致性。比如你发了一篇博客或者写一篇微博,你的一部分朋友立马看到了这篇文章或者微博,另一部分朋友却要等一段时间之后才能刷出这篇文章或者微博。虽然有延时,,这几分钟的延时并不重要,不会影响用户体验。相反,当发布一篇文章或微博时,不能够立即发布(不满足可用性),用户对此肯定不爽。所以呢,,可用性和分区容错性的优先级要高于数据一致性,当然,并没有完全放弃一致性,而是最终的一致性(有延时)。如Dynamo、Cassandra、CouchDB等NoSQL数据库采用了此原则。
・满足CP,不满足A。强调一致性性(C)和分区容错性(P),放弃可用性性(A)。当出现网络分区时,受影响的服务需要等待数据一致,在等待期间无法对外提供服务。如Neo4J、HBase、MongoDB、Redis等采用了此种设计原则。
四、数据仓库仓库
什么是数据仓库?
数据仓库(DataWarehouse)是一个面向主题的(SubjectOriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(TimeVariant)的数据集合,用于支持管理决策(DecisionMakingSupport)o
・面向主题的:根据使用者的需求,将来自不同数据源的数据围绕着各种主题进行分类整合。
・集成的:来自各种数据源的数据按照统一的标准集成于数据仓库中。
・相对稳定的:数据仓库中的数据是一系列的历史快照,不允许修改或删除,只涉及数据查询。
・反映历史变化的:数据仓库会定期接收新的集成数据,从而反映出最新的数据变化。
数据库与数据仓库有什么区别
严格来讲数据仓库不是一门技术,也不是一个产品。像前文提到的关系型数据库MySQL和Oracle都属于一种产品。那么是什么数据仓库的,见名知意,其实就是存储数据的仓库,数据的来源有很多种,可以统一在数据仓库中进行汇合,然后通过统一的建模,加工成服务与数据分析的数据模型,辅助企业分析决策。
那么,数据仓库该怎么构建呢,目前使用Hive构建数据仓库的比较多,本文不会过多分析这些大数据技术。总之一句话,数据仓库涉及数据建模,数据抽取ETL,数据可视化等一系列的流程,是一种数据解决方案,通常需要多种技术进行组合使用。
数据仓库的本质是OLAP,即是做在线分析处理,这是与数据库的本质区别。还有一点既然是数据仓库,肯定是要加工数据,那么加工数据肯定耗时间,所以加工数据在实际的应用中又分为批处理和实时处理。
数据库是为了解决OLTP而存在的,而数据仓库是为了分析数据而存在的。数据库的数据是数据仓库的数据源,即将数据库的数据加载至数据仓库,所以说,数据仓库不生产数据,只做数据的搬运工。
还有一点就是,数据仓库并不是必须的,但是对于一个业务系统而言,数据库是必须的。只有在业务稳定运转的情况下,才会去构建企业级数据仓库,通过数据分析,数据挖掘来辅助业务决策,实现锦上添花。
数据库
数据仓库
数据处理类型
OLTP
OLAP
使用人员
业务开发人员
分析决策人员
核心功能
日常事务处理
面向分析决策