使用MongoDB開發實踐體會

年前在項目中使用了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使用的體會,你有什麼看法呢?歡迎評論留言!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章