MongoDB安裝

MongoDB是一個介於關係數據庫和非關係數據庫之間的產品, 是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構非常鬆散,是類似json的bjson格式,因此可以存儲比較複雜的數據類型。 Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持 對數據建立索引。

之所以喜歡MongoDB,主要是因爲在動態語言中使用它是如此的簡單,自然。到目前爲止,我已經在兩個項目(Encode 和 Sparrw)中使用過它了,雖然對這個選擇我非常滿意,但是有些問題我還是沒有注意到,這些問題讓我抓了好幾個小時的頭皮才解決。如果你有多臺機器,然後爲數據庫多分配幾臺機器,那麼有些問題可以迎刃而解,但是我的項目是運行在單個(虛擬)服務器之上的低流量Web應用程序。

MongoDB服務端可運行在Linux、Windows或OS X平臺,支持32位和64位應用,默認端口爲27017。推薦運行在64位平臺,因爲MongoDB

在32位模式運行時支持的最大文件尺寸爲2GB。
MongoDB把數據存儲在文件中(默認路徑爲:/data/db),爲提高效率使用內存映射文件進行管理。

安裝配置:

MongoDB默認的數據目錄爲:C:\data\db。如果不用默認目錄,則需要在在mongod.exe命令後加--dbpath參數。
創建數據目錄。我創建的是D:\dev\mongodb-win32-x86_64-2.4.5\data\db
創建日誌目錄及其文件。我創建的是D:\dev\mongodb-win32-x86_64-2.4.5\log及D:\dev\mongodb-win32-x86_64-2.4.5\log\log.txt。

1、啓動MongoDB
打開cmd窗口(cmd.exe),進入D:\dev\mongodb-win32-x86_64-2.4.5\bin,執行mongod.exe命令,見下圖。
mongod.exe --logpath=D:\dev\mongodb-win32-x86_64-2.4.5\log\log.txt --dbpath=D:\dev\mongodb-win32-x86_64-2.4.5\data\db!

--logpath 參數是設定日誌文件的路徑。
--dbpath 參數是設定數據庫文件的存放路徑。
mongod.exe命令的所有參數選項可通過mongod.exe --help查看。

2、作爲服務進行安裝
使用管理員權限打開windows的cmd窗口,進入D:\dev\mongodb-win32-x86_64-2.4.5\bin目錄。
mongod.exe --install --logpath=D:\dev\mongodb-win32-x86_64-2.4.5\log\log.txt --dbpath=D:\dev\mongodb-win32-x86_64-2.4.5\data\db
--install 參數是設定安裝爲服務器!

設置爲服務後,即可在cmd(管理員權限打開的windows cmd窗口)窗口用服務的方式啓動或停止MongoDB。
net start mongodb 啓動mongodb服務
net stop mongodb 啓動mongodb服務

3、進入shell環境界面
進入sheelMongoDB後,在cmd窗口進入D:\dev\mongodb-win32-x86_64-2.4.5\bin目錄,輸入mongo.exe,則可以進入shell環境界面。

主要功能:

面向集合存儲,易存儲對象類型的數據。
模式自由。
支持動態查詢。
支持完全索引,包含內部對象。
支持查詢。
支持複製和故障恢復。
使用高效的二進制數據存儲,包括大型對象(如視頻等)。
自動處理碎片,以支持雲計算層次的擴展性
支持RUBY,PYTHON,JAVA,C++,PHP等多種語言。
文件存儲格式爲BSON(一種JSON的擴展)
可通過網絡訪問

更新日誌:

MongoDB 2.6 已經在今天發佈,當然,關注MongoDB的同志自然知道這個消息。

整個MongoDB2.6,個人覺得認證系統是一個重新設計的系統。當然,MongoDB 2.4.6開始,就已經在嘗試新的基於Role的認證方式了,但是真正的成熟還是在2.6.0這個版本。

TextSearch全文檢索

這個功能在 2.4.6裏面就有的功能,這次的變化是,將這個TextSearch的放入了Aggerate裏面了。

換句話說,原來的全文檢索的結果是孤立的,現在可以作爲聚合檢索的一個部分了,文本檢索的結果可以作爲其他聚合操作的輸入數據。

作爲MongoDB5年里程碑的這個版本,還有其他很多對以往功能的增強。

作爲一個長期觀察MongoDB的人來說,我個人認爲,現在是大家可以嘗試MongoDB的一個時間點了。

2.6.0以前的版本的確有很多詬病,除了前面說過的讀寫的安全之外,還有很多設計上的問題。

經過2.4的很多演化後,很多東西都定型了:

主從(Master-Slaver)模型 被 Replication模型代替

加入基於Role的認證後,可以自定義角色(當然,系統也有一些內置的角色)

全文檢索(很遺憾,不支持中文)的強化 具有特色的 地理聚合(很多處理地理座標的內置函數)

TLL數據集(數據集裏面的記錄會慢慢自動刪除掉,有點緩存的意思)Capped數據集(固定大小的數據集,在存儲和讀寫上提高效率,犧牲靈活性)

Sharding支持了ShardKey

索引的內容豐富了不少,特別是有了text屬性的索引,對於全文檢索的幫助很大

MongoDB的2.4已經發布,其中包括新的功能,如文本搜索,基於散列的分片。
主要功能和增強功能:
基於散列分片
Capped 陣列
文本搜索(測試版)
地理空間增強
更快的計數
聚合框架的改進
基於角色的權限
工作集分析器
改進複製

什麼是基於角色Role的認證系統?

在以往的MongoDB中,官方一直推薦MongoDB應該在一個Trust的環境下運行,對於認證和安全性上的考慮是不充分的。

(MongoDB的安全性和讀寫的完整性以前一直被人詬病,WriteConcern解決了寫數據的安全性,這次的RoleBase的認證機制,在一定程度上提高了MongoDB的安全性)

現在在MongoDB中創建的User,除了有用戶名,密碼等傳統屬性之外,還有一個Role的概念。

每個Role的操作權限是不同的,而且,根據細化的配置,可以將每個Role的權限定義的非常詳細,

Role可以查詢,修改某個數據庫,某個數據表,都可以做到小粒度的定義。

每個用戶可以同時擁有多個Role,這樣的話,管理員可以對於各個用戶的權限做到非常精確的控制了。

MongoDB的 具體實現 Role:

每個Role可以有多個Privilege,每個Privilege指定了可以訪問的資源(可以指定數據集,數據庫,精確到具體的某個數據集)

對於資源的可以執行的操作(Action),例如 數據集的查找 或者 更新。對於各種的操作已經做到非常小的粒度的細化了。

例如 添加用戶 和 刪除用戶 已經是兩個操作了(Action),而不是通常理解的,增刪改是同樣的操作。

(當然,可能也有人認爲如此細化對於管理者來說也是一種負擔。不過一個Role一旦精心設計之後,就可以分配給不同用戶,一勞永逸了)

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