MongoDB最佳實務暢談-計費系統

來源:互聯網
上載者:User

MongoDB最佳實務暢談-計費系統

作者:chszs,轉載需註明。部落客頁:http://blog.csdn.net/chszs

MongoDB的最佳實務,在以下情況,你應該使用MongoDB。

1)高寫負載的情境

MongoDB預設更適合高寫入而不是事務安全。如果你需要為每個用戶端載入巨量的、低價值的資料,那麼MongoDB很適合。假如你需要載入上百萬的交易記錄,那麼這需要額外的安全措施,MongoDB不適合。

2)在不可靠的環境需要高可用情境

設定複製集(伺服器做主從叢集)很容易,速度也很快。此外,從某個節點(或資料中心)做故障恢複是即時的、安全的、自動的。

3)資料增長巨大,能把資料分區的情境

資料庫做伸縮是很困難的(單個MySQL表在資料量達到5GB~10GB時,它的效能會顯著下降)。如果你需要對資料庫進行分區和分區,MongoDB內建了這些機制,完成這些工作很簡單。

4)資料是基於位置的情境

MongoDB內建了支援空間的功能,因此從指定的位置尋找相關的資料是非常快速和準確的。

5)資料集很大(從1GB起步)以及資料的模式是不穩定的情境

在一些關聯式資料庫中要增加新的欄欄位,資料庫會鎖定整個表,或者或讓主要資料庫伺服器的負載和效能下降。通常,當資料表的尺寸超過1GB後,這種情況效能下降的更厲害。而MongoDB是無模式的,增加新的欄位,對已有的行(稱為文檔)無影響。其次是當應用程式改變後,MongoDB不需要DBA來修改資料模式。

6)無DBA的情境

如果你的公司沒有專職的DBA,你也不需要對資料做聯合或標準化,那麼你可以考慮MongoDB。MongoDB在持久化方面做到很好,類資料可以被序列化成JSON資料,並加以儲存。

注意:請遵循MongoDB的最佳實務,以避免一些陷阱。

真實案例:計費

國外的奧弗•科恩發布了一個號稱下一代的開源計費解決方案,此方案利用MongoDB作為其後端儲存。此計費系統已經運行於以色列發展最快的行動電信業者的產品環境,每個月能處理超過500M的呼叫資料記錄CDR。奧弗•科恩介紹了它是怎樣利用MongoDB的優勢的:

1)無模式的設計

無模式設計可以快速添加新呼叫資料記錄類型到系統中。它讓BillRun保持資料存放區的通用性。

2)可伸縮

BillRun的產品網站目前已經在單個資料表中管理了幾個TB的資料,w/o可通過添加新欄位進行限制。

3)快速的複製集

複製集能夠滿足易於構建多資料中心DRP和高可用HA解決方案的規則。

4)分區

分區使的線性擴容很清晰可控,不至於出現超出預算的情況。

5)每秒插入的呼叫資料記錄CDR的數量超過2,000次,MongoDB的架構非常適合高寫入情境。你還可以保證帶findAndModify(通常比較慢)和兩階段交易認可的事務的處理。 

6)開發人員可以面向查詢,使得能夠寫出優雅的查詢。

7)基於位置

基於位置可用於分析使用者的使用方式,以此決定在何處繼續建設蜂窩基礎設施。

最後,MongoDB是一個偉大的資料庫,你必須把它使用在合適的情境才能保證你獲得市場競爭的優勢。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.