本例子中,系统定期从原数据库saklia抽取增量数据,然后转换成符合星型模型的数据,最后把数据加载到目标数据库的租凭业务星型模型中。

一、sakila示例数据库
  可以参照官方文档对sakila数据库模型全面了解。https://dev.mysql.com/doc/sakila/en/
  模型关系图软件Power Architecthttp://www.bestofbi.com/page/architect_download_os
  笔记所需所有文件----链接:https://pan.baidu.com/s/1ce5jDwBm8UR-7Q8TkDuvZQ 密码:nybj

二、DVD光盘租赁业务流程
  sakila数据库的主要目的在于支撑DVD租赁商店的业务流程,下面列举一些业务流程获得中的关键点来帮助理解sakila数据库是如何支撑的:

  • 每个商店维护自己的租赁影片清单,当客户取走或归还DVD光盘时会有一个 专门的店员对这个清单进行维护
  • 影片描写的内容同样在维护信息范围之列,如分类(动作、冒险、喜剧)、演员、等级、特殊分类(例如被删除的情节和预告片)。这些信息可能被打印在DVD包装的标签上。
  • 必须在商店注册成为会员才能租赁光盘。
  • 客户可以在任何一家商店租赁一张或多张光盘,同时,商店希望客户在每张光盘对应的租赁期内归还之前租赁的光盘。
  • 顾客可以在任意时间对任何租赁的光盘付费。

三、sakila数据库模型关系图
  下图展示了sakila数据库的数据库模型。这是一个典型的规范化设计(包含相当数量的桥接表),这种设计适合与联机事务处理(OLTP)类业务。

图中可以分为四个主题,具体如下:

  • 电影类(黄色):包含film表和包含影片附加信息的表,如category、actor和language。
  • 商店类(绿色):包括store表和相关联的staff表、inventory表。
  • 客户类(蓝色):以customer表为主线,包含与顾客有关联的rental表和payment表。
  • 区域类(紫色):包括country、city和address表,这些表为顾客、商店和员工提供标准化的字典信息。

四、总体设计规范

  • sakila数据库表采用单一对象名称命名。
  • 每张表都有自增主键列,列名采用“表名_id”的规则命名,如表film的自增主键列为film_id。
  • 外键约束引用主键,且名字与主键列相同。例如,表store的address_id列引用表address的address_id列。
  • 每张表都有一列叫做last_update,这是一个TIMESTAMP类型的字段,用来记录增加或更新数据时的时间。

五、mysql导入sakila数据库

  1. 进入终端,输入 /usr/local/MySQL/bin/mysql -u root -p,回车后输入mysql密码进入mysql命令模式。
  2. 用source命令运行sakila-schema.sql和sakila-data.sql两个脚本:
    Mysql > source sakila-schema.sql
    Mysql > source sakila-data.sql

    六、租赁业务的星型模型
      租赁业务的星型模式来源于sakila数据库,是租赁业务里可能的几个维度模型。

      如图展示了一个典型的维度模型,它包含了一个叫做fact_rental的事实表,事实表与多个维度表关联。fact_rental表与sakila模式下的原始表rental表对应:rental表中的一行生成fact_rental表中的一行。
      这种维度建模方式非常适用于联机事物处理(OLTP)。它同样也是一个经典的星型模式,因为几乎所有的维度都是单一的,维度表之间没有关联,维度表只和事实表有关。
      注意:并不是所有的维度表之间都没有关联,比如图中的dim_ator和dim_film之间通过中间表dim_film_actor_bridge进行关联。详情在随后的“维度表”中描述。

七、租赁事实表(fact_rental)
  事实表包含了一些数值类型的能体现业绩的业务度量值(count_returns、coun_rentals、rental_duration)。此外,还包含了一些列,用来作为指向维度表的键。当用户访问某个度量值时,维度表中的数据将提供该度量值对应的业务维度。

八、维度表
  租赁业务的星型模型中提到租赁业务星型模型的每一个维度都是一个单独的维度表。星型模型维度表的命名全部遵守了 dim_<dimension-name>的规则,其中 <dimension-name> 用来描述维度的内容。根据之前sakila数据库模型的分类,(建议)可以将维度表按照相关概念分为四组,再加上一组事实表“how much?”,一共五组。

  • 人员(who):这组包括dim_customer表和dim_staff表,分别代表租赁业务中的客户和员工。维度表里使用 %_version_number、%_valid_from和%_valid_through列来跟着同一客户或员工的历史记录。
  • 时间(when):这组中的维度表主要用来记录所有光盘租赁或归还时间点,其中,维度表dim_date实际是日历,它所谓的角色扮演维度,用来同时标记租赁日期和归还日期。而dim_time维度表则是用来记录当天的租赁时间。
  • 地点(where):维度表dim_storet用来记录DVD光盘是从哪个商店租赁的,和dim_staff、dim_customer一样,dim_store也是缓慢增长维,也有一组列用来记录同一个商店的不同历史版本。
  • 事件(what):这组包括dim_actor和dim_film两个维度表,它们是租赁业务的主题。只有dim_film表和fact_rental表直接关联,因为店员才是租赁和归还的实际对象。但是,一部电影由众多演员构成,这些演员在某种意义上也是租赁对和归还对象。这就是所谓的桥接表dim_film_actor_bridge的由来,该表联系了演员和电影。另外,该表保存了一个权重因子,用来评估一个演员对影片的贡献值。通过原始指标乘以权重因子就可以从演员的角度分析租赁收入,而把原来的指标值看成附加值。例如,可以回答这样的问题:上个月Robert De Niro或者Al Pacino的电影获得了多少租金收益?
      在租赁业务的星型模型中,从源数据库sakila模型中派生出来的每个维度(除了表film_date和dim_time)都对应这sakila数据模型中的每个表。例如,维度表dim_store对应着业务系统中的store表,维度表dim_actor对应这actor表。

九、键和变更数据捕获
  除了表dim_date和dim_time,每个维度表都使用自增列作为代理主键,表dim_date和dim_time的主键将在后面介绍,它们的主键叫做智能键。这两个表的智能键分别来源于部分时间和日期,可以在ETL中直接发挥作用,也用来对事实表作区分。
  维度表的键值被用来关联表fact_rental和维度表。所有维度表的主键列都以<维度名称>_key来命名,<维度名称>就是维度表的表名除了dim_前缀之外的剩余部分。
  源模式中的每个表都有last_uodate字段,该字段保存了一个时间戳TIMESTAMP,用来存储每一行的最后修改(或添加)时间,这个字段对于变更数据捕获非常有用,变更数据捕获对数据持续增长的场景非常有用。变更数据捕获的方法有很多种,这里使用的是一种最直接的方法:每个维度表都有last_update字段,这个字段保存了原始sakila模式中对应表的last_update字段的值。这样可以在维度表上执行一个查询,获得最后加载的日期/时间,并用这个日期/时间来识别和抽取所有源数据库里对应表的最新变更的数据行。
  除了代理主键,每个维度表也包含一列用来存储来自sakila数据模型的主键值,例如,星型模型中的表dim_film有一列film_id用来保存表film中的film_id,这些列非常重要,是用来判断变更的数据是增加的还是更新的数据。

十、按照租赁业务的星型模型
  在mysql命令行模式,用source命令运行sakila-schema.sql和sakila-data.sql两个脚本:
    Mysql > source sakila_dwh_data.sql
    Mysql > source sakila_dwh_data_schema.sql

十一、创建数据库用户
  在mysql命令行中,创建两个数据库用户去访问sakila数据库和租赁星型模型:
  mysql > CREATE USER sakila IDENTIFIED BY ‘sakila’;
  mysql > GRANT ALL PRIVILEGES ON sakila.* TO sakila;

mysql > CREATE USER sakila_dwh IDENTIFIED BY ‘sakila_dwh’;
  mysql > GRANT ALL PRIVILEGES ON sakila_dwh.* TO sakila_dwh;

  到这里,sakila数据库和租赁星型模型数据库准备完毕。

ETL示例解决方案 —— Sakila下载和基本配置 (笔记一)相关推荐

  1. ETL示例解决方案 —— Sakila示例之load_dim_staff转换(笔记四)

    load_dim_staff转换 作业load_rentals中第一个要执行的转换是load_dim_staff. 这个转换的目的是加载dim_staff维度表. 数据库连接 load_rentals ...

  2. 【MySQL】MySQL之示例数据库Sakila下载及安装

    本篇将演示如何下载及安装MySQL示例数据库Sakila. 1.下载Sakila数据库: [root@strong ~]# wget http://downloads.mysql.com/docs/s ...

  3. html 跨域_常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

  4. 常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

  5. MongoDB数据库的下载, 安装与配置

    MongoDB数据库下载安装与使用 文章目录 1.MongoDB数据库的下载, 安装与配置 2.MongoDB数据库操作 3.Python与mongo交互 ------文章目录 1.MongoDB数据 ...

  6. 【OptiX】第0个示例 OptixHello 学习Optix的工程配置以及基本框架

    首先需要查看本博客的这篇文章:[Optix]Optix介绍与示例编译 把该安装的工程都安装好.可以按照本文所说的顺序创建和理解代码,也可以在本文末尾下载到已经配置好的代码.建议首先在本文末尾处下载代码 ...

  7. MySQL笔记01: MySQL入门_1.2 MySQL下载安装与配置

    2.2 MySQL下载安装与配置 2.2.1 MySQL下载 MySQL中文官网:MySQL MySQL英文官网:MySQL MySQL官网下载地址:MySQL :: MySQL Downloads ...

  8. 实习手册一(Python基于Tornado框架的接口响应服务)软件下载与环境配置

    目录 一.软件下载及环境配置: 1.Homebrew 2.python3.9 3.PyCharm专业版 4.MySQL 5.Navicat for MySQL 6.Redis 7.Postman 此次 ...

  9. Nginx的下载安装及其配置指令

    文章目录 一.Nginx的应用概述 1.Nginx概述 2.Nginx四大应用场景 1.HTTP服务器 2.反向代理 3.负载均衡 4.动静分离 二.Nginx的下载安装及其配置指令 1.环境准备 2 ...

最新文章

  1. js 页面跳转保存状态
  2. java中获取时间的方式,持续更新
  3. GTSAM Tutorial学习笔记
  4. MyBatis 实际使用案例-核心对象的生命周期
  5. linux用pipe创建的文件类型,linux文件类型之 管道
  6. Microblogging Freedom
  7. Flask + Vue.js : Fullstack Development
  8. C# action 返回值_C#知识点讲解之C#delegate、event、Action、EventHandler的使用和区别
  9. go程序员面试算法宝典 pdf_Kotlin程序员面试算法宝典 PDF 下载
  10. 扩散方程——热传导问题(能量定律+傅里叶热传导定律)+ 拉普拉斯方程 | 偏微分方程(三)
  11. http接口测试工具
  12. 使用go进行人脸识别活体检测
  13. Windows 32位程序内存扩展
  14. 原生Js从0开始实现一个链家网地图画圈找房功能
  15. 用计算机怎么算sin1.75,计算器sin30怎么按
  16. l33t-hoster .htaccess \x00注释putenv绕过disable_function计算c代码
  17. B-spline Curves 学习之B样条曲线的移动控制点、修改节点分析(7)
  18. 【VHDL】随机存储器RAM、只读存储器ROM
  19. 传染病模型(1)——SI模型及matlab详解
  20. 【微软Windows 7操作系统提速技巧总结】

热门文章

  1. 【实验五 一维数组】7-6 sdut- C语言实验-数日子
  2. 学会这一招,轻松处理图片转ico格式
  3. mac go版本升级
  4. 什么是线速路由器 线速转发
  5. 如何判断用户输入的邮箱格式是否正确?
  6. Python常用第三方库
  7. 无频闪护眼灯哪个好?盘点四款无频闪的护眼台灯
  8. slider wpf 垂直_继续聊WPF——Slider控件
  9. mac checkra1n越狱14.0-14.8
  10. 不输给MacBook的win10精确式触摸板