NoSQL 資料庫概念始於 1998 年, 原先是指一種不同於傳統關聯式, 不提供 SQL 功能的資料庫, 但目前已被重新定義為 Not Only SQL, 意指無綱要 (Schemaless), 分散式, 非關聯式, 不提供 ACID 特性的資料庫. 所謂 ACID 是指 :
- 最小性 (Atomicity)
- 一致性 (Consistency)
- 隔離性 (Isolation)
- 持久性 (Durability)
NoSQL 資料庫種類 | 說明 |
文件導向式 (Document) | MongoDB (Sourceforge), CouchDB, RavenDB |
鍵值式 (Key-Value) | Redis (Flickr), Memcached, Dynamo (Amazon) |
欄式 (Column) | Cassandra (Facebook), BigTable (Google), HBase, Hadoop |
圖形式 (Graph) | Neo4J, GraphDB FlockDB (Twitter) |
文件導向式資料庫將資料以集合 (Collections) 的方式儲存 (相當於資料表), 每個集合包含多筆文件 (Document, 相當於列或紀錄), 而每筆文件為 Web 結構化資料 (XML 或 JSON), 例如 MongoDB 採用的是 JSON 格式, 適用於儲存 Web 資訊. 鍵值資料庫設計理念來自資料結構裡的雜湊表 (Hash table), 在 Key 與 Value 之見建立映射關係來儲存資料, 適用於大數據之高速存取. 其資料以桶 (Bucket) 儲存, 相當於資料表, 桶裡面存放著鍵值對. 欄式資料庫將同一欄的資料儲存在一起, 適用於分散式檔案系統. 而圖形式資料庫採用 Graph 結構來儲存資料, 適用於社交網路與推薦系統等與關係圖譜有關之系統.
我在市圖借到下面這本 mongoDB 的書, 以下按照其說明進行安裝.
# 7 天學會大數據資料處理 NoSQL-MongoDB 入門與活用
Source : 博客來
1. 下載 MongoDB :
# https://www.mongodb.com/download-center?initial=true#enterprise
預設為下載 msi 安裝檔, 我改為免安裝的 zip 檔 (約 290 MB),
mongodb-win32-x86_64-enterprise-windows-64-4.0.5.zip
先在 C 碟下建立一個空的 MongoDB 資料夾, 然後將解壓縮後的目錄改為簡短的 mongodb 資料夾 (約 1 GB) 搬移到 C:\MongoDB 下面, 結構如下 :
2. 將 MongoDB 的 bin 資料夾加入環境變數 Path 中 :
然後在 "控制台/系統/進階系統設定/環境變數" 中新增 MongoDB 的 bin :
C:\MongoDB\mongodb\bin
3. 建立相關目錄與系統設定檔 :
在 C:\MongoDB 下建立如下目錄 :
C:\MongoDB\data\db
C:\MongoDB\data\backup
C:\MongoDB\log
然後建立一個 mongod.cfg 檔案, 這是啟動 MongoDB 服務時必須設定的參數組態文件, 用來指定 db 與 log 目錄, 檔案內容如下 :
dbpath=C:\MongoDB\data\db
logpath=C:\MongoDB\log\mongod.log
4. 啟動 MongoDB 服務 :
以系統管理員身分開啟命令提示字元視窗, 並輸入如下指令 :
mongod --config "C:\MongoDB\mongod.cfg" -install
C:\WINDOWS\system32>mongod --config "C:\MongoDB\mongod.cfg" -install
2019-01-16T23:06:21.132+0800 I CONTROL [main] log file "C:\MongoDB\log\mongod.log" exists; moved to "C:\MongoDB\log\mongod.log.2019-01-16T15-06-21".
C:\WINDOWS\system32>
於命令提示字元視窗輸入如下指令 :
net start MongoDB
C:\WINDOWS\system32>net start MongoDB
MongoDB 服務正在啟動 ..
MongoDB 服務已經啟動成功。
C:\WINDOWS\system32>
執行 mongo 進入 MongoDB 指令介面 :
C:\WINDOWS\system32>mongo
MongoDB shell version v4.0.5
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("55c54591-173e-4213-9721-a1d0353da01e") }
MongoDB server version: 4.0.5
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
2019-01-16T23:07:12.243+0800 I CONTROL [initandlisten]
2019-01-16T23:07:12.243+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-01-16T23:07:12.243+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-01-16T23:07:12.243+0800 I CONTROL [initandlisten]
2019-01-16T23:07:12.243+0800 I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
2019-01-16T23:07:12.243+0800 I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
2019-01-16T23:07:12.244+0800 I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
2019-01-16T23:07:12.244+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
2019-01-16T23:07:12.244+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
2019-01-16T23:07:12.244+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
2019-01-16T23:07:12.244+0800 I CONTROL [initandlisten]
MongoDB Enterprise > (已進入 MongoDB Shell)
可見不帶參數直接輸入 mongo 預設會連線 localhost 的 27017 埠.
MongoDB Enterprise > help
db.help() help on db methods
db.mycoll.help() help on collection methods
sh.help() sharding helpers
rs.help() replica set helpers
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
help misc misc things to know
help mr mapreduce
show dbs show database names
show collections show collections in current database
show users show users in current database
show profile show most recent system.profile entries with time >= 1ms
show logs show the accessible logger names
show log [name] prints out the last segment of log in memory, 'global' is default
use
db.foo.find( { a : 1 } ) list objects in foo where a == 1
it result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x set default number of items to display on shell
exit quit the mongo shell
此 Shell 介面是全功能的 Javascript 直譯器, 可執行 Javascript 程式碼與標準函數. MongodDB 是無綱要 (Schemaless) 資料庫, 基本資料結構是 field:value 組成的 JSON 格式文件 (document), 相當於關聯式資料庫中的一列紀錄
MongoDB 與 SQL 的術語對應如下 :
MongoDB 術語 | SQL 術語 |
database 資料庫 | database 資料庫 |
collection 集合 | table 資料表 |
document 文件 | row 列/紀錄 |
field 欄位 | column 行/欄 |
switched to db test
參考 :
# MongoDB 基礎入門教學:MongoDB Shell 篇
# [Database][MongoDB] 新增、修改、查詢、刪除操作 1 ( CRUD operation 1 )
# https://docs.mongodb.com/manual/reference/program/mongo/
沒有留言 :
張貼留言