MongoDB號稱檔案資料庫,是目前發展迅速的NoSQL資料庫,它由C++語言撰寫,旨在為WEB應用提供可擴展的高性能資料存盤解決方案,MongoDB是非關系資料庫當中功能最豐富,最像關系資料庫的,它支持的資料結構非常松散,是類似json的bson格式,因此可以存盤比較復雜的資料型別,MongoDB最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向物件的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支持對資料建立索引,
主要功能特性有:
◆面向集合存盤,易存盤物件型別的資料,
◆模式自由,
◆支持動態查詢,
◆支持完全索引,包含內部物件,
◆支持查詢,
◆支持復制和故障恢復,
◆使用高效的二進制資料存盤,包括大型物件(如視頻等),
◆自動處理碎片,以支持云計算層次的擴展性,
◆支持Golang,RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言,
◆檔案存盤格式為BSON(一種JSON的擴展),
◆可通過網路訪問,
其主要場景如下:
◆實時資料處理,它非常適合實時的插入、更新與查詢,并具備實時資料存盤所需的復制及高度伸縮性,
◆快取,由于性能很高,它適合作為資訊基礎設施的快取層,在系統重啟之后,由它搭建的持久化快取層可以避免下層的資料源過載,
◆高伸縮性的場景,非常適合由數十或數百臺服務器組成的資料庫,已經包含了對MapReduce引擎的內置支持,
不適用的場景如下:
◆要求高度事務性的系統,
◆傳統的商業智能應用,
◆復雜的跨檔案(表)級聯查詢,
MongoDB服務端可運行在Linux、Windows或mac os x平臺,支持32位和64位應用,默認埠為27017,推薦運行在64位非Windows平臺上,筆者最喜歡的特性之一就是MongoDB具備的靈活的分片機制,配置好的分片機制不僅能夠達到負載均衡的目標,而且還能夠冗余備份,
一、Ubuntu bionic下安裝
直接使用官網提供的deb檔案安裝即可,
# server wget https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/4.4/multiverse/binary-arm64/mongodb-org-server_4.4.15_arm64.deb # mongos,分片服務器 wget https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/4.4/multiverse/binary-amd64/mongodb-org-mongos_4.4.15_amd64.deb # setup server dpkg -i mongodb-org-server_5.0.9_amd64.deb # 檢查相關狀態 systemctl status mongod # 自動啟動 systemctl enable mongod # 使用命令列操作mongodb mongo
對組態檔/etc/mongod.conf進行修改,以獲得遠程訪問的能力,
cat /etc/mongod.conf |grep bind sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mongod.conf cat /etc/mongod.conf |grep bind systemctl restart mongod systemctl status mongod
MongoDB提供了豐富的命令,專家可以全面操控資料庫以及資料,但對于初學者不太友好,為此推薦使用MongoDB官方提供的MongoDBCompass,在windows下載安裝即可,隨后連接遠程MongoDB資料庫,使用效果如下圖所示:

從圖中可以看出,服務器在遠程,并且通過這個GUI界面,也能夠輸入命令來操作MongoDB資料庫,
二、Python連接使用MongoDB
用Python操作MongoDB非常方便,無需定義表結構就可以直接將資料插入,使用pymongo模塊,可以實作MongoDB與Python的互動,安裝命令如下:
pip install pymongo
下述代碼示例了創建/使用定制的資料庫,并且插入三條記錄,并且查詢的程序,
import pymongo client = pymongo.MongoClient("mongodb://192.168.0.66:27017") print(client.list_database_names()) db = client['raindrop'] collection = db['pm25'] # 增加一條 stu1 = {'id': '001', 'area': 'office', 'pm25': 8} result = collection.insert_one(stu1) # 增加多條 stu2 = {'id': '002', 'area': 'field01', 'pm25': 15, "temp": 10.5} stu3 = {'id': '003', 'monitor': 'wangwu', 'area': 'field02', 'age': 20} result = collection.insert_many([stu2, stu3]) # 查詢記錄 ret = collection.find_one({'area': 'office'}) print(ret)
通過MongoDB Compass可以看到資料庫保存了三個檔案,

由于MongoDB無模式特點,使用起來非常方便,尤其對于半結構化的資料存盤特別有利,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/547878.html
標籤:其他
