【转帖】Mysql多维数据仓库指南 第一篇 第1章
Mysql多维数据仓库指南
第一篇基本原理
章节列表:
第1章:基本组成
第2章:维度历史
第3章:维度可加性
第4章:维度查询
本篇概述
你将运用关系数据库来实施一个维度数据仓库。事实表和维表这两种类型的关系表构成了一个数据仓库模式的基本部分,在本书的第一部分,你将用mysql数据库建立这些基本部分。
第1章:基本组成
概述
本章将了解两个重要的主题:星型模式和代理键。星型模式是一种维度数据仓库的数据结构。代理键是在数据仓库中添加到事实表以作为主键的字段。
在本章你将开始一个关于建立真实数据仓库的漫长旅程。一些任务需要在本章完成:
n 建立一个数据库用户。
n 建立两个关系数据库,一个作为数据仓库,另外一个作为源数据库。
n 为数据仓库建立数据库表。
n 产生代理键:
你需要建立一个源数据库是因为你的数据仓库还没有源数据。实际应用中这一步并不是必要的,因为你的数据仓库很有可能是基于已有的数据源建立的。你将在本书的第二篇开始使用这个源数据库。
第1节星型模式
一个好的维度数据仓库需要有简洁的数据结构。从技术角度看,一个简洁的结构将意味着更快速的查询。在一个维度数据仓库,关系数据库的实施中有两种类型的表,事实表和维度表。事实表包含商业事实数据(或者称为度量值)。维度表包含查询该数据库的种类。
注意在看完本书前面两个章节后,你对事实表和维度表将有更好的理解。
这些表在数据仓库中的联系模式看起来象星星状,因此该模式的术语就称为星型模式。
注意除了星型模式外,雪花模式也会用于数据仓库中。但是较之星型结构,其建模更为困难。而且,雪花模式不容易理解和应用,而且其查询性能也低于星型模式。这些缺陷是雪花模式不适合建立维度数据仓库,因此本书只是涉及星型模式。
一个星型模式包含一个事实表,该事实表环绕着两个甚至更多的维表。单星结构只有一个事实表,而多星结构则是每个星有多个的事实表,另外,维度表可以为多个事实表所共享。本章只包括单星结构,读者将会在19章“多星模式”中学习到多星结构。
图1-1 展示了一个单星结构的维度模式,这是一个我们将会在本书中扩展的销售订单的数据仓库。
图1-1一个单星型的维度模式
事实表名称的后缀通常是fact,而dim(维度dimension的缩写)通常用于维度表的后缀。根据这种命名规则,很明显,图1-1 中有一个事实表(销售订单事实表sales_order_fact)和四个维度表(客户维customer_dim,订单维 order_dim,产品维 product_dim, 以及日期维date_dim)。事实表包含一个或者多个可测的事实值(一个可以测的事实值简称为度量),而维表则对度量进行分类。
每个维表有且只有一个代理键字段,代理键字段名称的后缀是sk。维表中的每个代理键字段在事实表中都会有对应的相同的字段,这样使得数据库的查询更为容易。但是,事实表中以sk为后缀的字段并不是代表一个代理键字段。
图1-1中连接事实表sales_order_fact和四个维表的线指明了查询这些表的连接关系。这些连接是基于维表的代理键字段的。
当建立一个维度数据仓库的时候,你将会在数据仓库中自己产生代理键的值,这些代理键值不是从源数据得到的。代理键的值是连续的数值。
注意 后面关于“代理键”的章节将对代理键进行详细的说明。
现在你已经知道了星型模式,事实表,维表的概念,我们来看一个例子,如果我们对订单的订单金额感兴趣,并且决定用图1-1 中sales_order_fact表的order_amount字段作为度量。表1-1显示sales_order_fact表的一个抽样记录。
表1-1:一个事实表的抽样
将数据用电子表格形式展现:
customer_sk |
product_sk |
date_sk |
order_sk |
order_amount |
1 |
1 |
1 |
1 |
1000 |
表1-1所关联的维表中相应的数据记录将在表1-2到1-5中展示。
表1-2:客户维表中关联的行
customer_sk |
customer_no |
customer_name |
1 |
1 |
Dons Limited |
表1-3:产品维表中关联的行
product_sk |
product_code |
product_name |
1 |
1 |
Cangcung Hard Disk |
表1-4:时间维表中关联的行
sk |
date |
1 |
2007–02–01 |
表1-5:订单维表中关联的行
order_sk |
order_number |
1 |
1 |
事实表的行说明该订单的金额是$1,000。这是事实的度量。sales_order_fact表中的customer_sk字段值为1表示对应customer_dim维表中customer_sk字段值为1的行。这个关联表示,提交这个订单的是名为Dons Limited的客户。用事实表中的product_sk字段的值可以在产品维表中追踪到产品信息。通过将事实表和date_dim时间表的date_sk字段进行关联,你可以得到订单日期。同样,通过将事实表和order_dim订单维表中的order_sk字段进行关联,你可以得到订单号。
第2节代理键
维表中的代理键字段是维表的主键。代理键的值通常是连续的数值而不代表任何商业意义。相比之下,许多来自源数据的键值都有商业含义。
你将在你的数据仓库内部产生代理键值;你不可以从源数据得到代理键值,在第2章“维度历史”中我将说明这么做的目的。
在mysql中,你可以通过设置代理键字段的AUTO INCREMENT自增属性产生代理值。通过将自增字段用null值代替来插入一个递增的整数。
已经有足够的原理让我们可以开始建立我们的数据仓库了。接下来的这节,“任务”阐述了你需要在本章完成的任务的详细步骤。
----------------------------------------------------------------------------------------------------------------------------------------------
原帖地址:http://blog.chinaunix.net/uid-43642-id-2124571.html
【转帖】Mysql多维数据仓库指南 第一篇 第1章的更多相关文章
- [译]PrestaShop开发者指南 第一篇 基础
# 第一篇 基础 PS(PrestaShop简称)一开始就设定了能够在它的基础上很简单的构建第三方模块的机制,让它成为一款具有极高定制性的电子商务软件. PS的可以在三个方面进行定制: * 主题 * ...
- MySQL性能调优与架构设计——第4章 MySQL安全管理
第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...
- MySQL运维工具
Mysql运维过程中设计的各类工具以及各个场景的的命令行的分类.大体总结如下的xmind图片(.xmind附件 加 Q1123654342). 大体上分为: 实例管理工具.高可用工具.慢日志查询工具. ...
- 《javascript权威指南》读书笔记——第一篇
<javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...
- PADSPCB权威指南-第一章 PADS软件系统(部分)(原创)
PADSPCB权威指南-第一章(部分)豆丁地址:http://www.docin.com/p-707128286.html
- 【OpenCV入门指南】第一篇 安装OpenCV
http://blog.csdn.net/morewindows/article/details/8225783/ win10下vs2015配置Opencv3.1.0过程详解(转) http://ww ...
- [翻译]现代java开发指南 第一部分
现代java开发指南 第一部分 第一部分:Java已不是你父亲那一代的样子 第一部分,第二部分 =================== 与历史上任何其他的语言相比,这里要排除c语言和cobol语言,现 ...
- 第一篇:Win10系统搭建Python+Django+Nginx+MySQL 开发环境详解(完美版)
Win10+Python+Django+Nginx+MySQL 开发环境搭建详解 PaulTsao 说明:本文由作者原创,仅供内部参考学习与交流,转载引用请注明出处,用于商业目的请联系作者本人. Wi ...
- mysql运维必会的一些知识点整理
(1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...
随机推荐
- loj#2071. 「JSOI2016」最佳团体
题目链接 loj#2071. 「JSOI2016」最佳团体 题解 树形dp强行01分规 代码 #include<cstdio> #include<cstring> #inclu ...
- [USACO09JAN]Total Flow
OJ题号: BZOJ3996.洛谷2936.SPOJ-MTOTALF.SCU3353 思路: 题目的要求是将所有边合并成一条边,求合并后的流量. 实际上相当于直接求最大流. EdmondsKarp模板 ...
- org.apache.ibatis.binding.BindingException: Type interface XXX is not known to the MapperRegistry.
动态代理因为namespace的地方写错了
- linux sendmail 发送缓慢的问题
这个问题关键就是hosts里面对于本机host的设置有问题,你可以看下/var/log/mail.log retry 和 sleeping,再加上其他时间,用sendmail发送邮件等这么久,太累了吧 ...
- sitemap xml文件生成
sitemap xml生成方法 <?php /** * SitemapService.php. * * 生成sitemap */ class Sitemap { public $newLine ...
- Mui 下拉刷新,刷新完成功能实现
Mui中,正在刷新后,就直接回弹了,没有刷新完成这个过程,然后我就在中间添加了一个过程. 代码如下: //-----------日期格式化------------- function form ...
- [Android] 关于Android的问号?和@符号的用法
@表示引用资源,声明这是一个资源引用-随后的文本是以@[package:]type/name形式提供的资源名.@android:string表明引用的系统的(android.*)资源@string表示 ...
- 使用Python登录Github网站
在下面的代码中, 展示了使用Python脚本登录Github的方法. 如果需要登录别的网站,那么请使用Chrome的Inspect的功能寻找到目标的object,对代码进行替换. 代码先登录了gith ...
- 【GPU编解码】GPU硬解码---DXVA (转)
前面介绍利用NVIDIA公司提供的CUVID库进行视频硬解码,下面将介绍利用DXVA进行硬解码. 一.DXVA介绍 DXVA是微软公司专门定制的视频加速规范,是一种接口规范.DXVA规范制定硬件加速解 ...
- 你应该更新的 Java 知识之常用程序库【转载】
在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进.如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东 ...