MongoDB(1)簡介 & 安裝配置

MongoDB 入門專欄

http://blog.csdn.net/column/details/19681.html


MongoDB 簡介 


MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源 NoSQL 數據庫系統,在高負載的情況下,添加更多的節點,可以保證服務器性能,旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。

MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。


MongoDB 主頁:https://www.mongodb.com
MongoDB 官方文檔:https://docs.mongodb.com

NoSQL 和 RDBMS

MongoDB 是一種典型的 NoSQL 數據庫,區別與 MySQL,Oracle,DB2 這些傳統的關係數據庫;
 RDBMSNoSQL
特點- 高度組織化結構化數據 
- 結構化查詢語言(SQL) (SQL) 
- 數據和關係都存儲在單獨的表中。 
- 數據操縱語言,數據定義語言 
- 嚴格的一致性
- 基礎事務
- 代表着不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預定義的模式
-鍵 - 值對存儲,列存儲,文檔存儲,圖形數據庫
- 最終一致性,而非ACID屬性
- 非結構化和不可預知的數據
- CAP定理 
- 高性能,高可用性和可伸縮性
遵循原則ACID 原則
  • A (Atomicity) 原子性
  • C (Consistency) 一致性
  • I (Isolation) 獨立性
  • D (Durability) 持久性
CAP原則
  • 一致性(Consistency) (所有節點在同一時間具有相同的數據)
  • 可用性(Availability) (保證每個請求不管成功或者失敗都有響應)
  • 分隔容忍(Partition tolerance) (系統中任意信息的丟失或失敗不會影響系統的繼續運作)


以下是 NoSQL 的分類和部分代表:
列存儲Hbase、Cassandra、Hypertable
文檔存儲MongoDB、CouchDB
key-value 存儲Tokyo Cabinet / Tyrant、Berkeley DB、MemcacheDB、Redis
圖存儲Neo4J、FlockDB
對象存儲db4o、Versant
xml數據庫Berkeley DB XML 、BaseX


以下是部分 SQL 概念對應的 MongoDB 概念:
SQL術語/概念MongoDB術語/概念解釋/說明
databasedatabase數據庫
tablecollection數據庫表/集合
rowdocument數據記錄行/文檔
columnfield數據字段/域
indexindex索引
table joins 表連接,MongoDB不支持
primary keyprimary key主鍵,MongoDB自動將_id字段設置爲主鍵






MongoDB 安裝配置

以下以 Linux 環境的 mongoDB 安裝配置作爲示例,在 OS X,Window 環境下的操作也是類似的;

下載
選擇合適的 MongoDB 版本下載,注意 window 版本的 mongodb-3.6 的 msi 安裝程序可能會出現安裝時進度條卡住的情況,此時可以直接殺線程,直接開始配置步驟,或者下載安裝 3.4 版本的 mongodb;  

解壓
linux 版本一般下載後是一個壓縮包,解壓該包即可獲取 mongodb 的運行程序,假設該壓縮包解壓後得到目錄 mongodb-3.6.2;
爲了方便啓動,一般會把 mongodb-3.6.2/bin 目錄寫入到系統 PATH 變量;
mongodb-3.6.2/ 下創建 data,logs 兩個目錄,分別用於儲存數據和日誌:
 
assad@DESKTOP-assad:/usr/bin/mongodb-3.6.2$ mkdir data
assad@DESKTOP-assad:/usr/bin/mongodb-3.6.2$ mkdir logs
之後需要將 mongodb-3.6.2/ 下所有的文件設置 group 和 own;

啓動 mongoDB 服務
運行 mongoDB 服務由 2 種方式,第一種是直接指定運行參數,第二種是指定配置文件,這裏先演示第一種;
 
assad@DESKTOP-assad:/usr/bin/mongodb-3.6.2/bin$ mongod --dbpath=/usr/bin/mongodb-3.6.2/data --logpath=/usr/bin/mongodb-3.6.2/logs/mongo.log    # 指定 data,logpath 位置運行 mongodb 服務

連接 mongoDB
 
assad@DESKTOP-assad ~ $ mongo
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.2
......
>
這裏我是已經將 mongodb-3.6.2/bin 的路徑變量寫入到系統 PATH 了,如果沒有需要定位到該目錄下執行該指令;


設置管理員密碼
mongodb 默認沒有設置密碼的,爲了安全會設置至少設置一個管理員密碼,步驟如下:
 
assad@DESKTOP-assad ~ $ mongo     # 登入 mongodb
>show dbs;         # 顯示所有存在表
admin  0.000GB
local  0.000GB
> use admin        # 使用 admin 數據庫
switched to db admin    
> db.createUser({user:"assad",pwd:"mongo123",roles:["root"]})     # 在 admin 數據庫中創建用戶
Successfully added user: { "user" : "assad", "roles" : [ "root" ] }
> exit 
之後重啓 mongoDB 服務,並且以 auth 認證模式啓動,如下:
 
assad@DESKTOP-assad:/usr/bin/mongodb-3.6.2/bin$ mongod --dbpath=/usr/bin/mongodb-3.6.2/data --logpath=/usr/bin/mongodb-3.6.2/logs/mongo.log  --auth
此時如果直接登陸 mongoDB 服務,所有的數據庫操作都會被拒絕,需要以密碼登入:
 
assad@DESKTOP-assad ~ $ mongo -u assad -p mongo1994 127.0.0.1:27017/admin   # 以管理員方式登入 mongodb
> show dbs
.....


使用配置文件啓動 mongoDB 服務
以上的 mongoDB 啓動過程參數比較繁瑣,可以編寫一個配置文件,從配置文件啓動 mongoDB,以下是一個示例的配置文件:
/etc/mongod.conf
 
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
dbpath=/usr/bin/mongodb-3.6.2/data
journal=true
# where to write logging data.
logpath=/usr/bin/mongodb-3.6.2/logs/mongod.log
logappend=true
# network interfaces
bind_ip=127.0.0.1
port=27017
# security
auth=true
通過該配置文件啓動 mongodb 服務:
 
$ mongod -f /etc/mongod.conf
配置文件中的參數其實通過 mongo --help 都由說明;


MongoDB GUI 界面

MongoDB 提供了簡單的 HTTP 用戶界面,如果要啓用該功能,只需要只當啓動參數 --rest,如下:
 
$ mongod -f /etc/mongod.conf --rest
默認的 Web 界面端口比服務端口多 1000,默認爲 28017,通過瀏覽器打開:http://127.0.0.1:28017 即可打開該管理端口;

也可以使用 Robo 3T 這種 MongoDB 客戶端管理軟件,詳見:https://robomongo.org







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章