1. 程式人生 > >MongoDB入門一之基本概念

MongoDB入門一之基本概念

一.資料庫的分類

目前的資料庫主要分為關係型資料庫非關係型資料

關係型資料庫

  •        通過SQL結構化查詢和儲存語句,最常見的就是Oracle和MySQL
  •        保持資料一致性理論,遵循ACID原理

非關係型資料庫

  • Not Only SQL,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱,典型產品memcached (純記憶體),redis(持久化快取),mongodb(文件的資料庫) 
  • 用於超大規模資料的儲存,這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件
  • CAP定理 ,高效能,高可用性和可伸縮性

二.MongoDB的概念

MongoDB是一個基於分散式檔案儲存的開源資料庫,由c++語言編寫。MongoDB 旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。它是非關係型資料庫中功能最豐富,最像關係型資料庫的。它支援的資料結構非常鬆散,是類似jsonbson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是它支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引

MongoDB 的設計目標是高效能、可擴充套件、易部署、易使用,儲存資料非常方便。其主要功能特性如下:

(1)面向集合儲存,容易儲存物件型別的資料。在MongoDB 中資料被分組儲存在集合中,集合類似RDBMS 中的表,一個集合中可以儲存無限多的文件。

(2)模式自由,採用無模式結構儲存。在MongoDB 中集合中儲存的資料是無模式的文件,採用無模式儲存資料是集合區別於RDBMS 中的表的一個重要特徵。

(3)支援完全索引,可以在任意屬性上建立索引,包含內部物件。MongoDB的索引和RDBMS 的索引基本一樣,可以在指定屬性、內部物件上建立索引以提高查詢的速度。除此之外,MongoDB 還提供建立基於地理空間的索引的能力。

(4)支援查詢。MongoDB 支援豐富的查詢操作,MongoDB 幾乎支援SQL中的大部分查詢。

(5)強大的聚合工具。MongoDB 除了提供豐富的查詢功能外,還提供強大的聚合工具,如count、group 等,支援使用MapReduce 完成複雜的聚合任務。

(6)支援複製和資料恢復。MongoDB 支援主從複製機制,可以實現資料備份、故障恢復、讀擴充套件等功能。而基於副本集的複製機制提供了自動故障恢復的功能,確保了叢集資料不會丟失。

(7)使用高效的二進位制資料儲存,包括大型物件(如視訊)。使用二進位制格式儲存,可以儲存任何型別的資料物件。

(8)自動處理分片,以支援雲端計算層次的擴充套件。MongoDB 支援叢集自動切分資料,對資料進行分片可以使叢集儲存更多的資料,實現更大的負載,也能保證儲存的負載均衡。

(9)支援Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++語言的驅動程式,MongoDB 提供了當前所有主流開發語言的資料庫驅動包,開發人員使用任何一種主流開發語言都可以輕鬆程式設計,實現訪問MongoDB 資料庫。

(10)檔案儲存格式為BSON(JSON 的一種擴充套件)。BSON 是對二進位制格式的JSON 的簡稱,BSON 支援文件和陣列的巢狀。

(11)可以通過網路遠端訪問MongoDB 資料庫。

MongoDB的基本概念有文件、集合和資料庫:

       文件:

       文件是基本單位,類似於關係資料庫中的行,比行稍微複雜。多個鍵值對有序的放在一起就構成了文件。格式如下:

{"name": "mongo", "value": "hello"}

key: 必須為字串型別。

value:可以包含如下型別。

● 基本型別,例如,string,int,float,timestamp,binary 等型別。

● 一個document。

● 陣列型別。

     

      集合:

      集合就是一組文件,類似於關係資料庫中的表,但是可以儲存不同結構的文件。例如,{“hello,word”:“Mike”}和{“foo”: 3},它們的鍵不同,值的型別也不同,但是它們可以存放在同一個集合中,也就是不同模式的文件都可以放在同一個集合中。

     資料庫:

     多個文件構成集合,多個集合構成資料庫。一個Mongo例項可以承載多個數據庫,資料庫之間可以看做相互獨立,它們有獨立的許可權控制。在磁碟上,不同的資料庫存放在不同的檔案中。

 

參考連結:

https://baike.baidu.com/item/mongodb/60411

https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

https://blog.csdn.net/xin_ge_cheng_xu/article/details/79663549