您好,登錄后才能下訂單哦!
NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。
NoSQL用于超大規(guī)模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。
今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日志已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了, NoSQL數據庫的發(fā)展也卻能很好的處理這些大的數據。
NoSQL的優(yōu)點
高可擴展性 可以橫向擴展也可以縱向擴展
分布式計算
低成本高性能
架構的靈活性,半結構化數據
沒有復雜的關系
MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。
MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫.支持類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。所以這個非常方便,我們可以用sql操作MongoDB,從關系型數據庫遷移過來,開發(fā)人員學習成本會大大減少。如果再對底層的sql API做一層封裝,開發(fā)基本可以感覺不到mongodb和關系型數據庫的區(qū)別。同樣MongoDB也是號稱自己能夠快速搭建一個高可用可擴展的的分布式集群
MongoDB可以在windows上安裝使用,同樣支持linux平臺。我這里選的是linux平臺安裝。
1. 首先下載并解壓安裝包
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下載 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解壓 mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 將解壓包拷貝到指定目錄
把MongoDB的可執(zhí)行文件路徑加到PATH變量中(~/.bash_profile)
PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin
2. 創(chuàng)建所mongodb啟動需要的路徑和文件
mkdir /data/db #創(chuàng)建存放mongodb的數據文件夾 mkdir /usr/local/mongodb/logs/ #創(chuàng)建存放mongodb日志的文件夾 touch /usr/local/mongodb/logs/mongodb.log #創(chuàng)建存放mongodb的日志文件
3. 啟動mongodb服務。命令窗口直接執(zhí)行就行
[root@DB ~]# mongod 2017-11-14T13:14:19.809+0800 I JOURNAL [initandlisten] journal dir=/data/db/journal 2017-11-14T13:14:19.809+0800 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed 2017-11-14T13:14:19.815+0800 I JOURNAL [durability] Durability thread started 2017-11-14T13:14:19.815+0800 I JOURNAL [journal writer] Journal writer thread started 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] MongoDB starting : pid=4287 port=27017 dbpath=/data/db 64-bit host=DB 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended. 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files. 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] db version v3.0.6 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] git version: 1ef45a23a4c5e3480ac919b28afcba3c615488f2 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] build info: Linux build6.ny.cbi.10gen.cc 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] allocator: tcmalloc 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] options: {} 2017-11-14T13:14:19.849+0800 I NETWORK [initandlisten] waiting for connections on port 27017
可以看到mongodb服務進程以及啟動,開啟了27017端口等待連接了
另開一個命令窗口,使用mongo命令可以與mongodb進行交互。由于它是一個JavaScript Shell,可以輸入簡單的算術運算測試一下:
[root@DB mongodb]# mongo MongoDB shell version: 3.0.6 connecting to: test Server has startup warnings: 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended. 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files. 2017-11-14T13:14:19.834+0800 I CONTROL [initandlisten] > 3+2 5
也可以插入一些簡單數據,查詢驗證:
> db.a.insert({a:1}) WriteResult({ "nInserted" : 1 }) > db.a.find() { "_id" : ObjectId("5a0a7fa7766decd974b3ad3f"), "a" : 1 } >
mongod的主要參數有:
--quiet# 安靜輸出 --port arg# 指定服務端口號,默認端口27017 --bind_ip arg# 綁定服務IP,若綁定127.0.0.1,則只能本機訪問,不指定默認本地所有IP --logpath arg# 指定MongoDB日志文件,注意是指定文件不是目錄 --logappend# 使用追加的方式寫日志 --pidfilepath arg# PID File 的完整路徑,如果沒有設置,則沒有PID文件 --keyFile arg# 集群的私鑰的完整路徑,只對于Replica Set 架構有效 --unixSocketPrefix arg# UNIX域套接字替代目錄,(默認為 /tmp) --fork# 以守護進程的方式運行MongoDB,創(chuàng)建服務器進程 --auth# 啟用驗證 --cpu# 定期顯示CPU的CPU利用率和iowait --dbpath arg# 指定數據庫路徑 --diaglog arg# diaglog選項 0=off 1=W 2=R 3=both 7=W+some reads --directoryperdb# 設置每個數據庫將被保存在一個單獨的目錄 --journal# 啟用日志選項,MongoDB的數據操作將會寫入到journal文件夾的文件里 --journalOptions arg# 啟用日志診斷選項 --ipv6# 啟用IPv6選項 --jsonp# 允許JSONP形式通過HTTP訪問(有安全影響) --maxConns arg# 最大同時連接數 默認2000 --noauth# 不啟用驗證 --nohttpinterface# 關閉http接口,默認關閉27018端口訪問 --noprealloc# 禁用數據文件預分配(往往影響性能) --noscripting# 禁用腳本引擎 --notablescan# 不允許表掃描 --nounixsocket# 禁用Unix套接字監(jiān)聽 --nssize arg (=16)# 設置信數據庫.ns文件大小(MB) --objcheck# 在收到客戶數據,檢查的有效性, --profile arg# 檔案參數 0=off 1=slow, 2=all --quota# 限制每個數據庫的文件數,設置默認為8 --quotaFiles arg# number of files allower per db, requires --quota --rest# 開啟簡單的rest API --repair# 修復所有數據庫run repair on all dbs --repairpath arg# 修復庫生成的文件的目錄,默認為目錄名稱dbpath --slowms arg (=100)# value of slow for profile and console log --smallfiles# 使用較小的默認文件 --syncdelay arg (=60)# 數據寫入磁盤的時間秒數(0=never,不推薦) --sysinfo# 打印一些診斷系統信息 --upgrade# 如果需要升級數據庫 * Replicaton 參數 -------------------------------------------------------------------------------- --fastsync# 從一個dbpath里啟用從庫復制服務,該dbpath的數據庫是主庫的快照,可用于快速啟用同步 --autoresync# 如果從庫與主庫同步數據差得多,自動重新同步, --oplogSize arg# 設置oplog的大小(MB) * 主/從參數 -------------------------------------------------------------------------------- --master# 主庫模式 --slave# 從庫模式 --source arg# 從庫 端口號 --only arg# 指定單一的數據庫復制 --slavedelay arg# 設置從庫同步主庫的延遲時間 * Replica set(副本集)選項: -------------------------------------------------------------------------------- --replSet arg# 設置副本集名稱 * Sharding(分片)選項 -------------------------------------------------------------------------------- --configsvr# 聲明這是一個集群的config服務,默認端口27019,默認目錄/data/configdb --shardsvr# 聲明這是一個集群的分片,默認端口27018 --noMoveParanoia# 關閉偏執(zhí)為moveChunk數據保存 可以把上述參數都寫進mongodb.conf配置文件里: [root@DB mongodb]# cat mongodb.conf dbpath=/data/db logpath=/usr/local/mongodb/logs/mongodb.log logappend=true port=27017 fork=true auth=false nohttpinterface=false bind_ip=192.168.221.160 journal=true quiet=true
啟動的時候使用-f參數引用這個位置即可
[root@DB mongodb]# mongod -f /usr/local/mongodb/mongodb.conf about to fork child process, waiting until server is ready for connections. forked process: 4319 child process started successfully, parent exiting [root@DB mongodb]# ps -ef |grep mongo root 4319 1 1 13:36 ? 00:00:00 mongod -f /usr/local/mongodb/mongodb.conf [root@DB mongodb]# mongo 192.168.221.160 MongoDB shell version: 3.0.6 connecting to: 192.168.221.160/test Server has startup warnings: 2017-11-14T13:36:25.213+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended. 2017-11-14T13:36:25.213+0800 I CONTROL [initandlisten] 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 16384 processes, 65536 files. Number of processes should be at least 32768 : 0.5 times number of files. 2017-11-14T13:36:25.214+0800 I CONTROL [initandlisten] > db.a.find() { "_id" : ObjectId("5a0a7fa7766decd974b3ad3f"), "a" : 1 } >
我們都知道,這種單實例的配置只適合學習開發(fā)時使用,生產肯定不會這么使用,不然單節(jié)點掛掉整條數據流全丟了
接下來一篇我們繼續(xù)學習mongodb主從的配置···
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。