MongoDB權威指南-簡介

1. 簡介


* MongoDB是面向文檔(document-oriented)的數據庫。
* 面向文檔的方法能夠僅使用一條記錄來表現複雜的層次關係。
* 不再有預定義模式(predefined-schema):文檔的鍵(key)和值(value)不再是固定的類型和大小。
* 應該如何擴展數據庫?實質上,這是縱向擴展(scale up)和橫向擴展(scale out)之間的選擇。縱向擴展就是使用計算能力更強的計算機。橫向擴展既便宜又易於擴展;不過,管理1000臺機器比管理1臺機器顯然要困難得多。
* MongoDB能自動處理跨集羣的數據和負載,自動重新分配文檔,以及將用戶請求路由到正確的機器上。
* 索引 indexing

 MongoDB支持通用二級索引,允許多種快速查詢,且提供唯一索引、複合索引、地理空間索引,以及全文索引。

*  聚合arregation

 支持複合管道arregation pipeline.用戶能通過簡單的片段創建複雜的聚合,並通過數據庫自動優化。

*  特殊的複合類型

 MongoDB支持時間有限的集合,例如會話;也支持固定大小的集合,用於保存近期數據,例如日誌。

*  文件存儲

 可用於存儲大文件和文件元數據。

* 卓越的性能

 MongoDB能對文檔進行動態填充dynamic padding,也能預分配數據文件以利用額外的空間來換取穩定的性能。


1. 基礎知識


* 文檔是MongoDB中數據的基本單元
* MongoDB的一個實例可以擁有多個相互獨立的數據庫database,每個數據庫都擁有自己的集合。
* 每一個文檔都有一個特殊的鍵'_id',這個鍵在文檔所歸屬的集合中是唯一的。
* 文檔就是鍵值對的一個有序集。
* 集合就是一組文檔
* GridFS(一種用於存儲大文件的協議)使用子集合來存儲文件的元數據,這樣可以很好與文件內容塊很好地隔離開來。
* 在MongoDB中,多個文檔組成集合,而多個集合可以組成數據庫。
* admin庫 從身份驗證的角度來講,這是root數據庫
* local庫 這個數據庫永遠都不可以複製
* config庫 MongoDB用於分片設置時,分片信息就會存儲在config數據庫中。
* 在啓動MongoDB前,先創建數據目錄,如 mkdir -p /data/db/
* mongod還會啓動一個非常基本的HTTP服務器,通過瀏覽器訪問http://localhost:28017,能獲取數據庫的管理信息
* shell是一個功能完備的javascript解釋器,可運行任何JavaScript程序。
* MongoDB在保留JSON基本鍵/值對特性的基礎上,添加了(布爾、數字,字符串、null,數組、對象)其他一些數據類型:日期、正則表達式、內嵌文檔、對象id ObjectId()、二進制數據、代碼
* shell根據本地市區設置顯示日期對象。然而,數據庫中存儲的日期僅爲新紀元以來的毫秒數,並未存儲相應的時區。
* 內嵌文檔:文檔可以作爲鍵的值,這樣的文檔就是內嵌文檔
* _id和ObjectId,每個文檔必須有一個"_id"鍵,這個鍵的值可以是任何數據類型的,默認是個ObjectId對象。
* ObjectId使用12字節的存儲空間,是一個由24個十六進制數字組成的字符串。0-3位爲時間戳,4-6位爲機器,7-8位爲PID,9-11位爲計數器。
* 因爲設計MongoDB的初衷就是用作分佈式數據庫,所以能夠在分片環境中生成唯一的標識符非常重要。爲了確保同一臺機器上併發的多個進程產生的ObjectId是唯一的,ObjectId使用了進程標識符PID.
* MongoDB的哲學:能交給客戶端驅動程序來做的事情就不要交給服務器來做。
* 某些腳本會被頻繁加載,可以將他們添加到mongorc.js中,這個文件會在啓動shell時自動運行。
* mongorc.js最常見的用途之一是移除那些比較"危險"的shell輔助函數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章