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

MongoDB入門一:基本概念

一.資料庫的分類

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

關係型資料庫

  • 通過SQL結構化查詢和儲存語句,最常見的就是Oracle和MySQL

  • 保持資料一致性理論,遵循ACID原理

非關係型資料庫

- Not Only SQL,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱,典型產品memcached (純記憶體),redis(持久化快取),mongodb(文件的資料庫)

- 用於超大規模資料的儲存,這些型別的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴充套件

- CAP定理 ,高效能,高可用性和可伸縮性

二.MongoDB的概念

MongoDB是一個開源文件資料庫(Document Database)

,其具有高效能、高可用性和自動縮放的特性。

1.主要特性

高效能

MongoDB具有高效能的資料儲存功能。尤其是下面兩方面:

- 對嵌入式資料模型的支援減少了資料庫系統的I/O互動

- 文件和資料的鍵可以建立索引,提高查詢效率

豐富的查詢語言

MongoDB提供豐富的查詢語言,除了支援增刪改查(CRUD)操作,還支援以下操作:

- 資料聚合

- 文字搜尋和地理空間搜素

高可用性

MongoDB的複製工具,也稱為副本集,有如下特點:

- 自動的故障轉移機制

- 資料備份

水平擴充

MongoDB的核心功能之一就是水平可擴充套件:

- 通過分片將資料分佈在叢集機器中

- 從3.4開始,MongoDB支援基於碎片鍵建立資料區域。在一個平衡的叢集中,MongoDB只將區域覆蓋的讀寫定向到區域內的碎片。有關更多資訊,請參閱

區域手冊頁

支援多儲存引擎

- WiredTiger儲存引擎(包括對靜止加密的支援)

- 記憶體儲存引擎

- MMAPv1儲存引擎(MongoDB 4.0棄用)

2.文件、集合和資料庫的概念

文件:

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

{“name”: “mongo”, “value”: “hello”}

key: 必須為字串型別。

value:可以包含如下型別。

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

● 一個document。

● 陣列型別。

使用文件的優勢:

- 在許多程式語言中,文件對應其本地的資料型別

- 嵌入式的文件和陣列減少了資料連線的代價

- 動態模式的支援使其靈活多變

集合:

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

資料庫:

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

參考連結: