MangoDB
1.簡介
1.1使用場景
- 游戲場景,使用MongoDB存儲游戲用戶信息,用戶的裝備、積分等直接以內嵌文檔的形式存儲,方便查詢、更新(一個角色的所有信息就用一個文檔存儲)
- 物流場景,使用MongoDB存儲訂單信息,訂單狀態在運送過程中會不斷更新,以MongoDB內嵌數組的形式來存儲,一次查詢就能講訂單所有的變更讀取出來。(如果是Mysql進行存儲的話,那頻繁的去update物流信息,造成效率更低了)
- 社交場景,使用MongoDB存儲用戶信息,以及用戶發表的朋友圈信息,通過地理位置索引實現附近的人、地點等功能
- 物聯網場景,使用MongoDB存儲所有接入的智能設備信息,以及設備匯報的日志信息,并對這些信息進行多維度的分析
- 視頻直播,使用MongoDB存儲用戶信息,禮物信息等
1.2性能優越
- 在使用場合下,千萬級別的文檔對象,近10G的數據,對有索引的ID查詢不會比Mysql慢(眾所周知Mysql的索引查詢速度是很快的)
- 而對非索引字段的查詢,則是全面勝出
- mysql實際無法勝任大量數據量下任意字段的查詢,而mongodb查詢性能實在牛
- 下面可以看一組測試數據
1.3 MongoDB的優點
1.3.1 弱一致性(最終一致),更能保證用戶的訪問速度
不保證執行過程中數據的一致性,但是可以保證最終結果的數據一致性。因為在分布式環境下,各個節點做數據同步的時候,讀到的數據不一定是最新的數據
1.3.2 文檔結構的存儲方式,能夠更便捷的獲取數據
以文檔為數據結構,減少了連接查詢,支持JSON語法,每個文檔所存儲的屬性不同,文檔里面還可以嵌套文檔,提高查詢效率
1.3.3?內置GridFS,支持大容量的存儲
- GridFS是一個出色的分布式文件系統,可以支持海量的數據存儲(可以做大數據相關的操作)
- 內置了GridFS的MongoDB,能夠滿足對大數據集的快速范圍查詢
1.3.4內置Sharding分片
1PB = 1024TB
?1.3.5?第三方支持豐富
1.4 MongoDB的缺點
1.4.1?事務支持不友好
- 所以事務要求嚴格的系統(銀行系統)肯定不能用它。
1.4.2?占用空間過大
總結
- 上一篇: 《日志管理与分析权威指南》一2.3 良好
- 下一篇: 《Python语言程序设计》——1.6