Architecture Decision Record

Active theme: Light

← 決策記錄範例

架構決策記錄:選擇資料庫技術

狀態

已接受

背景

我們正在設計一個新的應用,它需要以可擴充套件且高效能的方式儲存和檢索資料。我們確定了三類常用的資料庫技術:關係型資料庫、文件型資料庫和事件資料庫。

關係型資料庫將資料儲存在具有固定模式的表中,並強制執行嚴格的資料完整性約束。它們適用於需要複雜資料關係和事務的應用。範例包括 MySQL、PostgreSQL 和 Oracle。

文件型資料庫將資料儲存在類似 JSON 的文件中,並且無模式。它們非常適合需要靈活資料模型和水平擴充套件的應用。範例包括 MongoDB、Couchbase 和 Amazon DynamoDB。

事件資料庫將資料儲存為一系列事件,記錄對資料的每一次更改。它們適用於需要審計、事件溯源和複雜資料處理的應用。範例包括 Apache Kafka、Apache Pulsar 和 AWS Kinesis。

決策

在仔細評估了我們應用的需求和約束之後,我們決定使用文件型資料庫。

理由

我們選擇文件型資料庫,是因為:

  1. 我們的應用需要一個能夠隨時間演進的靈活資料模型。文件型資料庫允許我們以無模式的格式儲存資料,這意味著我們可以新增新欄位或更改現有文件的結構,而無需修改資料庫模式。

  2. 我們的應用需要水平擴充套件,以處理海量資料和流量。文件型資料庫內建了對分片和複製的支援,這使我們能夠將資料分佈到多臺伺服器上,並處理高讀寫吞吐量。

  3. 我們的應用需要快速高效地檢索資料。文件型資料庫提供強大的索引和查詢能力,使我們能夠快速高效地檢索資料。

  4. 我們的應用不需要複雜的事務或資料關係。雖然關係型資料庫在強制執行資料完整性約束和處理複雜事務方面表現出色,但我們的應用並沒有這樣的需求。文件型資料庫可以為我們的使用場景提供足夠的一致性和永續性保證。

後果

選擇文件型資料庫後,我們需要投入精力學習和了解所選用的具體技術。此外,我們需要確保應用的資料模型與文件型資料庫的資料模型相契合,以最大限度地提高效能和可擴充套件性。

不過,我們相信使用文件型資料庫的好處超過其代價,並且它最適合我們應用的需求和約束。