Uber 原架構使用 Monolith,以單台 PostgreSQL 處理所有資料。

但 Trip 資料量成長太快,單機儲存空間不敷使用,再加上它幾乎耗盡所有 IOPS 資源,促使 Uber 考慮轉用其它架構。

新架構需求如下:

  1. Operationally robust
  2. Horizontally scalable both in storage capacity and IOPS
  3. High write-availability
  4. Secondary index support
  5. No downtime for any operation

Uber 特別指出,上述的第五點是現行立即的痛點,因為一旦 PostgreSQL 資料大到某個程度時,任何新增 column 或 index 操作都會造成停機。

他們也研究過 NoSQL 解決方案,但基於過去 NoSQL 的操作經驗以及軟體成熟度,Uber 工程師們對於 NoSQL 是否能夠有效處理 Trip 處理沒有信心。

最後,他們選用了 MySQL / Sharding / Schemaless 成為新 Trip 數據的架構。

參考來源

Project Mezzanine: The Great Migration