数据库的星型模型与雪花模型

这篇具有很好参考价值的文章主要介绍了数据库的星型模型与雪花模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是星型模型

星型模式模型可以被描述为一个简单的星型结构:一个中心表包含事实数据,多个表从它向外辐射,由数据库的主键和外键连接。 在星型模式实施中,数据库的构建者将所有维度级别的维度数据存储在单个表或视图中。

例如,如果您使用星型模式实现Product维度,那么数据库构建者将使用单个表来实现维度中的所有级别,如屏幕截图所示。 所有级别中的属性都映射到名为PRODUCT的单个表中的不同列。(图片来自参考文献1)
数据仓库星型模型和雪花模型,db dw,数据库,数据仓库,星型模型,雪花模型

2.什么是雪花模型

雪花模式表示一个维度模型,它也由一个中心事实表和一组构成维度表组成,这些维度表进一步规范化为子维度表。 数据库构建者使用多个表或视图来存储维度数据。 单独的数据库表或视图存储与维度中每个级别有关的数据。
下图显示了 Product 维度的雪花实现。 维度中的每个级别都映射到不同的表。
数据仓库星型模型和雪花模型,db dw,数据库,数据仓库,星型模型,雪花模型

3.星型模型与雪花模型对比

1.星型模型因为数据存在冗余,很多时候进行查询统计时不需要再join外部维度表,因此在很多OLAP的场景中,星型模型的效率比雪花模型要高。
2.星型模型不用考虑很多正规化的因素,设计和实现都比较简单
3.雪花模型去除了数据冗余,因此可以节省存储资源。但是在进行分析的时候,需要join外部较多维度表才能得到结果,查询比较复杂效率也较慢。
4.正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的ETL、以及后期的维护都要复杂一些。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。

4.使用场景

一般我们在数仓底层能见到许多大宽表,这些大宽表就是基于星型模型设计的。
Ralph Kimbal作为数据仓库的大牛,在相关著作中列举了三个雪花模型的设计场景

1.大型客户维度。例如,80% 的事实表涉及匿名用户,或者能收集到很少详细信息的用户,另外有20% 涉及到可靠的注册客户,这些注册用户的用户维度信息与多个用户维度表相连接。

2.银行、经纪行和保险公司的金融产品维度,因为每个单个产品具有许多其他产品不具备的特殊属性。

3.多个企业共用的日历维度表。但每个企业的财政周期不同,节假日不同等等。在数据仓库的环境中用雪花模型,降低储存的空间,到了具体某个主题的数据集市再用星型模型。

参考文献:

1.https://www.jianshu.com/p/81685a8414bf
2.https://en.wikipedia.org/wiki/Ralph_Kimball
3.https://www.oracle.com/webfolder/technetwork/tutorials/obe/db/10g/r2/owb/owb10gr2_gs/owb/lesson3/starandsnowflake.htm文章来源地址https://www.toymoban.com/news/detail-523948.html

到了这里,关于数据库的星型模型与雪花模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Learn Mongodb了解DB数据库 ④

    @作者 : SYFStrive   @博客首页 : HomePage 📜: PHP MYSQL 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 📌: 觉得文章不错可以点点关注 👉: 专栏连接🔗 👉 VUEJS (🔥) 👉 MYSQL (🔥) 👉 微信小程序 (🔥) 👉 MONGODB (🔥) 👉 UNIAPP开发 (🔥) 提示:以下是本篇

    2024年02月11日
    浏览(40)
  • Learn Mongodb DB数据库部署 ②

    @作者 : SYFStrive   @博客首页 : HomePage 📜: PHP MYSQL 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 📌: 觉得文章不错可以点点关注 👉: 专栏连接🔗 👉 VUEJS (🔥) 👉 MYSQL (🔥) 👉 微信小程序 (🔥) 👉 MONGODB (🔥) 👉 UNIAPP开发 (🔥) 提示:以下是本篇

    2024年02月11日
    浏览(35)
  • Learn Mongodb了解DB数据库 ①

    @作者 : SYFStrive   @博客首页 : HomePage 📜: PHP MYSQL 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 📌: 觉得文章不错可以点点关注 👉: 专栏连接🔗 👉 VUEJS (🔥) 👉 MYSQL (🔥) 👉 微信小程序 (🔥) 👉 MONGODB (🔥) 👉 UNIAPP开发 (🔥) 提示:以下是本篇

    2024年02月11日
    浏览(36)
  • DB2 数据库监控用户赋权手册

    皮皮运维平台数据统一采集用户(DBAA)需要被监控数据库赋予对应下查询表、表函数以 及获取数据库监控数据的权限,具体授权操作有以下三部分。 实例用户 执行命令,并将结果重定向到 grant_select_to_dbaa.sql 文件中 实例用户 执行 db2 -tvf grant_select_to_dbaa.sql 进行赋权。 实例

    2024年02月07日
    浏览(37)
  • DB(一):数据库概述、SQL概述、Oracle数据类型

    包括Oracle、DB2、SQL Server、MySQL数据库概述;数据定义语言DDL、数据操作语言DML、事务控制语言TCL、数据查询语言DQL、数据控制语言DCL语言介绍;NUMBER 、CHAR、VARCHAR2、DATE数据库类型;CHAR和VARCHAR2的存储编码、CHAR和VARCHAR2的最大长度、LONG和CLOB类型。 1、DB和DBMS (1)、数据库(

    2024年02月09日
    浏览(80)
  • LINUX下使用SQLite查看.db数据库文件

    本文章用于记录自己所遇到问题,如有不正确的地方,欢迎指正 要在Linux设备上查看.db文件,可以使用SQLite数据库引擎工具。SQLite是一个轻量级的数据库管理系统,可以直接在命令行中操作数据库文件。 以下是在Linux上查看.db文件的步骤: 1. 确保已安装SQLite:在终端中运行以

    2024年02月07日
    浏览(58)
  • Linux系统安装DB2数据库的详细步骤

    1、DB2数据库的安装 一、将DB2的安装介质上传至/home目录,并解压:    tar –zxvf v9.5fp3_linuxx64_server.tar.gz 二、执行LANG=C 三、进入解压后的server目录(cd server/),执行./db2setup,步骤如下: # cd /home # tar -zxvf v9.7_linuxx64_server.tar.gz # cd server/ # ./db2setup     请额外注意:这里选择 Do

    2024年02月08日
    浏览(45)
  • 构建搜索引擎,而非向量数据库(Vector DB) [译]

    作者: Panda Smith 在过去 12 个月中,我们见证了向量数据库(Vector DB)创业公司的迅猛增长。我此刻并不打算深入探讨它们各自的设计取舍。相反,我更想探讨和解释一些关于向量数据库的常见理解——它是什么、它的功能用途,以及在解决问题时,我们应如何恰当地利用向

    2024年02月04日
    浏览(46)
  • python使用odbc连接db2、sqlserver数据库

    先介绍安装odbc驱动,如果已安装跳过次环节 参考链接:linux环境odbc驱动安装 - 哔哩哔哩 也可参考微软官网(Windows驱动也有介绍):安装 Microsoft ODBC Driver for SQL Server (Linux) - ODBC Driver for SQL Server | Microsoft Learn ODBC Driver是一种动态链接库 (DLL),支持 ODBC 的应用程序(如 Excel)可

    2024年02月10日
    浏览(42)
  • Oracle 数据库全表扫描的4种优化方法(DB)

    全表扫描的工作是扫描高水位一下所有的数据块。 这里就有一个问题,什么是高水位线。高水位的标志存在表头。 该数据块以后都是崭新未格式化的数据块,高水位的目的有二。它是全表扫描的 终点,并行插入的起点! 优化全表扫描的办法有四,核心就是降低高水位! 一

    2024年04月18日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包