共计 2347 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | 数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。互联网时代, 由于上网用户剧增,特别是移动互联网时代, 海量的网络设备,导致了海量的数据产生,企业需要也希望从这些海量数据中挖掘有效信息,如行为日志数据,业务数据, 爬虫数据等等中提炼出有价值信息。现代大数据技术应运而生。而数仓就是做这些海量数据存储的地方。 |
数据仓库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。
互联网时代, 由于上网用户剧增,特别是移动互联网时代, 海量的网络设备,导致了海量的数据产生,企业需要也希望从这些海量数据中挖掘有效信息,如行为日志数据,业务数据, 爬虫数据等等中提炼出有价值信息。但传统的关系型数据库由于本身技术限制,无法很好承担这么大数据量存储和分析的任务,现代大数据技术应运而生。而数仓就是做这些海量数据存储的地方。
数仓数据分层,就跟代码分层一样。如果所有数据都放在一层,就跟代码都放在一个文件,肯定是可以运行的,但带来的问题就是阅读性差,复用性和维护性降低。
数仓的分层的每一层都有自己的职责,同时都是基于下一层或者下面多层做数据处理之后的结果。
使用数据分层机制,相当于提炼黄金的流程, 逐步逐步将有价值信息进行汇总聚合。这样就跟分步操作一样,最终提炼出想要的结果. 同时就算原始数据丢失了,只要中间结果还在,依然可以保证最上层数据的稳定性,类似加了一层缓冲一样。
数据仓库分层——DWD DWS ADS 傻傻分不清楚 - 鸿蒙 HarmonyOS 技术社区
这一层又叫做贴源层,就是接近数据源的一层,需要存储的数据量是最大的,存储的数据也是最原始,最真实未经过太多处理的数据。
ODS 层数据还起到一个数据备份作用,如果是比较特殊行业,在 ODS 层的数据会保留一年甚至多年具体还看数据量和存储压力以及存储预算决定。
一个很经典的模型,就是外部往 Kafka 推送数据,然后使用 Flume 把数据落盘到 HDFS 上。
一般 ODS 都是原始数据,而原始数据因为种种原因会有很多问题,比如:
这些问题可以在 ODS 落盘时进行处理,也可以放到下一层,也就是 DWD 层进行处理,这个可以根据具体业务进行判断。
ODS 层建立表时, 如果使用 hive 进行处理, 一般建立外部表,外部表的特点除了文件地址可以指定外,删表时数据不会被删除。
create external table xxx()
数据量很大时,就需要考虑区分存储,比如 HIVE 表的按天分区等。
ODS 是可能是整个数据仓库中最占用空间的层级,因此对该层的数据优化需要持续关注
数据仓库分层——DWD DWS ADS 傻傻分不清楚 - 鸿蒙 HarmonyOS 技术社区
DWD 又叫做数据明细表,会有 ETL,也就是 extract transform load 提取转换加载处理,逻辑会比较复杂,这时候如果使用 hive,一般无法满足要求,这些逻辑一般都是编写代码实现,然后使用脚本进行周期性如每天调用。
这也是离线批处理的第一步,大量的原始数据逐条筛选处理,需要处理的内容包括但不限于如下:
DWD 层的数据单纯从条数上看可能和 ODS 差不多,但是经过清洗过后,占用的存储空间会小很多。
数据仓库分层——DWD DWS ADS 傻傻分不清楚 - 鸿蒙 HarmonyOS 技术社区
DWS 俗称的数据服务层,一般使用主题建模或维度建模等方式
-
主题建模
-
维度建模
DWS 层一般都是存储与一定业务相关的数据,可以说是一种结果数据,建模数据,所以与 DWD 相比数据占用空间会更小。
数据仓库分层——DWD DWS ADS 傻傻分不清楚 - 鸿蒙 HarmonyOS 技术社区
DM 层即数据集市层,是以某个业务应用为出发点而建设的局部 DW,通常是星形或雪花结构的数据。DM 只关心自己需要的数据,它需要结构清晰、针对性强。
DM 层已经很接近最终用户使用的数据了,所以对于该层的数据最好覆盖面越广越好,而很多时候为了减少 DM 层的工作量,会去返推 DWS 层的业务逻辑,使 DM 更多只聚焦与业务而不是逻辑或运算。
数据仓库分层——DWD DWS ADS 傻傻分不清楚 - 鸿蒙 HarmonyOS 技术社区
ADS 层叫应用服务层,一般就直接对接 OLAP 分析,或者业务层数据调用接口了。
这是最顶层,一般都是结果类型数据,可以直接拿去使用或者展示的数据了,也是对数据抽离分析程度最高的一层数据。
这一层是需求最明确的一层,根据业务需求来决定数据维度和结果分析。
该层首要考虑的,一般是查询效率问题,所以针对不同的业务系统,需要考虑使用不同的数据库进行存储。