MongoDB選型及注意問題點

2021-06-21 03:03:41 字數 2829 閱讀 2747

nosql和rdms的爭論,一直都是沸沸揚揚,可是站在我們普通的企業應用角度,應該注意些什麼呢?本文將針對該問題進行討論。

1、傳統的rdms在大型的系統應用中,經常成為系統瓶頸。應運而生的nosql,很大程度的彌補了rdms的弊端,無形中給我們帶來了更多的希望。作為技術選型的決策者,必須有乙個清醒的認識:明確系統的應用場景,清楚需求;辯證的看待rdms和nosql的關係,充分發揮各自優勢,最大限度的為系統服務。

2、本節不過多的介紹rdms,針對最為流行的nosql--mongodb,介紹其使用場景

2.1、web應用程式。文件能表示豐富的資料結構,建模相同資料庫所需的集合數量通常會比使用完全正規化關係型資料庫的資料表數量要少。動態查詢和二級索引能讓你輕鬆的實現sql開發者所熟悉的大多數查詢。作為乙個成長中的web應用程式,mongodb提供了清晰的擴充套件路線。

2.2、敏捷開發。mongodb沒有固定的schema,所有花在提交、溝通和實施schema變更的時間都生下來了。

2.3、分析和日誌。mongodb的目標原子更新和固定集合。

2.4、快取

2.5、可變schema

3、mongodb存在的弊端及侷限性

3.1、mongodb應該執行於64位機器上。32為系統只能對4gb記憶體做定址。

3.2、資料占用的記憶體會自動按需分配。這樣一來在共享環境中執行資料庫會變得更加麻煩。所以最好能讓mongodb執行在一台專門的伺服器上。

3.3、執行帶複製功能的mongodb是十分重要的,尤其是沒有開啟journaling日誌的時候。

4、mongodb的最佳實踐

4.1、總是使用replica sets。replica sets通過自動failover機制提供mongodb的高可用性。在應用中,如primary機器出現故障,那麼某一台secondary機器就會通過選舉成為新的primary,整個集群仍然能夠提供正常服務。如果在開發者自己的環境中同步機制的代價過高,建議其使用一些雲儲存服務。

4.2、保持版本更新。保持版本更新很重要,10gen在每個版本中都會修復一些問題,使mongodb的執行更出色。比如在2.0.x版本中,mongodb的儲存效能和併發效能就有極大提高,同時還包括索引優化、bug修復以及compaction命令等一系列改進,以便開發者更方便地擴充套件其集群。

4.3、不要在32位系統上使用mongodb。在32位機器上,mongodb只能儲存約2.5gb的資料。因為mongodb在內部實現上是通過記憶體對映的方式來提高效能的,所以在32位機器上其記憶體位址本身就限制了資料容量。在engine yard雲服務中使用mongodb,請使用large instance來部署mongodb。在實際產品中,官方也只支援64位的mongodb。

4.4、預設開啟journaling日誌。mongodb支援在寫操作前記錄journaling日誌來提高節點的可用性。強烈建議在部署時開啟journaling日誌。注意資料檔案的存放位置。在使用時,請確認你的資料檔案處於乙個持久化儲存中(比如/data/mongodb目錄)。也可以使用非持久化的裝置進行資料檔案儲存,不過你最好小心再小心,因為這可能會對你的集群架構造成影響。推薦使用ebs進行mongodb的資料檔案儲存。熱資料最好能放在記憶體中。能夠保持熱資料(以及索引資料)一直放在記憶體中,這一點非常重要,它將對整個集群的效能造成影響。如果通過監控發現page fault的數量增加,那麼很可能就是熱資料量超出了可用記憶體大小。當熱資料量超出了可用記憶體量時,通常有兩種解決方法:增加記憶體和資料分片。建議先增加記憶體,再考慮通過資料分片的方式解決。

4.5、壓力過大公升級配置。如果機器負載達到65%,那麼應該考慮公升級機器配置。在日常使用中,最好保持負載低於65%。同時這也對資料恢復和縱向擴充套件有影響。當需要公升級配置時,aws建議按下面的順序來做:large、extra large、high memory 4xl。而在更高配置的機器上,網路延遲也會更小。

4.6、分片需謹慎。分片策略會受資料訪問特點的影響,所以在進行資料分片前,最好先理清楚資料的訪問特點,並想明白是否確實需要分片。分片欄位對效能的影響非常大,所以選擇乙個好的分片欄位是非常重要的。config節點對整個集群的健康執行是至關重要的,所以一旦你選擇使用分片機制,就一定要保證有3個config節點。永遠不要刪除config節點的資料,要確保頻繁地對這些資料進行日常備份。如果可能,通過網域名稱來指定節點的位址,比如在/etc/hosts檔案中指定相應的本地網域名稱,這能讓你在集群配置上更靈活。config節點的壓力很小,但還需執行在64位機器上。千萬不要把3個config節點都放在同一臺機器上!

4.7、使用mongo mms圖形化監控服務。如果你還沒有完善的mongodb監控,可以嘗試mongo mms。mongo mms是10gen官方發布的乙個監控服務,可以將集群的各項健康指標以圖形化的方式彙總展示。

5、mongodb都有哪些企業在使用

5.1、官網上列出了很多國外的企業,mongodb的使用場景和使用者頗為廣泛,包括sap、ea、迪士尼、ebay、facebook等。

5.2、在國內,mongodb不僅在**、大眾點評等網際網路業務中使用,還在一些國內銀行和汽車造業中使用。

6、mongodb支援的資料結構

6.1、mongodb儲存的資料結構型別為bson,是json的乙個豐富資料型別的擴充套件,採用二進位制編碼儲存

6.2、mongodb支援資料型別

* string

* integer

* double

* date

* byte array (binary data)

* boolean (true and false)

* null

* bson object

7、豐富的官方支援及方便管理的視覺化客戶端

7.3、視覺化客戶端的破解方法:刪除登錄檔中:[hkey_current_user\software\classes\clsid\\4ff78130]下所有的值。

MongoDB安裝教程及相關注意點

安裝mongodb bin目錄下建立下圖中三個檔案和資料夾 logs目錄下建立mongo.log 資料庫路徑 dbpath d mongodb server 3.6 data 日誌輸出檔案路徑 logpath d mongodb server 3.6 logs mongo.log 錯誤日誌採用追加模...

python各種問題及注意點總結

1引數解析的新增子命令import argparse 首先定義兩個不同的函式 def a x return x def b x return x parser argparse.argumentparser 獲得乙個主直譯器 subparser parser.add subparsers dest ...

MOSFET選型注意事項及應用例項

mosfet 廣泛使用在模擬電路與數位電路中,和我們的生活密不可分。mosfet 的優勢在於 首先驅動電路比較簡單。mosfet需要的驅動電流比 bjt則小得多,而且通常可以直接由cmos或者集電極開路ttl驅動電路驅動 其次mosfet的 開關速度比較迅速,能夠以較高的速度工作,因為沒有電 荷儲存...