標籤:全文索引 _id 額外 設計 資訊 family 種類 語義 pac
MongoDB簡介
MongoDB在功能和複雜性之間取得了很好的平衡,並且大大簡化了原先十分複雜的任務,它具備支撐今天主流web應用的關鍵功能:索引、複製、分區、豐富的查詢文法,特別靈活的資料模型。與此同時還不犧牲速度。
MongoDB是一款強大、靈活,且易於擴充的通用型資料庫。能擴充出非常多的功能,如二級索引、範圍查詢、排序、彙總,以及地理空間索引。
設計特點
便於使用
MongoDB是一個面向文檔的資料庫,比關係型資料庫有更好的擴充性。用文檔代替行。能夠僅使用一條記錄來表現發展的層次關係。
文檔的鍵和值不再是固定的類型和大小。
易於擴充
MongoDB的設計採用橫向擴充。面向文檔的資料模型使它能很容易的在多台伺服器之間進行資料分割。
MongoDB能自動處理跨叢集的資料和負載,自動重新分配文檔,以及將使用者請求路由到正確的機器上。如果一個叢集需要很大的容量,只需向叢集添加新伺服器,MongoDB就會自動將現有資料向新伺服器傳送。
豐富的功能
MongoDB作為一款通用型資料庫,除了能夠增刪改查之外,還有一系列不斷擴充的獨特功能。
索引
MongoDB支援通用二級索引,允許多種快速查詢,且提供唯一索引、符合索引、地理空間索引,以及全文索引。
彙總
MongoDB支援“彙總管道”。使用者能通過簡單的片段建立複雜的彙總,並通過資料庫自動最佳化。
特殊的集合類型
MongoDB支援存在時間有限的集合,適用於那些將在某個時刻到期的資料,如會話。類似的,MongoDB也支援固定大小的集合,用於儲存近期資料,如日誌。
檔案儲存體
MongoDB支援一種非常易用的協議,用於儲存大檔案和檔案中繼資料。
MongoDB不具備串連和複雜的多行事務
卓越的效能
MongoDB能對文檔進行動態填充,也能預分配資料檔案以利用額外的空間換取穩定的效能。MongoDB把儘可能多的記憶體用作緩衝,試圖為每次查詢自動選擇正確的索引。
MongoDB基礎知識
1.文檔是MongoDB中資料的基本單元,非常類似mysql的行,但更具表現力。
2.集合可以看作是一個擁有動態模式的表。
3.MongoDB的一個執行個體可以擁有多個相互獨立的資料庫,每一個資料庫都擁有自己的集合。
4.每一個文檔都有一個特殊的鍵“_id”,在文檔所屬的集合中是唯一的。
5.MongoDB內建js shell,可用於管理MongoDB的執行個體或資料操作。
文檔(類似mysql的行)
文檔就是索引值對的一個有序集。比如:{“greeting”:”hello world!”,”foo”:3},文檔的鍵是字串。鍵可以是任意utf-8字元。除了少數情況:
- 鍵不能含有\0(Null 字元)。這個字元用於表示鍵的結尾。
- .和$具有特殊意義,只能在特定環境下使用。
MongoDB不但區分類型,而且區分大小寫,{“foo”:3}、{“foo”:”3”}、{“Foo”:3}三個文檔是不同的。
MongoDB的文檔不能有重複的鍵。{“foo”:”3”,”foo”,3}文檔非法。
文檔中的索引值對是有序的。{“x”:1,”y”:2}與{“y”:2,”x”:1}是不同的。
集合(類似mysql中的表)
集合就是一組文檔。
動態模式
集合是動態模式的。這意味著一個集合裡面的文檔可以是各式各樣的。可以放置任何文檔,既然如此,為何還要把相互關聯類型的文檔組織在一起,使用多個集合,而不是通通放在一個集合裡呢?原因如下:
- 難以管理
- 速度不划算,分開查詢多個集合要快得多。
- 把同種類型的文檔放在一個集合裡,資料會更加集中。磁碟尋道操作更少。
- 在一個集合中只放入一種類型的文檔,可以更加有效地對集合進行索引。
命名
集合使用名稱進行標識,可以是任意的utf-8字串,除了以下特殊情況:
- 不能是Null 字元串(“”)
- 不能包含\0字元(Null 字元),這個字元表示集合名的結束。
- 不能以”system.”開頭,這是為系統集合保留的首碼。例如:system.users儲存著資料庫的使用者資訊,system.namespaces儲存著所有資料庫集合的資訊。
- 不能包含保留字元’$’
子集合
組織集合的一種慣例是使用“.”分隔不同命名空間的子集合。為了使組織圖更清晰,比如(blog.posts和blog.authors),雖然子集合沒有任何特別的屬性,但他們卻非常有用。使用子集合來組織資料非常高效。
資料庫
多個集合可以組成資料庫。一個MongoDB執行個體可以承載多個資料庫,每個資料庫擁有0個或多個集合。每個資料庫都有獨立的許可權。不同的資料庫放置在不同的檔案中。
命名
資料庫最終會變成檔案系統裡的檔案,資料庫名就是相應的檔案名稱,因此命名會有很多限制。資料庫通過名稱來標識。可以是任意的utf-8字串,除了以下特殊情況:
- 不能是Null 字元串(“”)
- 不得含有/、\、.、’’、*、<、>、:、|、 ?、$(一個空格)、\0(Null 字元)。基本上,只能使用ASCII中的字母和數字。
- 區分大小寫,為簡單起見,應全部小寫。
- 資料庫名最多64位元組。
保留資料庫名
有一些資料庫名是保留的,可以直接存取這些有特殊語義的資料庫。
admin
從身分識別驗證的角度看,這是“root”資料庫。如果將一個使用者添加到了admin資料庫,將自動獲得所有資料庫的許可權。再者,一些特定的服務端命令也只能從admin資料庫運行,如列出所有資料庫或關閉伺服器。
local
這個資料庫永遠都不可以複製,且一台伺服器上的所有本地集合都可以儲存在這個資料庫中。
config
MongoDB用於分區設定時,分區資訊會儲存在config資料庫中。
MongoDB權威指南第二版學習筆記——MongoDB簡介