MongoDB(官方主頁:http://www.mongodb.org/)是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構很是鬆散,是相似json的bjson格式,所以能夠存儲比較複雜的數據類型。Mongo最大的特色是他支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。
json格式:JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。易於人閱讀和編寫,同時也易於機器解析和生成。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用徹底獨立於語言的文本格式,可是也使用了相似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成爲理想的數據交換語言。JSON構建的結構是一個無序的「‘名稱/值’對」集合。一個對象以「{」(左括號)開始,「}」(右括號)結束。每一個「名稱」後跟一個「:」(冒號);「‘名稱/值’ 對」之間使用「,」(逗號)分隔。具體參見:http://www.ibm.com/developerworks/cn/web/wa-lo-json/。
bjson格式:BSON是Binary JSON 的簡稱,是一個JSON文檔對象的二進制編碼格式。BSON同JSON同樣支持往其它文檔對象和數組中再插入文檔對象和數組,同時擴展了JSON的數據類型。好比:BSON有Date類型和BinDate類型。BSON被比做二進制的交換格式,如同Protocol Buffers,但BSON比它更「schema-less」,很是好的靈活性但空間佔用稍微大一點。BSON有如下三個特色:輕量級、跨平臺、效率高。
MongoDB的特色是高性能、易部署、易使用,存儲數據很是方便。主要功能特性有:
Ø 面向集合存儲,易存儲對象類型的數據。
Ø 模式自由。
Ø 支持動態查詢。
Ø 支持徹底索引,包含內部對象。
Ø 支持查詢。
Ø 支持複製和故障恢復。
Ø 使用高效的二進制數據存儲,包括大型對象(如視頻等)。
Ø 自動處理碎片,以支持雲計算層次的擴展性
Ø 支持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 1.6.5在Debian 5.07 32位平臺安裝爲例:
一、使用以下命令下載MongoDB。
srv10:~# wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.5.tgz
二、使用以下命令解壓MongoDB。
srv10:~# tar -xzvf mongodb-linux-i686-1.6.5.tgz
srv10:~# mv mongodb-linux-i686-1.6.5 /usr/local/mongodb
三、創建MongoDB使用的用戶及目錄。
srv10:~# useradd -r mongodb
#日誌目錄。
srv10:~# mkdir /var/log/mongodb
#數據文件目錄。
srv10:~# mkdir /var/lib/mongodb
srv10:~# chown mongodb /var/lib/mongodb
四、在/etc/目錄下創建名爲mongodb.conf的MongoDB的配置文件。
# mongodb.conf
# Where to store the data.
# Note: if you run mongodb as a non-root user (recommended) you may
# need to create and set permissions for this directory manually,
# e.g., if the parent directory isn't mutable by the mongodb user.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongodb.log
logappend=true
#port = 27017
# Enables periodic logging of CPU utilization and I/O wait
#cpu = true
# Turn on/off security. Off is currently the default
#noauth = true
#auth = true
# Verbose logging output.
#verbose = true
# Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck = true
# Enable db quota management
#quota = true
# Set oplogging level where n is
# 0=off (default)
# 1=W
# 2=R
# 3=both
# 7=W+some reads
#diaglog = 0
# Diagnostic/debugging option
#nocursors = true
# Ignore query hints
#nohints = true
# Disable the HTTP interface (Defaults to localhost:27018).
#nohttpinterface = true
# Turns off server-side scripting. This will result in greatly limited
# functionality
#noscripting = true
# Turns off table scans. Any query that would do a table scan fails.
#notablescan = true
# Disable data file preallocation.
#noprealloc = true
# Specify .ns file size for new databases.
# nssize = <size>
# Accout token for Mongo monitoring server.
#mms-token = <token>
# Server name for Mongo monitoring server.
#mms-name = <server-name>
# Ping interval for Mongo monitoring server.
#mms-interval = <seconds>
# Replication Options
# in master/slave replicated mongo databases, specify here whether
# this is a slave or master
#slave = true
#source = master.example.com
# Slave only: specify a single database to replicate
#only = master.example.com
# or
#master = true
#source = slave.example.com
# in replica set configuration, specify the name of the replica set
# replSet = setname
五、使用以下命令啓動MongoDB。
srv10:~# cd /usr/local/mongodb/bin
srv10:~# ./mongod -f /etc/mongodb.conf --master &
RockMongo是一個PHP5寫的MongoDB管理工具。
一、使用以下命令安裝Apache、PHP。
srv10:~# apt-get install apache2 php5 php5-dev php5-cli
二、使用以下命令下載RockMongo。
srv10:~# cd /var/www
srv10:~# wget http://rock-php.googlecode.com/files/rockmongo-v1.0.11.zip
srv10:~# unzip rockmongo-v1.0.11.zip
三、在https://github.com/mongodb/mongo-php-driver 下載php_mongo module後,使用以下命令解壓將編譯。
srv10:~# tar -xzvf /mnt/mongodb-mongo-php-driver-1.1.1-23-gd362a68.tar.gz
srv10:~# cd mongodb-mongo-php-driver-d362a68
srv10:~# phpize
srv10:~# ./configure
srv10:~# make install
四、在安裝完成後,使用以下命令可檢查是否安裝成功。
srv10:~# php -i | grep extension_dir
extension_dir => /usr/lib/php5/20060613+lfs => /usr/lib/php5/20060613+lfs
五、在/etc/php5/apache2/php.ini文件中增長以下內容。
extension=mongo.so
從新啓動Apache服務後,使用http://<服務器IP>/rockmongo/index.php訪問RockMongo便可出現以下頁面。使用用戶名及密碼爲admin登陸。