2021 iThome 鐵人賽 - DAY30 MongoDB 使用經驗分享 & 完賽

2021 iThome 鐵人賽 MongoDB披荊斬棘之路


DAY30 MongoDB 使用經驗分享 & 完賽

終於來到鐵人賽的最後一天了,今天不講太多技術細節,純粹是一些淺薄經驗分享。

在賽前初步規劃大綱時,發現有兩個項目放不進去 30 天內,分別是 Data ModelingSharding。想了一下觀念性的東西看的人少很多,有使用到 sharding 也是,所以乾脆不放在這次的鐵人賽內,之後會在個人部落格那邊補完。Time series collection這個功能會寫進入,純粹是因為幾乎沒人用,因為也是兩三個月前才剛發佈的功能,但秉持著學習精神,還是占用一天的篇幅了。

這 30 天內介紹了:

  • 基礎的觀念
  • 安裝與工具
  • 基礎操作
  • 進階操作
  • 日常維運
  • 系統監控

應該能夠幫助大家預先面對各種情境,甚至是架構規劃的注意事項。


每個工具都有優缺點,我曾遇過幾個特別苦手的項目,但這邊不會稱為,因為使用情境不同、資料量級也差異很大,因此不見得您會遇到。

  1. 分頁功能
    使用大家常推薦的 SORT、LIMIT 方式絕對會爆炸的,一個查詢絕對超過兩三秒

  2. 副本集資料抄寫
    大流量下會遇到 oplog 逐漸滿載的情況,主要是 replace 占用更多空間,但會使用 replace 是因為效能更勝 update。不過在這次鐵人賽的測試中,發現五版之後的 oplog 抄寫速度快很多,也許以後這不會是問題XD

  3. 大量資料統計
    同樣,想要做成報表系統,會需要計算 數量、不重複數量、總和 等,這也是即時查詢做不出來的

以上三點不是都沒有解法,只是想特別提醒在千萬級以上都會卡住,要特別先規劃解法。


我的使用經歷是從 關聯式 -> 非關聯式,直接學習非關聯式會少了很多包袱,但不得不說 MongoDB 還是有很多從關聯式的概念演化而來的,所以還是沒接觸過資料庫的人,我還是推薦先學習關聯式資料庫。關聯式資料庫的基本概念都是共通的,可以從 postgreSQL、MySQL、mariaDB 這些來使用,比起大廠牌來得輕巧非常多,安裝方式也簡單。

至於該用哪一種資料庫,你必須更熟悉每一種資料庫的特性,以及該資料庫在商業需求內扮演的角色,我要強調的是沒有最強的XX,只有最適合的XX,這句話很多地方都適用。像 MongoDB 強項在哪?剛開始有說,足夠彈性、輕巧以及垂直水平擴展容易,價錢便宜也算是優勢XD 那缺點在哪?個人經驗來說,交易一致性的效能吧!特別是跨集合(Collection),甚至是跨模組等級,效能會弱勢不少,但我只能說,沒必要硬要拿自己弱點去強打別人優勢項目。

最後謝謝各位讀者、iThome平台以及幫助我、教導我的人們。

  • 作者: MingYi Chou
  • 版權聲明: 轉載不用問,但請註明出處!本網誌均採用 BY-NC-SA 許可協議。