MongoDB是一個可擴展、開源、表結構自由、用C++語言編寫且面向文檔的數據庫,在Web應用程序提供高效性能、高可用性且易擴展的數據存儲解決方案。
MongoDB 是一個介於關係數據庫和非關係數據庫直接的產品,是非關係數據庫中功能最豐富、最像關係數據庫的NoSQL數據庫;它支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,能夠實現相似關係數據裏單表查詢的絕大部分功能,切還支持對數據創建索引。
基本單元:
關係數據庫---行
MongoDB --document(用於JSON格式相似的鍵值對來存儲,MongoDB叫BSON對象)
MongoDB 日誌功能 Journaling
對數據庫的增、刪、改 操做會記錄在日誌文件中。每100ms將內存中的數據刷到磁盤上,若是意外停機,在數據庫從新啓動時,MongoDB 經過Journaling日誌功能恢復。
MongoDB 複製集 Replset (冗餘)
一個複製集在生產環境中最少須要3臺獨立機器,主節點(primary),次節點(secondary),仲裁節點(只負責選出主節點)
支持 備份、自動故障轉移,
MongoDB 支持自動分片 Sharding(擴展)
分片功能:實現海量數據的分佈式存儲
分片一般與複製集配合起來使用,實現讀寫分離、負載均衡,
經常使用命令:
mongod 啓動數據庫實例,負責數據庫建立、刪除等各項管理工做,運行在服務器端爲客戶端提供監聽。
mongo 進入交互模式對數據庫系統進行管理。
mongodump 建立BSON dump 文件的方法 例如:mongodump --port 27017 --db db1 --out /tmp/db1
mongoexport 將MongoDB數據實例中的數據
導出來生成JSON 或CSV文件的工具 ; 例如 mongoexport --port 27017 --db db1 --collection t1 --out /tmp/t1.json
mongoimport 將JSON或CSV文件內容
導入到MongoDB實例中的工具; 例如 mongoimport --port 27017 --db db1 --collection t1 --file /tmp/t1.json
mongos 是分片中用到的進程,全部應用程序端的查詢操做都會先由它分析,而後將查詢定位到具體某一個分片上,做用與mongod 相似,客戶端的mongo與它鏈接。
mongofiles 提供了操做MongoDB分佈式文件存儲系統的命令行接口; 例如mongofiles --port 21707 --db mydb1 --local /tmp/123.txt put 123.txt (將/tmp/123.txt 上傳到數據mydb1 中保存)
mongostat 提供了一個展現當前正在運行的mongod實例狀態工具,提供的數據只與運行的mongod或mongos 的實例相關。
mongotop 提供一個分析MongoDB實例 在讀寫數據張的時間的跟蹤方法。它提供的統計數據在美國collection 級別上。
mongorestore
mongooplog
MongoDB 適合的業務
Web應用程序
緩存系統
日誌分析系統