mongoDB關係型數據庫的對比

1、基本操做

  1.mongoDB和關係型數據庫對比

    對比項      mongoDB      mysql oraclemysql

    表        集合list        二維表sql

    表的一行數據    文檔document    一條記錄mongodb

    表字段        鍵key        字段fieldshell

    字段值        值value        值value數據庫

    主外鍵        無          PK,FK服務器

    靈活度擴展性      極高        差數據結構

    (1)關係型數據表的record必須保證擁有每個fieldoracle

    (2)mongoDB的每個document的key能夠不同app

    (3)關係型數據查詢使用sql函數

    (4)mongoDB查詢使用內置的find函數--->基於BSON的特出查詢工具

  2.shell基本操做

    1)建立一個數據庫

      (1)若是你須要進入MongoDB後臺管理,你須要先打開mongodb裝目錄的下的bin目錄,而後執行mongo命令文件。

      MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對MongoDB進行操做和管理的交互式環境。當你進入mongoDB後臺後,它默認會連接到 test 文檔(數據庫)

$ cd /usr/local/mongodb/bin
$ ./mongo
MongoDB shell version: 3.0.6
connecting to: test
Welcome to the MongoDB shell.

    (2)因爲它是一個JavaScript shell,您能夠運行一些簡單的算術運算:

> 2+2
4
> 3+6
9

    (3)如今讓咱們插入一些簡單的數據,並對插入的數據進行檢索:

> db.runoob.insert({x:10})  #將數字10插入到runoob的x字段中
WriteResult({ "nInserted" : 1 })
> db.runoob.fin()
2018-10-28T01:00:43.790-0700 E QUERY    [js] TypeError: db.runoob.fin is not a function :
@(shell):1:1
> db.runoob.find()      #查找runoob中的數據
{ "_id" : ObjectId("5bd56c8ff277bf4c61e99120"), "x" : 10 }
>

   3.mongoDB概念解析

      SQL術語/概念      MongoDB術語/概念      解釋/說明

      database          database          數據庫

      table            collection          數據庫表/集合

      row              document        數據記錄行/文檔

      column            fileld          數據字段/域

      index              index          索引

      table joins                        錶鏈接。mon不支持

      primary key          primary key        主鍵,MongoDB自動將_id 字段設置爲主鍵

    圖解:

  4.數據庫

    (1) 一個MongoDB能夠建立多個數據庫。

    (2)MongoDB的默認數據庫爲"db",該數據庫存在於data目錄中

    (3)MongoDB的單個實例能夠容納多個獨立的數據庫,每一個都有本身的集合和權限,不一樣的數據庫放在不一樣的文件中

    (4)"show dbs"能夠顯示全部的數據庫列表

    (5)執行db命令能夠顯示當前數據庫對象或者集合

    (6)使用use命令能夠鏈接到一個指定的數據庫

    (7)

  數據庫也經過名字來標識。數據庫名能夠是知足如下條件的任意UTF-8字符串。

  不能是空字符串("")。

  不得含有' '(空格)、.、$、/、\和\0 (空字符)。

  應所有小寫。

  最多64字節。

  有一些數據庫名是保留的,能夠直接訪問這些有特殊做用的數據庫。  

  admin: 從權限的角度來看,這是"root"數據庫。要是將一個用戶添加到這個數據庫,這個用戶自動繼承全部數據庫的權限。一些特定的服務器端命令也只能從這個數據庫運行,好比列出全部的數據庫或者關閉服務器。  

  local: 這個數據永遠不會被複制,能夠用來存儲限於本地單臺服務器的任意集合

  config: 當Mongo用於分片設置時,config數據庫在內部使用,用於保存分片的相關信息

   5.文檔

     (1)文檔是一組鍵值對(key-value)。MongoDB的文檔不須要設置成相同的字段,而且相同的字段不須要有相同的數據類型,這與關係型數據庫有很大的區別,也是MongoDB很是突出的特色。

{"site":"www.stone.com","name":"石則祺"}

    (2)RDBMS與mongoDB對應的術語

    RDBMS          MongoDB

    數據庫            數據庫

    表格              集合

    行               文檔

    列                字段

    表聯合              嵌入文檔

    主鍵                主鍵

    (3)文檔中的鍵值對是有序的

    (4)文檔中的值不只能夠在雙引號裏面,並且還能夠是其餘幾種數據類型

    (5)mongoDB區分類型和大小寫    

    (6)文檔的鍵是字符串。除了極少數狀況外,鍵值可使用UTF-8字符

   6.集合

    (1)集合就是MongoDB中的文檔組,相似於RDBMS(關係數據庫管理系統)中的表格

    (2)集合存在於數據庫中,集合沒有固定的結構,意味着可在集合彙總插入不一樣的數據格式和數據類型,可是一般狀況下插入的數據都會有必定的關聯性,好比能夠將不一樣的數據結構插入到集合中。當第一個文檔被插入的時候,集合就會被建立

{"site":"www.baidu.com"}
{"site":"www.google.com","name":"google"}
{"site":"www.shizeqi.com","name":"stone","num":5}

  7.合法的集合名

    集合名不能是空字符串""。

    集合名不能含有\0字符(空字符),這個字符表示集合名的結尾。

    集合名不能以"system."開頭,這是爲系統集合保留的前綴。

    用戶建立的集合名字不能含有保留字符。有些驅動程序的確支持在集合名裏面包含,這是由於某些系統生成的集合中包含該字符。除非你要訪問這種系統建立的集合,不然千萬不要在名字裏出現$。

   8.capped collections

Capped collections 就是固定大小的collection。

它有很高的性能以及隊列過時的特性(過時按照插入的順序). 有點和 "RRD" 概念相似。

Capped collections 是高性能自動的維護對象的插入順序。它很是適合相似記錄日誌的功能和標準的 collection 不一樣,你必需要顯式的建立一個capped collection,指定一個 collection 的大小,單位是字節。collection 的數據存儲空間值提早分配的。

Capped collections 能夠按照文檔的插入順序保存到集合中,並且這些文檔在磁盤上存放位置也是按照插入順序來保存的,因此當咱們更新Capped collections 中文檔的時候,更新後的文檔不能夠超過以前文檔的大小,這樣話就能夠確保全部文檔在磁盤上的位置一直保持不變。

因爲 Capped collection 是按照文檔的插入順序而不是使用索引肯定插入位置,這樣的話能夠提升增添數據的效率。MongoDB 的操做日誌文件 oplog.rs 就是利用 Capped Collection 來實現的。

要注意的是指定的存儲大小包含了數據庫的頭信息。

db.createCollection("mycoll", {capped:true, size:100000})
  • 在 capped collection 中,你能添加新的對象。
  • 能進行更新,然而,對象不會增長存儲空間。若是增長,更新就會失敗 。
  • 使用 Capped Collection 不能刪除一個文檔,可使用 drop() 方法刪除 collection 全部的行。
  • 刪除以後,你必須顯式的從新建立這個 collection。
  • 在32bit機器中,capped collection 最大存儲爲 1e9( 1X109)個字節。
相關文章
相關標籤/搜索