数据库分层,为什么要给数据库分层
大家好,今天来为大家分享数据库分层的一些知识点,和为什么要给数据库分层的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
数据库系统分层结构的含义是什么
数据库系统的体系结构是指数据库系统的整个体系的结构。数据库系统的体系结构从不同的角度可有不同的划分方式。从数据库管理系统的角度可分为三层,从外到内依次为外模式、模式和内模式。
模式是所有数据库用户的公共数据视图,是数据库中全部数据的逻辑结构和特征的描述。模式(schema)又可细分为概念模式(conceptual
schema)和逻辑模式(109ical
schema)。
希望对你有帮助。
为什么要给数据库分层
(1)为什么要分层
作为一名数据的规划者,我们肯定希望自己的数据能够有秩序地流转,数据的整个生命周期能够清晰明确被设计者和使用者感知到。直观来讲就是如图这般层次清晰、依赖关系直观。
但是,大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。如下图,在不知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系。
因此,我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈到的数据分层。数据分层并不能解决所有的数据问题,但是,数据分层却可以给我们带来如下的好处:
1)清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解;
2)减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;
3)统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径;
4)复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。
为了满足前面提到好处,通常将数据模型分为三层:数据运营层( ODS)、数据仓库层(DW)和数据应用层(APP)。简单来讲,我们可以理解为:ODS层存放的是接入的原始数据,DW层是存放我们要重点设计的数据仓库中间层数据,APP是面向业务定制的应用数据。下面详细介绍这三层的设计。
(2)数据模型的分层
1)源数据层(ODS)
此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。
2)数据仓库层(DW)
也称为细节层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。
此层可以细分为三层:
明细层DWD(Data Warehouse Detail):存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。
中间层DWM(Data WareHouse Middle):存储中间数据,为数据统计需要创建的中间表数据,此数据一般是对多个维度的聚合数据,此层数据通常来源于DWD层的数据。
业务层DWS(Data WareHouse Service):存储宽表数据,此层数据是针对某个业务领域的聚合数据,业务层的数据通常来源与此层,为什么叫宽表,主要是为了业务层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。
在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。
3)数据应用层(DA或 APP)
前端应用直接读取的数据源;根据报表、专题分析的需求而计算生成的数据。
4)维表层(Dimension)
最后补充一个维表层,维表层主要包含两部分数据:
A)高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。
B)低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。
(3)问题扩展
数据仓库系统架构
上图系统各部分的执行流程是:
1)确定分析所依赖的源数据。
2)通过ETL将源数据采集到数据仓库。
3)数据按照数据仓库提供的主题结构进行存储。
4)根据各部门的业务分析要求创建数据集市(数据仓库的子集)。
5)决策分析、报表等应用系统从数据仓库查询数据、分析数据。
6)用户通过应用系统查询分析结果、报表。
(4)结合项目中使用
电商网站的数据体系设计,这里针对用户访问日志这一部分数据进行举例说明:
在ODS层中,由于各端的开发团队不同或者各种其它问题,用户的访问日志被分成了好几张表上报到了我们的ODS层。
为了方便大家的使用,我们在DWD层做了一张用户访问行为天表,在这里,我们将PC网页、H5、小程序和原生APP访问日志汇聚到一张表里面,统一字段名,提升数据质量,这样就有了一张可供大家方便使用的明细表了。
在DWM层,我们会从DWD层中选取业务关注的核心维度来做聚合操作,比如只保留人、商品、设备和页面区域维度。类似的,我们这样做很多个DWM的中间表。
然后在DWS层,我们将一个人在整个网站中的行为数据放到一张表中,这就是我们的宽表了,有了这张表,就可以快速满足大部分的通用型业务需求了。
最后,在APP应用层,根据需求从DWS层的一张或者多张表取出数据拼接成一张应用表即可。
数据库中空间数据是如何进行分幅分层的
在空间数据库的逻辑设计中,往往将不同类,不同级的地理要素进行分层存放,每一层存放一种专题或一类信息。按照用户一定的需求或标准把某些地理要素组合在一起成为图层,它表示地理特征以及描述这些特征的属性的逻辑意义上的集合。在同一层信息中,数据一般具有相同的几何特征和相同的属性特征。
对空间数据进行分层管理,能提高数据的管理效率,便于数据的二次开发与综合利用,实现资源共享。同时,它也是满足多用户不同需要的有效手段,各用户可以根据自己的需要,将不同内容的图层进行分离、组合和叠加,形成自己需要的专题图。
空间数据分层可以按专题、时间、垂直高度等方式来划分。按专题分层就是每层对应一个专题,包含一种或几种不同的信息。专题分层就是根据一定的目的和分类指标对地理要素进行分类,按类设层,每类作为一个图层,对每一个图层赋予一个图层名。分类可以从性质、用途、形状、尺度、色彩等5个方面的因素考虑。按时间序列分层则可以从不同时间或时期进行划分,时间分层便于对数据的动态管理,特别是对历史数据的管理。按垂直高度划分是以地面不同高层来分层,这种分层从二维转化为三维,便于分析空间数据的垂向变化,从立体角度去认识事物的构成。
空间数据分层要考虑如下一些问题:
(1)数据具有同样的特性,也可以说是具有相同的属性信息。
(2)按要素类型分层,性质相同或相近的要素应放在同一层。
(3)即使是同一类型的数据,有时其属性特征也不相同,所以应该分层存储《
(4)分层时要考虑数据与数据之间的关系,如哪些数据有公共边,哪些数据之间有隶属关系等。很多数据之间都具有共同或重叠的部分,即多重属性的问题,这些因素都将影响层的设置。
(5)分层时要考虑数据与功能的关系,如哪些数据经常在一起使用,哪些功能是起主导作用的功能。考虑功能之间的关系,不同类型的数据由于其应用功能相同,在分析和应用时往往会同时用到,因此在设计时应反映这样的需求,可以将此类数据设计为同一专题层。例如,水系包括多边形水体(湖泊、水库等)、线状水体(河流、小溪等)和点状水体(井、泉等)。由于多边形的湖泊、水库,线状的河流、小溪和点状的井、泉等在功能上有着不可分割、相互依赖的关系,在设计上可将这3种类型的数据组成同一个专题数据层.
(6)分层时应考虑更新的问题。数据库中各类数据的更新可能使用各种不同的数据源,更新一般以层为单位进行处理,在分层中应考虑将变更频繁的数据分离出来,使用不同数据源更新的数据也应分层进行存储,以便更新。
(7)比例尺的一致性。
(8)同一层数据会有同样的使用目的和方式。
(9)不同部门的数据通常应该放人不同的层,这样便于维护。
(10)数据库中需要不同级别安全处理的数据也应该单独存储。
(11)分层印应顾及数据量的大小,各层数据的数据量最好比较均衡。
(12)尽量减少冗余数据。
关于本次数据库分层和为什么要给数据库分层的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。