MongoDB 簡介1

 

有關於MongoDB的資料現在較少,且大多爲英文網站,以上內容大多由筆者翻譯自官網,請翻譯或理解錯誤之處請指證。之後筆者會繼續關注MongoDB,並翻譯“Developer Zone”和“Admin Zone”的相關內容,敬請期待下期內容。 

MongoDB是一個基於分佈式文件存儲的數據庫開源項目。由C++語言編寫。旨在爲WEB應用提供可護展的高性能數據存儲解決方案。 

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

所謂“面向集合”(Collenction-Orented),意思是數據被分組存儲在數據集中,被稱爲一個集合(Collenction)。每個集合在數據庫中都有一個唯一的標識名,並且可以包含無限數目的文檔。集合的概念類似關係型數據庫(RDBMS)裏的表(table),不同的是它不需要定義任何模式(schema)。 
模式自由(schema-free),意味着對於存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫裏。 
存儲在集合中的文檔,被存儲爲鍵-值對的形式。鍵用於唯一標識一個文檔,爲字符串類型,而值則可以是各中複雜的文件類型。我們稱這種存儲形式爲BSON(Binary Serialized dOcument Format)。 

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

在32位模式運行時支持的最大文件尺寸爲2GB。 

MongoDB把數據存儲在文件中(默認路徑爲:/data/db),爲提高效率使用內存映射文件進行管理。 

安裝: 
Linux/OS X下: 
1 建立數據目錄 
mkdir -p /data/db 
2 下載壓縮包 
curl -O http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz 
3 解壓縮文件 
tar xzf mongodb-linux-i386-latest.tgz 
4 啓動服務 
bin/mongod run & 
5 使用自帶客戶端連接 
/bin/mongo 
6 測試 
db.foo.save( { a : 1 } ) 
db.foo.findOne() 

windows下: 
1 建立數據目錄c:\data\db 
2 下載壓縮包,解壓文件 
3 啓動服務 
bin\mongod.exe run 
4 自帶客戶端 
bin\mongon.exe 

在LINUX和WINDOWS系統下的使用大同小異,不同的地方主要是默認的數據存儲目錄。LINUX類系統下存放在/data/db下,而WINDOWS 

會存放在C:\data\db下。可以在啓動時使用--dbpath參數指定存儲目錄並啓動。如:bin\mongod.exe --dbpath d:\data\mongo 

常用啓動參數: 
run 直接啓動。例:./mongod run 
--dbpath 指定特定存儲目錄啓動,若目錄不存在則創建。例:./mongod --dbpath /var/data/mongo 
--port 指定端口啓動。例:./mongod --port 12345 

停止MONGO服務: 
方法1:服務端停止,可使用Ctrl+C 
方法2:在客戶端停止,可先連接客戶端 
./mongo 
並使用命令 
db.shutdownerver() 
然後退出客戶端 
exit 

使用JAVA語言操作MONGODB非常簡單,只要將驅動文件加入到CLASSPATH中就可以使用。 

1 建立連接 
  要建立MongoDB的連接,你只要指定要連接到的數據庫就可以。這個數據庫不一定存在,如果不存在,MongoDB會先爲你建立這個 

庫。同時,在連接時你也可以具體指定要連接到的網絡地址和端口。下面的是連接本機數據庫的一些例子: 

import com.mongodb.Mongo; 
import com.mongodb.DBCollection; 
import com.mongodb.BasicDBObject; 
import com.mongodb.DBObject; 
import com.mongodb.DBCursor; 
import com.mongodb.MongoAdmin; 

Mongo db = new Mongo("mydb"); 
Mongo db = new Mongo("localhost", "mydb"); 
Mongo db = new Mongo("localhost", 27017, "mydb"); 

2 安全驗證(非必選) 
MongoDB服務可以在安全模式運行,此時任何客戶端要連接數據庫時需使用用戶名和密碼。在JAVA中可使用如下方法連接: 

boolean auth = db.authenticate(userName, password); 

如果用戶名密碼驗證通過,返回值爲true,否則爲false 

3 獲取集合列表 
每個數據庫都存在零個或多個集合,需要時你可以獲得他們的列表: 

Set<String> colls = db.getCollectionNames(); 
for(String s : colls){ 
System.out.println(s); 
} 

4 獲得一個集合 
要獲得某個特定集合,你可以指定集合的名字,並使用getCollection()方法: 

DBCollection coll = db.getCollection("testCollection"); 

當你獲取了這個集合對象,你就可以對數據進行增刪查改之類的操作。 

5 插入文檔 
當你獲得了一個集合對象,你就可以把文檔插入到這個對象中。例如,存在一個JSON式的小文檔: 
{ 
"name" : "MongoDB", 
"type" : "database", 
"count" : 1, 
"info" : { 
   x : 203, 
   y : 102 
  } 
} 
請注意,這個文檔包含一個內部文檔。我們可以使用BasicDBObject類來創建這個文檔,並且使用insert()方法方便地將它插入到集 

閤中。 

BasicDBObject doc = new BasicDBObject(); 
doc.put("name", "MongoDB"); 
doc.put("type", "database"); 
doc.put("count", 1); 

BasicDBObject info = new BasicDBObject(); 
info.put("x", 203); 
info.put("y", 102); 

doc.put("info", info); 

coll.insert(doc); 

6 使用findOne()查找集合中第一個文檔 
要查找我們上一步插入的那個文檔,可以簡單地使用findOne()操作來獲取集合中第一個文檔。這個方法返回一個單一文檔(這是相對於使用DBCursor的find()操作的返回),這對於只有一個文檔或我們剛插入第一個文檔時很有用,因爲此時並不需要使用光標。 

DBObject myDoc = coll.findOne(); 
System.out.println(myDoc); 

返回類似: 
{ 
"_id" : "ac907a1f5b9d5e4a233ed300" , 
"name" : "MongoDB" , 
"type" : 1 , 
"info" : { 
  "x" : 203 , 
  "y" : 102} , 
"_ns" : "testCollection" 
} 

注意_id和_ns元素是由MongoDB自動加入你的文檔。記住:MongoDB內部存儲使用的元素名是以“_”做爲開始。 


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