使用MongoDB開發實踐體會

2021-08-27 04:35:51 字數 1157 閱讀 9893

年前在專案中使用了nosql的代表之一 —— mongodb,微博上總結了一些心得,在這裡和各位分享一下。

開發中用mongodb的爽快之處

mongodb是乙個非常適合php開發的#nosql# 資料庫,尤其支援高併發和schema-free(自由結構)特性,使得php開發變得更靈活,更高效。大家都來試試吧!

或許很多時候,記錄在mysql裡面的自由字段(如序列化後的陣列),都很難去回憶或者找到在什麼地方。而mongodb卻可以讓你輕鬆找到需要的陣列,而且很有規律(條件查詢)。這種輕鬆,對比起來就知道了。

mysql在大資料量情況下,orderby和groupby的效率會非常的低。從目前的實踐來看,mongodb是很有希望和很有必要替代orderby和groupby,因其有靈活的資料結構模型,可作為乙個可查詢和排序、歸類的資料中間快取層,而且效率會比通常的mysql查詢高很多。

思考mongodb的使用場景

重要資料:mysql,一般資料:mongodb,臨時資料:memcache

對於關係資料表而言,mongodb是提供了乙個更快速的檢視view;而對於php程式而言,mongodb可以作為乙個持久化的陣列來使用,並且這個持久化的陣列還可以支援排序、條件、限制等功能。

將mongodb代替mysql的部分功能,主要乙個思考點就是:把mongodb當作mysql的乙個view(檢視),view是將表資料整合成業務資料的關鍵。比如說對原始資料進行報表,那麼就要先把原始資料統計後生成view,在對view進行查詢和報表。從這個意義上,mongodb提供了乙個更快速,更使用的view

php中使用mongodb要注意的

mongodb等nosql技術,作為memcache和mysql的乙個中間view是比較好的選擇。而nosql進行持久化是非常不好的事情,除非有ssd硬碟,否則普通硬碟條件下,持久化會令系統負擔極大,並且效率甚至有可能比mysql還要低。

在用 php 操作 mongodb 時,排序字段值需要強制型別。不然排序的時候會有問題。 不強制型別時會 類似以下形式: 1 10 2 3 解決辦法就是在寫入的時候 加上 (int)$sort 強制一下型別。

mongodb遇到「caught exception: non-utf8 string: 」的異常,這是插入非utf8編碼文字的時候就會丟擲

MongoDB 最佳實踐

已經有很多關於 nosql 選擇的文章了。影響你選擇資料庫的因素有 讀 寫操作的吞吐量,永續性,一致性,延遲性等等。nathan hurst 的文章 visual guide to nosql system 很好的總結了這一點。nosql 通用的最佳實踐 1.徹底的測試 模擬你的生產環境,包括流量來...

MongoDB最佳實踐

將mongodb加入到我們的服務支援列表中,是整個團隊年初工作計畫中的首要任務。但我們感覺如果先新增一項對nosql儲存的支援,而不是先公升級已支援的關係型資料庫,可能對使用者不太好,畢竟目前的使用者都使用關係型資料庫。所以我們決定將引入mongodb這項工作放到公升級mysql和postgresq...

mongodb 最佳實踐

不要按照關係型來設計表結構 mongodb可以讓你像關係型資料庫一樣設計表結構,但是它不支援外來鍵,也不支援複雜的join!如果你的程式發現有大量實用join的地方,那你的設計可能需要重新來過。參照以下相關模式設計建議。資料庫集合 collection 的數量不宜太多 mongodb的模式設計基於靈...