第二篇:数据仓库与数据集市建模

2023-11-15

阅读目录

回到顶部

前言

        数据仓库建模包含了几种数据建模技术,除了之前在数据库系列中介绍过的ER建模关系建模,还包括专门针对数据仓库的维度建模技术。

        本文将详细介绍数据仓库维度建模技术,并重点讨论三种基于ER建模/关系建模/维度建模的数据仓库总体建模体系:规范化数据仓库,维度建模数据仓库,以及独立数据集市。

回到顶部

维度建模的基本概念

        维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。

        它本身属于一种关系建模方法,但和之前在操作型数据库中介绍的关系建模方法相比增加了两个概念:

        1. 维度表(dimension)

        表示对分析主题所属类型的描述。比如"昨天早上张三在京东花费200元购买了一个皮包"。那么以购买为主题进行分析,可从这段信息中提取三个维度:时间维度(昨天早上),地点维度(京东), 商品维度(皮包)。通常来说维度表信息比较固定,且数据量小。

        2. 事实表(fact table)

        表示对分析主题的度量。比如上面那个例子中,200元就是事实信息。事实表包含了与各维度表相关联的外码,并通过JOIN方式与维度表关联。事实表的度量通常是数值类型,且记录数会不断增加,表规模迅速增长。

        注:在数据仓库中不需要严格遵守规范化设计原则(具体原因请看上篇)。本文示例中的主码,外码均只表示一种对应关系,此处特别说明

回到顶部

维度建模的三种模式

        1. 星形模式

        星形模式(Star Schema)是最常用的维度建模方式,下图展示了使用星形模式进行维度建模的关系结构:

        可以看出,星形模式的维度建模由一个事实表和一组维表成,且具有以下特点:

                a. 维表只和事实表关联,维表之间没有关联;

                b. 每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;

                c. 以事实表为核心,维表围绕核心呈星形分布;

        2. 雪花模式

        雪花模式(Snowflake Schema)是对星形模式的扩展,每个维表可继续向外连接多个子维表。下图为使用雪花模式进行维度建模的关系结构:

        星形模式中的维表相对雪花模式来说要大,而且不满足规范化设计。雪花模型相当于将星形模式的大维表拆分成小维表,满足了规范化设计。然而这种模式在实际应用中很少见,因为这样做会导致开发难度增大,而数据冗余问题在数据仓库里并不严重。

        3. 星座模式

        星座模式(Fact Constellations Schema)也是星型模式的扩展。基于这种思想就有了星座模式:

 

        前面介绍的两种维度建模方法都是多维表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。

        4. 三种模式对比

        归纳一下,星形模式/雪花模式/星座模式的关系如下图所示:

        雪花模式是将星型模式的维表进一步划分,使各维表均满足规范化设计。而星座模式则是允许星形模式中出现多个事实表。本文后面部分将具体讲到这几种模式的使用,请读者结合实例体会。

回到顶部

实例:零售公司销售主题的维度建模

        在进行维度建模前,首先要了解用户需求。而笔者在数据库系列的第一篇就讲过,ER建模是当前收集和可视化需求的最佳技术。因此假定和某零售公司进行多次需求PK后,得到以下ER图:

        随后可利用建模工具将ER图直接映射到关系图: 

        需求搜集完毕后,便可进行维度建模了。本例采用星形模型维度建模。但不论采取何种模式,维度建模的关键在于明确下面四个问题:

        1. 哪些维度对主题分析有用?

        本例中,根据产品(PRODUCT)、顾客(CUSTOMER)、商店(STORE)、日期(DATE)对销售额进行分析是非常有帮助的;

        2. 如何使用现有数据生成维表?

                a. 维度PRODUCT可由关系PRODUCT,关系VENDOR,关系CATEGORY连接得到;

                b. 维度CUSTOMER和关系CUSTOMER相同;

                c. 维度STORE可由关系STROE和关系REGION连接得到;

                d. 维度CALENDAR由关系SALESTRANSACTION中的TDate列分离得到;

        3. 用什么指标来"度量"主题?

        本例的主题是销售,而销量和销售额这两个指标最能直观反映销售情况;

        4. 如何使用现有数据生成事实表?

        销量和销售额信息可以由关系SALESTRANSACTION和关系SOLDVIA,关系PRODUCT连接得到;

        明确这四个问题后,便能轻松完成维度建模:

        细心的读者会发现三个问题:1. 维表不满足规范化设计(不满足3NF);2. 事实表也不满足规范化设计(1NF都不满足); 3. 维度建模中各维度的主码由***ID变成***Key;

        对于前两个问题,由于当前建模环境是数据仓库,而没有更新操作,所以不需要严格做规范化设计来消除冗余避免更新异常。

        因此虽然可以以雪花模型进行维度建模,如下所示: 

        但这样会加大查询人员负担:每次查询都涉及到太多表了。因此在实际应用中,雪花模型仅是一种理论上的模型。星座模型则出现在"维度建模数据仓库"中,本文后面将会讲到。

        对于第三个问题,***Key这样的字段被称为代理码(surrogate key),它是一个通过自动分配整数生成的主码,没有任何其他意义。使用它主要是为了能够处理"缓慢变化的维度",本文后面会仔细分析这个问题,这里不纠结。

回到顶部

更多可能的事实属性

        除了对应到维度的外码和度量属性,事实表中还常常考虑另外两个属性:事务标识码(transaction identifier)和事务时间(transaction time)。

        事务标识码通常被命名为TID,其意义就是各种订单号,事务编号...... 为什么将这个属性放到事实表而不是维表中呢?一个主要原因是它的数量级太大了,这样每次查询都会耗费很多资源来Join。这种将某些逻辑意义上的维度放到事实表里的做法被称为退化维度(degenerate dimension)。

        将事务时间维度放到事实表中的考虑也是出于相同考虑。然而这么设计又一次"逆规范化"了:事务标识码非主码却决定事务标识时间,显然违背了3NF。但现在我们是为数据仓库建模,所以这样做是OK的。另外在分布式的数据仓库中,这个字段十分重要。因为事实表的数量级非常大,Hive或者Spark SQL这类分布式数据仓库工具都会对这些数据进行分区。任何成熟的分布式计算平台中都应禁止开发人员建立非分区事实表,并默认分区字段为(当天)日期。

回到顶部

经典星座模型

        前文已经讲过,有多个事实表的维度模型被称为星座模型。星座模型主要有以下两大作用:共享维度和设置细节/聚集事实表。下面分别对这两种情况进行分析:

        1. 共享维度

        以前文提到的零售公司为例,假如该公司质量监管部门希望用分析销售主题同样的方法分析劣质产品,那么此时不需要重新维度建模,只需往模型里加入一个新的劣质产品事实表。之后新的数据仓库维度建模结果如下:

        2. 细节/聚集事实表

        细节事实表(detailed fact tables)中每条记录表示单一事实,而聚集事实表(aggregated fact tables)中每条记录则聚合了多条事实。从表的字段上看,细节事实表通常有设置TID属性,而聚集事实表则无。

        两种事实表各有优缺点,细节事实表查询灵活但是响应速度相对慢,而聚集事实表虽然提高了查询速度,但使查询功能受到一定限制。一个常见的做法是使用星座模型同时设置两种事实表(可含多个聚集事实表)。这种设计方法中,聚集事实表使用和细节事实表细节事实表的维度。如下维度建模方法采用星座模型综合了细节事实表和两种聚集事实表:

回到顶部

缓慢变化维度问题

        虽然,维表的数据比事实表更稳定。但不论如何维度在某些时候总会发生一些变化。在之前曾抛出一个问题:为什么维度建模后的关系不是***ID,而是***Key了。这样做的目的其实就是为了解决一种被称为缓慢维度变化(slowly changing dimension)的问题。在维度变化后,一部分历史信息就被丢掉了。比如张三是某公司会员。

        但仅仅这么做还是不够的,代理码需要配合时间戳,以及行标识符使用才能解决缓慢维度变化的问题。如下CUSTOMER表使用该方法避免缓慢维度变化:

        可以看到用户张三对应新维度的TaxBracket状态由Low变成了High。如果需要统计张三的相关行为,那么可以让所有记录用CustomerID字段Join事实表;如果要统计当前TaxBracket为Low的用户状态,则可将Row Indicator字段为Current的记录用CustomerKey字段Join事实表;如果要统计历史TaxBracket状态为Low的用户情况,则只需要将TaxBracket属性为Low的用户记录的CustomerKey属性与事实表关联。

回到顶部

数据仓库建模体系之规范化数据仓库

        所谓"数据仓库建模体系",指的是数据仓库从无到有的一整套建模方法。最常见的三种数据仓库建模体系分别为:规范化数据仓库,维度建模数据仓库,独立数据集市。很多书将它们称为"数据仓库建模方法",但笔者认为数据仓库建模体系更能准确表达意思,请允许我自作主张一次吧:)。下面首先来介绍规范化数据仓库。

        规范化数据仓库(normalized data warehouse)顾名思义,其中是规范化设计的分析型数据库,然后基于这个数据库为各部门建立数据集市。总体架构如下图所示:

        该建模体系首先对ETL得到的数据进行ER建模,关系建模,得到一个规范化的数据库模式。然后用这个中心数据库为公司各部门建立基于维度建模的数据集市。各部门开发人员大都从这些数据集市提数,通常来说不允许直接访问中心数据库。    

回到顶部

数据仓库建模体系之维度建模数据仓库

        非维度建模数据仓库(dimensionally modeled data warehouse)是一种使用交错维度进行建模的数据仓库,其总体架构如下图所示:

        该建模体系首先设计一组常用的度集合(conformed dimension),然后创建一个大星座模型表示所有分析型数据。如果这种一致维度不满足某些数据分析要求,自然也可在数据仓库之上继续构建新的数据集市。

回到顶部

数据仓库建模体系之独立数据集市

        独立数据集市的建模体系是让公司的各个组织自己创建并完成ETL,自己维护自己的数据集市。其总体架构如下图所示:

        从技术上来讲这是一种很不值得推崇的方式,因为将使信息分散,影响了企业全局范围内数据分析的效率。此外,各组织之间的ETL架构相互独立无法复用,也浪费了企业的开发资源。然而出于某些公司制度及预算方面的考虑,有时也会使用到这种建模体系。

回到顶部

三种数据仓库建模体系对比

        规范化数据仓库和维度建模数据仓库分别是Bill Inmon和Ralph Kimball提出的方法。关于哪种方法更好,哪种方法更优秀的争论已经由来已久。但随着这两种数据仓库应用越来越多,人们也逐渐了解到两种数据仓库的优劣之处,如下表所示:

        产生这些区别的根本之处在于规范化数据仓库需要对企业全局进行规范化建模,这将导致较大的工作量。但这一步必须完成好,才能继续往上建设数据集市。因此也就导致规范化数据仓库需要一定时间才能投入使用,敏捷性相对后者来说略差。但是规范化数据仓库一旦建立好了,则以后数据就更易于管理。而且由于开发人员不能直接使用其中心数据库,更加确保了数据质量。还有由于中心数据库是采用规范化设计的,冗余情况也会更少。

        然而另一方面维度建模数据仓库除了敏捷性更强,而且适用于业务变化比较频繁的情况,对开发人员的要求也没有规范化数据仓库那么高。总之各有利弊,具体实施时需要仔细的权衡。

回到顶部

小结

        数据仓库建模是一个综合性技术,需要使用到ER建模、关系建模、维度建模等技术。而且当企业业务复杂的时候,这部分工作更是需要专门团队与业务方共同合作来完成。因此一个优秀的数据仓库建模团队既要有坚实的数据仓库建模技术,还要有对现实业务清晰、透彻的理解。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第二篇:数据仓库与数据集市建模 的相关文章

  • 数据资源池和数据仓库的区别

    数据资源池和数据仓库都是企业中用来存储和管理数据的重要组成部分 但它们在实际应用中有着不同的作用和特点 数据资源池通常是一个集成多个数据源的中央存储库 可以存储不同类型和来源的数据 包括结构化 半结构化和非结构化数据 数据资源池可以通过不同
  • 如何保障数仓数据质量?

    有赞数据报表中心为商家提供了丰富的数据指标 包括30 页面 100 数据报表以及400 不同类型的数据指标 它们帮助商家更合理 科学地运营店铺 同时也直接提供分析决策方法供商家使用 并且 每天在跑的底层任务和涉及的数据表已经达到千级别 面对
  • 数据仓库-数据分层理论详解

    主题 Subject 是在较高层次上将企业信息系统中的数据进行综合 归类和分析利用的一个抽象概念 每一个主题基本对应一个宏观的分析领域 在逻辑意义上 它是对应企业中某一宏观分析领域所涉及的分析对象 例如 销售分析 就是一个分析领域 因此这个
  • Hive练习题 字符串与时间类型转换

    参考文章 https blog csdn net a805814077 article details 115014708 概念 时间戳 也就是timestamp 是hive中的一种数据类型 与unix timestamp不是一个概念 un
  • smart bi 学习

    Smartbi 安装 部署 测试 官方文档 数据连接 关系数据库 选择数据连接选关系数据库 配置 连电脑本地的数据库 用户名 密码 root root 端口 3306 ip localhost mysql 数据库选的lyj 1 数据库管理
  • 第二篇:数据仓库与数据集市建模

    阅读目录 前言 维度建模的基本概念 维度建模的三种模式 实例 零售公司销售主题的维度建模 更多可能的事实属性 经典星座模型 缓慢变化维度问题 数据仓库建模体系之规范化数据仓库 数据仓库建模体系之维度建模数据仓库 数据仓库建模体系之独立数据集
  • 【Hadoop技术篇】hadoop的使用

    博主介绍 博主介绍 大家好 我是淼淼 喵 很高兴认识大家 主攻领域 大数据开发 数据仓库 ETL 数据分析 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 欢迎评论 作者水平有限 欢迎各位大佬指点 相
  • 数据分析报告概述

    一 结构规范及写作 报告常用结构 1 架构清晰 主次分明 数据分析报告要有一个清晰的架构 层次分明能降低阅读成本 有助于信息的传达 虽然不同类型的分析报告有其适用的呈现方式 但总的来说作为议论文的一种 大部分的分析报告还是适用总 分 总 的
  • 数据仓库-日期维度表的设计与实现

    时间维度表的制作 1 需求背景 在大数据分析模块中 我们需要从不同的维度分析主题表 包括常用的公用维度 时间维 地区维度 教育信息维 以及各种各样的业务维度 员工维度 部门维度 业务维度就是我们从哪些角度去分析业务过程 本文就是做一张常用时
  • 数仓知识07:数据增量更新的几种方式

    1 增量更新的几种方式 增量更新的本质 其实是获取源表中数据变化的情况 增 删 改 然后将源表中发生的变化同步至目标表中 不同的方式 获取源表中数据变化的情况不一样 受技术的限制 表结构的限制 某些方式可能无法获取到完整的数据变化情况 因此
  • ETL为什么经常变成ELT甚至LET?

    ETL是将数据从来源端经过清洗 extract 转换 transform 加载 load 至目的端的过程 正常的 ETL 过程应当是 E T L 这三个步骤逐步进行 也就是先清洗转换之后再加载进目标端 通常是数据库 最后在数据库中的只是合理
  • neo4j start error:系统找不到指定的路径。 Unable to create logger at ‘‘

    项目场景 Neo4j 4 3 3 community windows 这是代码文件 启动时需要进入文件夹下的bin目录 输入neo4j start 然后转入http localhost 7474 出现可供使用的图形界面 此时如果在当前目录下
  • DTCC 2023丨云原生环境下,需要什么样的 ETL 方案?

    2023年8月16日 18日 第14届中国数据库技术大会 DTCC 2023 于北京隆重召开 拓数派受邀参与本次大会 PieCloudDB 技术专家邱培峰在大会做了 云原生虚拟数仓 PieCloudDB ETL 方案设计与实现 的主题演讲
  • Databend 存储架构总览

    目的 通过本篇文章带大家理解一下 Databend 的存储结构 Databend 内置的 Table 引擎为 Fuse table engine 也是接下来要花重点篇幅要讲的 另外 Databend 还支持外置的 Hive table 及
  • ClickHouse进阶(十六):clickhouse优化-表优化

    进入正文前 感谢宝子们订阅专题 点赞 评论 收藏 关注IT贫道 获取高质量博客内容 个人主页 含各种IT体系技术 IT贫道 大数据OLAP体系技术栈 Apache Doris Kerberos安全认证 CSDN博客 订阅 拥抱独家专题 你的
  • 数据ETL面临的问题----数据缺失

    数据缺失的类型有 完全随机缺失 Missing Completely at Random MCAR 数据的缺失与不完全变量以及完全变量都是无关的 随机缺失 Missing at Random MAR 数据的缺失不是完全随机的 数据的缺失只依
  • 大数据开发:Hive DDL操作入门

    Hive针对于数据管理操作 提供了类SQL语言HQL 在Hadoop生态当中 Hive定位为数据仓库工具 对于数据的各种操作 也就是使用HQL来完成 而HQL查询 可以分为DDL和DML两个部分来掌握 今天的大数据开发学习分享 我们就先来讲
  • HiveSQL原理和优化详解

    Hive SQL 编译成MapReduce过程 编译 SQL 的任务是在上节中介绍的 COMPILER 编译器组件 中完成的 Hive将SQL转化为MapReduce任务 整个编译过程分为六个阶段 词法 语法解析 Antlr 定义 SQL
  • 数据挖掘知识浅析

    一 什么是数据挖掘 数据挖掘是指从大量数据中提取或 挖掘 知识 数据挖掘是一种 黄金挖掘 从沙子堆中挖掘出黄金 找出最有价值的黄金 这种有机的价值物提取的过程称为 黄金挖掘 通过某种手段或者经验丰富人士 从海量的数据中找出有用的 数据 掌握
  • Spark SQL 项目:实现各区域热门商品前N统计

    一 需求1 1 需求简介这里的热门商品是从点击量的维度来看的 计算各个区域前三大热门商品 并备注上每个商品在主要城市中的分布比例 超过两个城市用其他显示 1 2 思路分析使用 sql 来完成 碰到复杂的需求 可以使用 udf 或 udaf查

随机推荐

  • 在图像间进行特征匹配

    特征匹配 目标 我们将要学习在图像间进行特征匹配 使用 OpenCV 中的蛮力 Brute Force 匹配和 FLANN 匹配 Brute Force 匹配的基础 蛮力匹配器是很简单的 首先在第一幅图像中选取一个关键点然后依次与第二幅图像
  • python自(2)切片 字典 遍历删除添加修改查询定义函数函数返回值作用域序列化异常报错urllib使用一个类型六个方法下载 视频音频图片

    切片 切片 s hello word 下标索引为0的 print s 0 h 左闭右开 左是下标开始的 右是几个索引值 例如从0开始算 4个索引值 print s 0 4 hell 更改起始值的开始位置 print s 1 ello wor
  • 产品经理的思考-概括

    思考 断断续续从技术转产品已经两年时间 从2021年的按部就班 到2022年的兵荒马乱 从技术到产品会有优势 但也有自身的枷锁 如何发挥优势 跳出枷锁 是一个不断思考和突破的过程 比较转岗会有蜜月期 但是漫长的痛苦才是现实 从技术到产品是需
  • 再谈Qt实现Rasdial拨号问题(说说项目中遇到的问题和解决方案)

    上一篇 Qt实现Rasdial宽带拨号 讲解了下最简单的宽带拨号方式 但是在实际项目开发中 发现 这种做法是不好的 效率低 有时拨号失败 而且上一回 我们是采用异步拨号来实现 这个做法是不行的 我们需要实现同步拨号 那么我们应该借助api函
  • unity3d读取Excel小白教程

    1 课前准备准备三个文件 Excel dll ICSharpCode SharpZipLib dll System Data dll 如图 下载地址 链接 https pan baidu com s 1B2Sue9iw4qWzwjb1uJ6
  • vue3中使用vueQuill富文本编辑器详细教程,图片上传-图片压缩

    vueQuill是支持vue3的富文本编辑器组件 使用简单方便 官方网址 https vueup github io vue quill 效果图 1 安装 在官网有详细的安装教程 npm或者yran下载 npm install vueup
  • OSPF学习总结

    对于OSPF的学习重点总结 一个DR 三个表 五种包 七种状态 路径寻优 实时更新 OSPF介绍 一种链路状态和内部网关协议 所谓链路状态就是指 链路上的路由器与哪些路由器相邻以及它们之间的距离 度量值 是多少 来确定一条最短路径 内部网关
  • 汇编语言+IDA安装问题解决汇总

    利用汇编语言计算机和人类链接更为便捷如下图所示 寄存器 简单讲就是CPU可以存储数据的器件 一个CPU可以有多个寄存器 AX BX是两个不同的寄存器 16位处理器有14个寄存器 AX BX CX DX SI DI SP BP IP CS S
  • linux 文件十六进制阅读_Linux引导101

    对于Ubuntu 18 04 gt Photo by Adi Goldstein on Unsplash 让我们从Wikipedia如何描述引导程序开始 通常 自举通常是指自启动过程 应该在没有外部输入的情况下进行 在计算机技术中 该术语
  • jquery中ajax处理跨域的三大方式

    由于JS同源策略的影响 因此js只能访问同域名下的文档 因此要实现跨域 一般有以下几个方法 一 处理跨域的方式 1 代理 2 XHR2 HTML5中提供的XMLHTTPREQUEST Level2 及XHR2 已经实现了跨域访问 但ie10
  • Oracle 11g数据库安装之后没有OracleOraDb11g_home1TNSListener服务

    1 在安装目录下F Oracle Server product 11 2 0 dbhome 1 BIN netca deinst bat 以管理员身份运行 会出现命令窗口 执行完会自己退出 2 再以管理员身份启动netca bat 重新配置
  • 快速乘和改造快速幂

    快速乘和改造快速幂 文章目录 快速乘和改造快速幂 快速乘 快速幂改造 典型例题 参考材料 快速乘 因为我们知道乘法有时候会溢出 即使是long也可能因为结果过大而溢出 当模数也是long类型时 所以我们需要寻找一种能高效完成乘法操作并且不会
  • AntDB数据库参加ACDU中国行杭州站,分享数据库运维实践与经验

    关于ACDU 和中国行 ACDU是由墨天轮社区举办的中国数据库联盟的品牌活动之一 在线下汇集数据库领域的行业知名人士 共同探讨数据库前沿技术及其应用 促进行业发展和创新的平台 也为开发者们提供友好交流的机会 AntDB作为具有技术前瞻性的国
  • 转:SpringMVC 返回 json 字符串中文乱码

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net wenteryan article details 79803691 原因 最近在写一
  • terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr

    运行时报错 terminate called after throwing an instance of std out of range what basic string substr pos Aborted core dumped 内
  • 地址 脱敏规则_Java对姓名, 手机号, 身份证号, 地址进行脱敏

    替换几位就用几个 号 一 姓名 1 脱敏规则 只显示第一个汉字 比如李某某置换为李 李某置换为李 private staticString desensitizedName String fullName if Strings isNull
  • android 监听 webkit,androidx.webkit

    androidx webkit Requirements The minimum sdk version to use this library is 14 How to declare the dependencies to use th
  • 如何将Web应用打包成.war文件?

    将Web应用打包成WAR文件的方法 1 在命令行中运用Jar命令 假定有一个Web应用 C myHome myHome WEB INF myHome files myHome image myHome src myHome index js
  • JVM 类加载机制全面解析,一篇完整彻底搞懂

    我是目录 1 概述 2 类的生命周期 3 类加载器 4 类加载机制 双亲委派机制 1 概述 2 类的生命周期 包括7个阶段 加载 验证 准备 解析 初始化 使用 和 卸载 其中验证 准备 解析3个部分统称为连接 Linking 解析阶段 在
  • 第二篇:数据仓库与数据集市建模

    阅读目录 前言 维度建模的基本概念 维度建模的三种模式 实例 零售公司销售主题的维度建模 更多可能的事实属性 经典星座模型 缓慢变化维度问题 数据仓库建模体系之规范化数据仓库 数据仓库建模体系之维度建模数据仓库 数据仓库建模体系之独立数据集