iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
自我挑戰組

一路side project - 學習筆記系列 第 15

[Day 15] 關聯式資料庫 vs. 非關聯式資料庫

  • 分享至 

  • xImage
  •  

主要類別與特性

1) 關聯式資料庫(Relational / SQL)

資料模型:嚴謹結構化表格 + 主外鍵關聯

交易:強調 ACID(原子性、一致性、隔離性、持久性)

查詢:SQL、JOIN 強大、複雜查詢與報表佳

擴展:傳統偏垂直擴充;近年也有分片/叢集解法

代表:PostgreSQL, MySQL, SQL Server, Oracle

適合:金融/訂單/庫存等一致性要求高的 OLTP;也能配合資料倉儲做 OLAP

延伸:NewSQL / HTAP(同時顧交易與分析、或原生分散式 SQL)

代表:CockroachDB, TiDB, YugabyteDB, SingleStore 等

2) 非關聯式(NoSQL)

「不以關聯模型為中心」的概念。
多以水平擴展、彈性結構、最終一致為賣點,依需求分成幾小類:

a) 鍵值(Key–Value)

模型:Key → Value(黑盒),極致簡單

特性:超低延遲、超高吞吐、擴展容易

代表:Redis, Amazon DynamoDB, Aerospike

適合:快取、Session、計數器、排行榜

b) 文件型(Document)

模型:JSON/JSONB 文件,結構彈性

特性:Schema 柔性、嵌套結構友好、二級索引、聚合管線

代表:MongoDB, Couchbase, (PostgreSQL 的 JSONB 也很強)

適合:內容管理、使用者設定、事件資料

c) 寬欄(Wide-Column / Column Family)

模型:RowKey + 可變欄族;為分散式與寫入吞吐而生

特性:高寫入量、可橫向擴展、最終一致

代表:Apache Cassandra, HBase, ScyllaDB

適合:大量時間序列/事件流、IoT、行動 App 記錄

d) 圖形(Graph)

模型:節點 + 邊(關係)

特性:圖遍歷、關係最短路徑、社群偵測

代表:Neo4j, JanusGraph, TigerGraph

適合:社交關係、詐欺偵測、推薦路徑

3) 針對場景的專用型

a) 時序資料庫(Time-Series DB)

特性:時間索引優化、壓縮、downsampling、連續聚合

代表:InfluxDB, TimescaleDB(PostgreSQL 延伸), VictoriaMetrics

適合:監控/度量(metrics)、IoT、價格/K 線

b) 搜尋引擎 / 向量搜尋

特性:全文倒排索引、打分排序;或向量相似度檢索

代表:Elasticsearch / OpenSearch, Solr;向量:FAISS, Milvus, Qdrant

適合:站內搜尋、日誌檢索、商品搜尋、相似推薦

c) 欄式分析資料庫(OLAP / Columnar)

特性:欄式存儲、壓縮、超快聚合、MPP 分散式

代表:ClickHouse, Apache Druid, Apache Pinot;雲端倉儲:BigQuery, Snowflake, Redshift

適合:即席分析、儀表板、即時報表、事件明細分析


什麼時候該混搭(Polyglot Persistence)?

  • 同時需要:強一致交易(下單/庫存)+ 高吞吐寫入(時序/事件)+ 全文搜尋

  • 做法:

    1. Postgres 做主系統(單一真實來源),
    2. 透過 CDC/事件匯流排(Debezium/Kafka)異步同步到 Elasticsearch(搜尋)與 ClickHouse 或 Timescale(分析/時序)。
    3. Redis 做快取與排程鎖。

現在規劃會 以 Postgres 為主要設計


上一篇
[Day 14] GU價格提醒系統 (8) - [學習筆記] n8n : 每筆間隔 5 秒去撈資料_ Loop的使用
下一篇
[Day 16] [學習筆記] - Postgres資料庫架設、使用 (失敗_今日進度0 )
系列文
一路side project - 學習筆記17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言