MongoDB簡介和基本概念(一)

NoSQL簡介

  NoSQL(Not Only SQL ),意即“不僅僅是SQL” ,指的是非關係型的數據庫 。是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型數據庫運用,這一概念無疑是一種全新的思維的注入。
  關係型數據庫中的表都是存儲一些結構化的數據,每條記錄的字段的組成都一樣,即使不是每條記錄都需要所有的字段,但數據庫會爲每條數據分配所有的字段。而非關係型數據庫以鍵值對(key-value)存儲,它的結構不固定,每一條記錄可以有不一樣的鍵,每條記錄可以根據需要增加一些自己的鍵值對,這樣就不會侷限於固定的結構,可以減少一些時間和空間的開銷。

常見的NoSql(非關係型數據庫)數據庫

CouchDB
Redis
MongoDB
Neo4j
HBase
BigTable
這裏寫圖片描述

NoSql數據庫優缺點

在優勢方面主要體現在下面幾點:- 簡單的擴展
快速的讀寫
低廉的成本
靈活的數據模型

在不足方面主要有下面幾點:
不提供對SQL的支持
支持的特性不夠豐富
現有的產品不夠成熟

MongoDB簡介

MongoDB是用C++語言編寫的非關係型數據庫。特點是高性能、易部署、易使用,存儲數據十分方便,主要特性有:
面向集合存儲,易於存儲對象類型的數據
模式自由
支持動態查詢
支持完全索引,包含內部對象
支持複製和故障恢復
使用高效的二進制數據存儲,包括大型對象
文件存儲格式爲BSON(一種JSON的擴展)

MongoDB和關係數據庫的對比

對比項 mongoDB mysql oracle
集合 二維表table
表的一行數據 文檔document 一條記錄recoder
表字段 鍵key 字段filed
字段值 值value 值value
主外鍵 PK FK
靈活度擴展性 極高

MongoDB基本概念

  • 文檔(document)是MongoDB中數據的基本單元,非常類似於關係型數據庫系統中的行(但是比行要複雜的多)。
  • 集合(collection)就是一組文檔,如果說MongoDB中的文檔類似於關係型數據庫中的行,那麼集合就如同表。
  • MongoDB的單個計算機可以容納多個獨立的數據庫,每一個數據庫都有自己的集合和權限。
  • MongoDB自帶簡潔但功能強大的JavaScript shell,這個工具對於管理MongoDB實例和操作數據作用非常大。
  • 每一個文檔都有一個特殊的鍵”_id”,它在文檔所處的集合中是唯一的,相當於關係數據庫中的表的主鍵。

MongoDB數據類型

數據類型 描述 舉例
null 表示空值或者未定義的對象 {“x”:null}
布爾值 真或者假:true或者false {“x”:true}
32位整數 32位整數。shell是不支持該類型的,shell中默認會轉換成64位浮點數
64位整數 64位整數。shell是不支持該類型的,shell中默認會轉換成64位浮點數
64位浮點數 64位浮點數。shell中的數字就是這一種類型 {“x”:3.14,”y”:3}
字符串 UTF-8字符串 {“foo”:”bar”}
符號 shell不支持,shell會將數據庫中的符號類型的數據自動轉換成字符串
對象id 文檔的12字節的唯一id {“id”: ObjectId()}
日期 從標準紀元開始的毫秒數 {“date”:new Date()}
正則表達式 文檔中可以包含正則表達式,遵循JavaScript的語法 {“foo”:/foobar/i}
代碼 文檔中可以包含JavaScript代碼 {“x”:function() {}}
未定義 undefined {“x”:undefined}
數組 值的集合或者列表 {“arr”: [“a”,”b”]}
內嵌文檔 文檔可以作爲文檔中某個key的value {“x”:{“foo”:”bar”}}

更多關於mongodb的知識請閱讀官方文檔

發佈了113 篇原創文章 · 獲贊 19 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章