這次用mongoDB 只是存儲(chǔ)請(qǐng)求日志。
1.mongodb是什么?
MongoDB 是由C++語言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫系統(tǒng)。
在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。
MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成。MongoDB 文檔類似于 JSON 對(duì)象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組
2.mongodb怎么用?
https://blog.gtwang.org/programming/getting-started-with-mongodb-shell-1/
我用springboot-mongodb 整合,直接用mongodbTemplate的API
3.為何選擇
選擇MongoDB的原因
1、 面向文檔且架構(gòu)更為靈活:不同于關(guān)系數(shù)據(jù)庫,MongoDB使用了以json(JS對(duì)象表示法)為基礎(chǔ)的文檔存儲(chǔ)模式,這種模式被稱為BSON。在必須將應(yīng)用與一些其他平臺(tái)相集成的情況下,這種模式很有好處。比如YouTube的API就是以JSON格式輸出數(shù)據(jù)的,因此MongoDB在處理這些請(qǐng)求時(shí)就會(huì)十分得心應(yīng)手。同時(shí),這種模式還簡(jiǎn)化了領(lǐng)域?qū)ο笈c數(shù)據(jù)庫之間的映射關(guān)系。因此,對(duì)于那些開發(fā)時(shí)間總是很緊張,不能在數(shù)據(jù)庫設(shè)計(jì)上花費(fèi)大量時(shí)間的多態(tài)性數(shù)據(jù)領(lǐng)域快速軟件開發(fā)來說,MongoDB就成為了很好的選擇。
2、水平可擴(kuò)展性與高可用性:數(shù)據(jù)庫可以智能地水平擴(kuò)展。數(shù)據(jù)庫的可擴(kuò)展性是通過其特有的分片(sharding)方式來實(shí)現(xiàn)的,使用MongoDB可以通過復(fù)制與分片技術(shù)構(gòu)建集群拓?fù)洌╟lustered topology)。為了增強(qiáng)可用性與一致性,MongoDB可以在創(chuàng)建副本集(replica set)的同時(shí)復(fù)制數(shù)據(jù)。這是因?yàn)閺?fù)制過程提供了持續(xù)讀取的可擴(kuò)展性,分片功能讓讀寫操作更容易,在結(jié)果一致的前提下智能處理復(fù)制中的故障。
3、基于位置的查詢功能:如果你打算開發(fā)的應(yīng)用包含位置追蹤類、基于位置的事件追蹤等位置功能的話,由于MongoDB是具有地理空間信息功能的NoSQL數(shù)據(jù)庫,它會(huì)是很好的選擇。
4、綜合查詢與聚合框架:MongoDB利用現(xiàn)有且合適的索引,提供強(qiáng)大的查詢功能,并允許用戶查詢嵌套/植入對(duì)象與數(shù)組。MongoDB在壓力下表現(xiàn)良好,尤其在處理實(shí)時(shí)更新的即席查詢之時(shí)。聚合框架是一種新的機(jī)制,專為查詢所設(shè)計(jì),要求SQL實(shí)現(xiàn)任何MAX、AVG或者GROUP BY操作。無需累贅的Map-Reduce腳本,此框架允許用戶運(yùn)行某些即席聚合查詢。
5、直觀的架構(gòu):MongoDB每個(gè)副本只有單一的master,相對(duì)來講,點(diǎn)對(duì)點(diǎn)架構(gòu)由于并行寫入或?qū)懭霙_突而顯得非常累贅。
用還是不用呢?
我們知道,MongoDB很出色,對(duì)于需要處理龐大數(shù)據(jù)庫的項(xiàng)目來說非常不錯(cuò),最適合開發(fā)博客平臺(tái)、電子商務(wù)平臺(tái)、元數(shù)據(jù)存儲(chǔ)與基于位置的應(yīng)用程序。不過在使用它之前,仍需考慮到MongoDB可能出現(xiàn)的故障:
l 可能會(huì)在運(yùn)行大型、復(fù)雜的Map/Reduce工作上浪費(fèi)大量的時(shí)間;
l 很多時(shí)候需要使用JOINs語句,或者得有使用“SUM”操作的計(jì)劃;l 會(huì)被大量鏡像或大段二進(jìn)制數(shù)據(jù)所困擾;
l 可能需要排隊(duì)系統(tǒng)。
在下結(jié)論之前,先將其與CouchDB進(jìn)行一下對(duì)比。
如果已做好準(zhǔn)備接受這些挑戰(zhàn)的話,那么選用MongoDB作為NoSQL數(shù)據(jù)庫吧。下面我們來看一下在選擇CochDB或者M(jìn)ongoDB之前,開發(fā)人員必須決定的一些重要與次要問題。
1、如果你打算使用移動(dòng)組件,或者需要允許桌面用戶離線工作,稍候再同步到服務(wù)器的話,就選擇CouchDB。
2、如果只需代碼在服務(wù)器端運(yùn)行,選MongoDB好了。
3、想要滿足可用性與分區(qū)容錯(cuò)性,MongoDB更有優(yōu)勢(shì)。
4、想要滿足一致性與分區(qū)容錯(cuò)性,CouchDB是正確的選擇。
5、如果需要?jiǎng)討B(tài)查詢,或者更需要定義索引(并非map/reduce功能)的話,選MongoDB。
6、偶爾需要對(duì)運(yùn)行預(yù)定義查詢的數(shù)據(jù)進(jìn)行改動(dòng)的話,選CouchDB。