Mysql

MongoDB作為數據倉庫?

  • November 25, 2018

考慮到以下情況,mongodb 作為數據倉庫會是一個不錯的選擇嗎?

  1. 我們正在為我們的客戶建構分析、報告生成平台,就行而言,典型的表增長將是每年 200 萬行(我們最多需要 5 年的歷史記錄,總表約 50 個)
  2. 我們已經準備好使用 mysql 進行概念驗證並且它可以工作,但我擔心的是,當我們投入生產時,數據的增長可能會給 mysql 帶來問題。mysql 不支持水平擴展,而 mongodb 中的分片使其可以很好地擴展
  3. 平均每年一次或兩次表的架構更改,其中要麼添加新列,要麼刪除現有列(刪除不是問題,因為我們總是可以保留列,但是在 mysql 表中添加新列會有多困難包含幾百萬條記錄?)。這是我們考慮 mongodb 的另一個原因,因為它在模式更改方面很靈活
  4. 寫入:每個表每天平均 5000 條記錄。讀取將少於此,它將被執行以生成分析。

我沒有太多使用 mysql 和 mongodb 處理這種數據量的經驗,因此如果上面提到的一些事情是幼稚的,請原諒我的無知。

(從 MySQL 的角度講……)

10M 行並沒有那麼大——也許只有 1GB?除非系統活動非常高,否則它幾乎不適合分片。

2M 行/年 = 25/秒。100/秒是我挑眉並建議仔細觀察的地方。1K/sec 可能需要一些特殊處理。

ALTER TABLE .. ADD COLUMN ..- 有一些技術可以讓這還不算太糟糕。而使用 MySQL 8.0,有一個真正無痛的ADD COLUMN.

考慮為稍後添加的“雜項”添加 JSON 列;不要添加更多列,除非您需要數據庫引擎對其進行過濾或排序。

對於分析,建構和維護匯總表。這些使“報告寫入”比掃描 10M 行快 10 倍。

CTE 和 Windowing 函式存在於 MySQL 8.0 和 MariaDB 10.2 中。但你可能不需要這樣。

5K 寫入/天——除了 2M 插入/年?沒有大礙。

引用自:https://dba.stackexchange.com/questions/223389