終於來到鐵人賽的最後一天了,今天不講太多技術細節,純粹是一些淺薄經驗分享。
在賽前初步規劃大綱時,發現有兩個項目放不進去 30 天內,分別是 Data Modeling
和 Sharding
。想了一下觀念性的東西看的人少很多,有使用到 sharding 也是,所以乾脆不放在這次的鐵人賽內,之後會在個人部落格那邊補完。Time series collection
這個功能會寫進入,純粹是網路上幾乎找不到相關文章,可能也是剛發佈的功能,但秉持著學習精神,還是占用一天的篇幅分享內容。
這 30 天內介紹了:
應該能夠幫助大家預先面對各種情境,甚至是架構規劃的注意事項。
每個工具都有優缺點,我曾遇過幾個特別苦手的項目,但這邊不會稱為坑
,因為使用情境不同、資料量級也差異很大,因此不見得您會遇到。
分頁功能
使用大家常推薦的 SORT、LIMIT 方式絕對會爆炸的,一個查詢絕對超過兩三秒
副本集資料抄寫
大流量下會遇到 oplog 逐漸滿載的情況,主要是 replace 占用更多空間,但會使用 replace 是因為效能更勝 update。不過在這次鐵人賽的測試中,發現五版之後的 oplog 抄寫速度快很多,也許以後這不會是問題XD
大量資料統計
同樣,想要做成報表系統,會需要計算 數量、不重複數量、總和 等,這也是即時查詢做不出來的
以上三點不是都沒有解法,只是想特別提醒在千萬級以上都會卡住,要特別先規劃解法。
我的使用經歷是從 關聯式 -> 非關聯式,直接學習非關聯式會少了很多包袱,但不得不說 MongoDB 還是有很多從關聯式的概念演化而來的,所以還是沒接觸過資料庫的人,我還是推薦先學習關聯式資料庫。關聯式資料庫的基本概念都是共通的,可以從 postgreSQL、MySQL、mariaDB 這些來使用,比起大廠牌來得輕巧非常多,安裝方式也簡單。
至於該用哪一種資料庫,你必須更熟悉每一種資料庫的特性,以及該資料庫在商業需求內扮演的角色,我要強調的是沒有最強的XX,只有最適合的XX,這句話很多地方都適用。像 MongoDB 強項在哪?剛開始有說,足夠彈性、輕巧以及垂直水平擴展容易,價錢便宜也算是優勢XD 那缺點在哪?個人經驗來說,交易一致性的效能吧!特別是跨集合(Collection),甚至是跨模組等級,效能會弱勢不少,但我只能說,沒必要硬要拿自己弱點去強打別人優勢項目。
最後謝謝各位讀者、iThome平台以及幫助我、教導我的人們。
本系列文章仍舊會同步發表於我個人的部落格 Pie Note