Mysql
MongoDB作為數據倉庫?
考慮到以下情況,mongodb 作為數據倉庫會是一個不錯的選擇嗎?
- 我們正在為我們的客戶建構分析、報告生成平台,就行而言,典型的表增長將是每年 200 萬行(我們最多需要 5 年的歷史記錄,總表約 50 個)
- 我們已經準備好使用 mysql 進行概念驗證並且它可以工作,但我擔心的是,當我們投入生產時,數據的增長可能會給 mysql 帶來問題。mysql 不支持水平擴展,而 mongodb 中的分片使其可以很好地擴展
- 平均每年一次或兩次表的架構更改,其中要麼添加新列,要麼刪除現有列(刪除不是問題,因為我們總是可以保留列,但是在 mysql 表中添加新列會有多困難包含幾百萬條記錄?)。這是我們考慮 mongodb 的另一個原因,因為它在模式更改方面很靈活
- 寫入:每個表每天平均 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 插入/年?沒有大礙。