文档章节

数据库与数据仓库的区别(二)

 张欢19933
发布于 2016/08/21 23:27
字数 1044
阅读 40
收藏 0

数据库是操作型数据库,数据仓库是分析型数据库:

 1. 操作型数据库
主要用于业务支撑。一个公司往往会使用并维护若干个数据库,这些数据库保存着公司的日常操作数据,比如商品购买、酒店预订、学生成绩录入等;
2. 分析型数据库
主要用于历史数据分析。这类数据库作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析;

 1. 数据组成差别 - 数据时间范围差别
一般来讲,操作型数据库只会存放90天以内的数据,而分析型数据库存放的则是数年内的数据。这点也是将操作型数据和分析型数据进行物理分离的主要原因。
 2. 数据组成差别 - 数据细节层次差别
操作型数据库存放的主要是细节数据,而分析型数据库中虽然既有细节数据,又有汇总数据,但对于用户来说,重点关注的是汇总数据部分。
操作型数据库中自然也有汇总需求,但汇总数据本身不存储而只存储其生成公式。这是因为操作型数据是动态变化的,因此汇总数据会在每次查询时动态生成。
而对于分析型数据库来说,因为汇总数据比较稳定不会发生改变,而且其计算量也比较大(因为时间跨度大),因此它的汇总数据可考虑事先计算好,以避免重复计算。
3. 数据组成差别 - 数据时间表示差别
操作型数据通常反映的是现实世界的当前状态;而分析型数据库既有当前状态,还有过去各时刻的快照,分析型数据库的使用者可以综合所有快照对各个历史阶段进行统计分析。
4. 技术差别 - 查询数据总量和查询频度差别
操作型查询的数据量少而频率多,分析型查询则反过来,数据量大而频率少。要想同时实现这两种情况的配置优化是不可能的,这也是将两类数据库物理分隔的原因之一。
5. 技术差别 - 数据更新差别
操作型数据库允许用户进行增,删,改,查;分析型数据库用户则只能进行查询。
6. 技术差别 - 数据冗余差别
数据的意义是什么?就是减少数据冗余,避免更新异常。而如5所述,分析型数据库中没有更新操作。因此,减少数据冗余也就没那么重要了。
现在回到开篇是提到的第二个问题"某大公司Hadoop Hive里的关系表不完全满足完整/参照性约束,也不完全满足范式要求,甚至第一范式都不满足。这种情况正常吗?",答曰是正常的。因为Hive是一种数据仓库,而数据仓库和分析型数据库的关系非常紧密(后文会讲到)。它只提供查询接口,不提供更新接口,这就使得消除冗余的诸多措施不需要被特别严格地执行了。
7. 功能差别 - 数据读者差别
操作型数据库的使用者是业务环境内的各个角色,如用户,商家,进货商等;分析型数据库则只被少量用户用来做综合性决策。
8. 功能差别 - 数据定位差别
这里说的定位,主要是指以何种目的组织起来。操作型数据库是为了支撑具体业务的,因此也被称为"面向应用型数据库";分析型数据库则是针对各特定业务主题域的分析任务创建的,因此也被称为"面向主题型数据库"。

本文转载自:http://www.cnblogs.com/muchen/p/5305658.html

粉丝 46
博文 538
码字总数 247200
作品 0
海淀
私信 提问
胖子哥大数据之路(一)-数据仓库也需要大数据

一、楔子   大数据传统企业实施,其路漫漫,绝不会如昙花一现,探索大数据在传统行业的实施之路,寻找一条适合传统行业的企业大数据实施方法体系,是我执着坚守的信念,大数据是一种信仰,...

张子良
2014/02/12
3.5K
11
CodeForge技术沙龙 - 大数据平台与高性能系统开发

互联网生活中,我们最常接触的大概就是各种各样的用户界面,对于后方始终提供维稳的服务器系统和数据仓库的运转却知之甚少。本次活动请来了两位技术大牛与我们分享大数据背景下服务器与数据库...

babybright123
2015/11/03
618
21
CodeForge技术沙龙 - 大数据平台与高性能系统开发

互联网生活中,我们最常接触的大概就是各种各样的用户界面,对于后方始终提供维稳的服务器系统和数据仓库的运转却知之甚少。本次活动请来了两位技术大牛与我们分享大数据背景下服务器与数据库...

babybright123
2015/11/03
3
0
数据仓库和数据库的区别(一)

数据库是面向事务的设计,数据仓库是面向主题设计的。数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。 数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设...

张欢19933
2016/08/21
51
0
数据库和数据仓库的区别

有两个层面/角度来回答这个有趣的问题: 1,逻辑层面/概念层面:数据库和数据仓库其实是一样的或者及其相似的,都是通过某个数据库软件,基于某种数据模型来组织、管理数据。但是,数据库通常...

牧师-Panda
2016/11/28
145
0

没有更多内容

加载失败,请刷新页面

加载更多

uni app 零基础小白到项目实战

$emit 子组件传给父组件$ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http'const now = Date.now || function() { return new Date().getTime......

达达前端小酒馆
25分钟前
4
0
Tomcat是如何实现异步Servlet的

前言 通过我之前的Tomcat系列文章,相信看我博客的同学对Tomcat应该有一个比较清晰的了解了,在前几篇博客我们讨论了Tomcat在SpringBoot框架中是如何启动的,讨论了Tomcat的内部组件是如何设...

木木匠
49分钟前
21
0
mysql中间件分享(Mysql-prxoy,Atlas,DBProxy,Amoeba,cobar,TDDL)

hello 各位小伙伴大家好,我是小栈君,这期我们分享关于mysql中间件的研究,也就是数据层的读写分离和负载均衡,希望能够在实际的应用中能够帮助到各位小伙伴。 下期我们将继续分享go语言的系...

IT干货栈
今天
10
0
OSChina 周一乱弹 —— 人生,还真是到处是意外

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享lil peep的单曲《High School》 《High School》- lil peep 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
843
13
Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部