標籤:程式 支援 模式 高效能 使用者 大小 就會 管道 功能
what‘s the MongoDB
MongoDB是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。他支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料類型。Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似於物件導向的查詢語言,幾乎可以實作類別似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。MongoDB具有易用性、易擴充性、功能豐富、效能卓越的優勢。
易用性:
MongoDB是一個面向文檔(document-oriented)的資料庫,而不是關係型資料庫。
不採用關係型主要是為了獲得更好得擴充性。當然還有一些其他好處,與關聯式資料庫相比,面向文檔的資料庫不再有“行“(row)的概念取而代之的是更為靈活的“檔”(document)模型。
通過在文檔中嵌入文檔和數組,面向文檔的方法能夠僅使用一條記錄來表現複雜的層級關係,這與現代的物件導向語言的開發人員對資料的看法一致。
另外,不再有預定義模式(predefined schema):文檔的鍵(key)和值(value)不再是固定的類型和大小。由於沒有固定的模式,根據需要添加或刪除欄位變得更容易了。通常由於開發人員能夠進行快速迭代,所以開發進程得以加快。而且,實驗更容易進行。開發人員能嘗試大量的資料模型,從中選一個最好的。
易擴充性:
應用程式資料集的大小正在以不可思議的速度增長。隨著可用頻寬的增長和儲存空間價格的下降,即使是一個小規模的應用程式,需要儲存的資料量也可能大的驚人,甚至超出
了很多資料庫的處理能力。過去非常罕見的T級資料,現在已經是司空見慣了。
由於需要儲存的資料量不斷增長,開發人員面臨一個問題:應該如何擴充資料庫,分為縱向擴充和橫向擴充,縱向擴充是最省力的做法,但缺點是大型主機一般都非常貴,而且
當資料量達到機器的物理極限時,花再多的錢也買不到更強的機器了,此時選擇橫向擴充更為合適,但橫向擴充帶來的另外一個問題就是需要管理的機器太多。
MongoDB的設計採用橫向擴充。面向文檔的資料模型使它能很容易地在多台伺服器之間進行資料分割。MongoDB能夠自動處理跨叢集的資料和負載,自動重新分配文檔,以及將使用者的請求路由到正確的機器上。這樣,開發人員就能夠集中精力編寫應用程式,而不需要再去考慮如何擴充的問題。如果一個叢集需要更大的容量,只需要向叢集添加新伺服器MongoDB就會自動將現有的資料向新伺服器傳送。
功能豐富:
MongoDB作為一款通用型資料庫,除了能夠建立、讀取、更新和刪除資料之外,還提供了一系列不斷擴充的獨特功能
- 索引:支援通用二級索引,允許多種快速查詢,且提供唯一索引、複合索引、地理空間索引、全文索引
- 彙總:支援彙總管道,使用者能通過簡單的片段建立複雜的集合,並通過資料庫自動最佳化
- 特殊的集合類型:支援存在時間有限的集合,適用於那些將在某個時刻到期的資料,如會話session。類似地,MongoDB也支援固定大小的集合,用於儲存近期資料,如日誌
- 檔案儲存體:支援一種非常易用的協議,用於儲存大檔案和檔案中繼資料。MongoDB並不具備一些在關係型資料庫中很普遍的功能,如連結join和複雜的多行事務。省略這些的功能是處於架構上的考慮,或者說為了得到更好的擴充性,因為在分布式系統中這兩個功能難以高效地實現
效能卓越:
MongoDB的一個主要目標是提供卓越的效能,這很大程度上決定了MongoDB的設計。MongoDB把儘可能多的記憶體用作緩衝cache,視圖為每次查詢自動選擇正確的索引。總之各方面的設計都旨在保持它的高效能雖然MongoDB非常強大並試圖保留關係型資料庫的很多特性,但它並不追求具備關係型資料庫的所有功能。只要有可能,資料庫伺服器就會將處理邏輯交給用戶端。這種精簡方式的設計是MongoDB能夠實現如此高效能的原因之一。
安裝
好,以上都是廢話,根本無需多看。接下來進入正題部分。
資料庫——MongoDB