Mastodon
跳过正文
  1. Posts/

DDIA Chapter1. Trade-offs in Data Systems Architecture

·848 字·2 分钟·
DDIA - 这篇文章属于一个选集。
§ : 本文
learning.oreilly.com
原文链接
designing-data-intensive-applications
数据密集型应用的一些常见需求

Such applications are typically built from standard building blocks that provide commonly needed functionality. For example, many applications need to:

  • Store data so that they, or another application, can find it again later (databases)
  • Remember the result of an expensive operation, to speed up reads (caches)
  • Allow users to search data by keyword or filter it in various ways (search indexes)
  • Handle events and data changes as soon as they occur (stream processing)
  • Periodically crunch a large amount of accumulated data (batch processing)

Operational Versus Analytical Systems 运营系统与分析系统
#

OLTP vs OLAP:数据处理的分流
#

OLTP也即运营系统,OLAP也即分析系统。这两种类型决定了数据库选型和架构设计。

特性OLTP (联机事务处理)OLAP (联机分析处理)
主要目标支撑业务运行(如下单、支付、评论)商业决策与洞察(如报表、趋势预测、ML)
用户终端用户、后端服务(Java应用)业务分析师 (BI)、数据科学家
读写模式点查询 (Point Query),按Key读写,低延迟全表扫描,聚合计算 (Sum, Count),高吞吐
数据状态当前最新状态 (Current State)历史事件流 (History of events)
数据量级GB ~ TBTB ~ PB
典型代表MySQL, PostgreSQL, OracleRedshift, Snowflake, ClickHouse

数据基础设施的演进
#

为了解决OLTP和OLAP的冲突,架构发生了演变:

  1. Data Warehouse(数据仓库)
    • 目的:将数据从各业务库提取出来,清洗并转换(extract-transform-load, ETL)后存入一个专门的分析数据库。
    • 特点:Schema-on-write(写时模式),通常是关系型的,适合SQL和BI报表。
      ETL
  2. Data Lake(数据湖)
    • 背景:数据科学家需要非结构化数据(文本、图像)或原始数据进行机器学习,SQL不够用了。
    • 特点:Schema-on-read(读时模式),存原始文件(如Parquet, Avro),符合"Sushi Principle"(raw data is better)。

数据流向:记录系统 vs 派生数据
#

  • System of Record (记录系统/真理源):数据的权威版本。如果数据不一致,以此处为准。通常是你的 Java 应用连接的 OLTP 数据库。
  • Derived Data Systems (派生数据系统):通过某种方式从记录系统转换而来的数据。
    • 例子:搜索索引(Elasticsearch)、缓存(Redis)、数据仓库、机器学习模型。
    • 本质:它们是冗余的,如果丢失,可以从源头重建。它们的存在是为了读取性能或特定查询场景(如全文检索、分析)。
OLTPAP
tinuvile
作者
tinuvile
一个笨小孩
DDIA - 这篇文章属于一个选集。
§ : 本文