新事物的产生根植于旧矛盾的解决与新矛盾的诞生,其本质是矛盾运动的阶段性结果;
矛盾是事物内在的普遍属性,而发展是通过矛盾的不断“产生-解决-再生产”实现的动态过程。
大数据技术的产生本质上是存储与计算的矛盾,而发展则是“数据规模的爆炸式增长与计算效率、实时性需求之间的持续博弈”,这一矛盾推动技术不断革新。
大数据技术的演进本质是**“不断打破旧平衡,建立新平衡”**的过程:
每一次矛盾的激化都催生了新技术的诞生,而未来趋势(如边缘计算、AI原生数据平台)仍将围绕这一核心矛盾展开。
在大数据架构中,数据分层(Data Layering)是一种将数据按处理阶段、用途和访问需求划分为不同层次的设计方法,旨在提高数据管理效率、降低冗余、优化性能,并支持多样化的分析场景。
数据运营层:Operation Data Store 数据准备区,也称为贴源层。
输入表:无(直接对接数据源)
输出表:原始数据表(Raw Data Tables)
示例:
{
"timestamp": "2023-10-01T14:22:35+08:00",
"user_id": "u_12345",
"event": "click_product_detail",
"device": "Android 12|Xiaomi 13 Pro",
"ip": "192.168.1.100",
"extra": "{'product_id':'p_678', 'page_num':3}"
}
order_id | user_id | amount | currency | create_time | status |
---|---|---|---|---|---|
1001 | u_123 | 299.00 | CNY | 2023-10-01 14:25:00 | pending |
1002 | u_456 | 150.50 | USD | 2023-10-01 14:30:00 | completed |
特点:保留原始数据的所有字段,包含冗余、未清洗的信息。
输入表:ods_user_click_log
, ods_order_mysql
输出表:清洗后的结构化表
示例:
log_id | event_time | user_id | event_type | device_os | device_model | ip_hash | product_id | page_num |
---|---|---|---|---|---|---|---|---|
1 | 2023-10-01 14:22:35 | 12345 | product_detail | Android | Xiaomi 13 Pro | a1b2c3d4 | p_678 | 3 |
处理逻辑:
extra
字段中的JSON,提取product_id
和page_num
。user_id
统一为纯数字(去除前缀u_
)。ip
字段进行哈希脱敏。device
字段为操作系统和设备型号。order_id | user_id | amount_cny | create_time | status_code |
---|---|---|---|---|
1001 | 123 | 299.00 | 2023-10-01 14:25:00 | 1 |
1002 | 456 | 1053.50 | 2023-10-01 14:30:00 | 2 |
处理逻辑:
数据细节层:data warehouse details,DWD/Dimensional Model
该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度;主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。
数据中间层:Data Warehouse Middle,DWM;
该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。
输入表:cleaned_user_click
, cleaned_order
输出表:维度表 + 事实表
示例:
user_id | name | gender | age | reg_date | vip_level |
---|---|---|---|---|---|
123 | 张三 | M | 28 | 2022-01-01 | 2 |
456 | 李四 | F | 35 | 2021-05-15 | 3 |
order_id | user_id | product_id | amount | order_time | payment_time |
---|---|---|---|---|---|
1001 | 123 | p_678 | 299.00 | 2023-10-01 14:25:00 | 2023-10-01 14:26:05 |
1002 | 456 | p_901 | 1053.50 | 2023-10-01 14:30:00 | 2023-10-01 14:31:20 |
建模逻辑:
user_id
关联事实表与维度表,支持“订单金额按性别分析”等场景。数据服务层:Data Warehouse Service,DWS/Data Mart;
该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。
输入表:fact_order
, dim_user
输出表:预聚合宽表
示例:
date | user_id | gender | total_amount | order_count | avg_amount |
---|---|---|---|---|---|
2023-10-01 | 123 | M | 299.00 | 1 | 299.00 |
2023-10-01 | 456 | F | 1053.50 | 1 | 1053.50 |
计算逻辑:
数据应用层:Application Data Service,ADS;
该层主要是提供给数据产品和数据分析使用的数据,一般会存放在ES、Redis、PostgreSql等系统中供线上系统使用;也可能存放在hive或者Druid中,供数据分析和数据挖掘使用,比如常用的数据报表就是存在这里的。
输入表:dws_user_daily_spend
输出表:业务接口或报表
示例:
日期 | 性别 | 总消费金额 | 订单数 |
---|---|---|---|
2023-10-01 | 男 | 299.00 | 1 |
2023-10-01 | 女 | 1053.50 | 1 |
{
"user_id": 123,
"last_purchase_date": "2023-10-01",
"total_spend_7d": 299.00,
"favorite_category": "电子产品"
}
特点:数据高度聚合,字段命名符合业务术语,可直接用于展示或决策。
ETL 是数据从源系统到目标存储的标准化流程,包含三个阶段:
阶段 | 典型工具 |
---|---|
Extract | Sqoop、Flume、Kafka、Debezium(CDC)、AWS Glue |
Transform | Spark、Flink、dbt、Python Pandas、SQL |
Load | Hive、HBase、ClickHouse、Snowflake、Redis、Elasticsearch |