標籤:
前言
MongoDB是一個由C++語言編寫的基於分布式檔案儲存體的資料庫,是當前NoSQL資料庫中比較熱門的一種,旨在為Web應用提供可擴充的高效能資料儲存解決方案。
MongoDB
簡介
MongoDB是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。支援的資料結構非常鬆散,因此可以儲存比較複雜的資料類型。最大的特點是其支援的查詢語言非常強大,其文法有點類似於物件導向的查詢語言,幾乎可以實作類別似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
特點及功能特性
特點:高效能、易部署、易使用,儲存資料非常方便
主要功能特性有:
面向集合儲存,易儲存物件類型的資料
模式自由
支援動態查詢
支援完全索引,包含內部對象
支援查詢
支援複製和故障恢複
使用高效的位元據儲存,包括大型物件(如視頻等)
自動處理片段,以支援雲端運算層次的擴充性
支援Ruby,Python,Java,C++,PHP等多種語言
檔案儲存體格式為Bson(一種Json的擴充)
可通過網路訪問
優缺點
與非關係型資料庫相比,MongoDB的優點:
弱一致性(最終一致),更能保證使用者的訪問速度
文檔結構的儲存方式,能夠更便捷的擷取資料
內建GridFS,支援大容量的儲存
內建Sharding
第三方支援豐富(這是與其他的NoSQL相比,MongoDB也具有的優勢)
效能優越
與非關係型資料庫相比,MongoDB的缺點:
不支援事務操作
佔用空間過大
沒有成熟的維護工具
MongoDB安裝
1.下載mongodb
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-3.2.1.tgz
2.解壓縮tar檔案
tar zxf mongodb-linux-x86_64-3.2.1.tgzmv mongodb-linux-x86_64-3.2.1/ /usr/local/mongodb-3.2
3. 建立資料檔案和記錄檔
mkdir -p /usr/local/mongodb-3.2/datamkdir /usr/local/mongodb-3.2/logstouch /usr/local/mongodb-3.2/logs/mongod.log
4.在安裝mongodb的使用者下添加如下環境變數,以便直接使用mongodb bin目錄下的命令
export PATH=$PATH:/usr/local/mongodb-3.2/bin/
5.啟動mongodb
mongod --dbpath=/usr/local/mongodb-3.2/data --logpath=/usr/local/mongodb-3.2/logs/mongod.log --logappend --port=27017&
6.檢查連接埠是否啟動,連接埠為:27017
netstat -nlp | grep 27017tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1897/mongod unix 2 [ ACC ] STREAM LISTENING 11098 1897/mongod /tmp/mongodb-27017.sock
啟動成功。
7.串連資料庫
# mongo> use test
8.設定mongodb自動啟動(無許可權)
將如下命令添加到 /etc/rc.local
mongod --dbpath=/usr/local/mongodb-3.2/data --logpath=/usr/local/mongodb-3.2/logs/mongod.log --logappend --port=27017&
9.設定mongodb自動啟動(有許可權)
將如下命令添加到 /etc/rc.local
mongod --dbpath=/usr/local/mongodb-3.2/data --logpath=/usr/local/mongodb-3.2/logs/mongod.log --logappend --port=27017& -auth
10.添加使用者
> use test //不存在會自動建立> db.createUser({user:"admin",pwd:"123456",roles:[{role:‘dbOwner‘,db:‘userdb‘}]})> use admin //切換到 admin 庫下> db.system.users.find() //查看有哪些使用者
MongoDB串連和使用者管理
1)串連MongoDB:
1:在本機可以直接運行命令mongo進入到MongoDB shell中
2:如果MongoDB監聽連接埠並不是預設的27017,則在串連的時候需要加 --port選項,例如
mongo --port 27018
3:串連遠程mongodb,需要加--host,例如
mongo --host 127.0.0.1
4:如果設定了驗證,則在串連的時候需要帶使用者名稱和密碼
mongo -uusername -ppasswd //這個和MySQL挺像
2)MongoDB使用者管理
1:首先mongodb使用者是針對庫來的,建立使用者時要先進入到對應的庫裡
2:use test //切換到test庫下
3:db.createUser({user:"admin",pwd:"123456",roles:[{role:‘dbOwner‘,db:‘userdb‘}]})
4:use admin //切換到admin庫
5:db.system.users.find() // 列出所有使用者,需要切換到admin庫
6:show users //查看當前庫下所有的使用者
7:db.dropUser(‘admin‘) //刪除使用者
8:關於使用者角色,參考文檔http://bbs.51cto.com/thread-1146654-1.html
3)資料庫管理
#查看版本
db.version()
#顯示當前的庫 db
# 切換/建立庫
use userdb //如果庫存在就切換,不存在就建立
#此時show dbs 看不到userdb,需要我們建立一個集合
db.createCollection(‘clo1‘)
再show dbs就有userdb了。
#查看所有資料庫
show dbs
#刪除資料庫 mydb
use mydb //先切換到該庫下,然後再刪除
db.dropDatabase()
4)資料管理
建立集合
db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
文法:db.createCollection(name,options)
name就是集合的名字,options可選,用來配置集合的參數,參數如下
capped true/false (可選)如果為true,則啟用封頂集合。封頂集合是固定大小的集合,會自動覆蓋最早的條目,當它達到其最大大小。如果指定true,則需要也指定尺寸參數。
autoindexID true/false (可選)如果為true,自動建立索引_id欄位的預設值是false。
size (可選)指定最大大小位元組封頂集合。如果封頂如果是 true,那麼你還需要指定這個欄位。單位B
max (可選)指定封頂集合允許在檔案的最大數量。
查看集合
show collections
在集合中添加文檔
db.Account.insert({AccountID:2,UserName:"123",password:"123456"}) //如果集合不存在,直接插入資料,則mongodb會自動建立集合修改db.Account.update({AccountID:2},{"$set":{"Age":20}})
查看
db.Account.find() //查看所有文檔db.Account.find({AccountID:2}) //根據條件查詢刪除db.Account.remove({AccountID:2}) //根據條件刪除要刪除整個文檔db.Account.drop()查看集合的狀態use dbname //先進入對應的庫,然後查看集合狀態db.printCollectionStats()
5)資料庫效能
db.stats() //查看當前庫的資訊db.serverStatus() //查看mongodb伺服器的狀態
MongoDB安裝部署(一)