mongoDB入門

來源:互聯網
上載者:User

標籤:

MongoDB是一個基於分布式檔案儲存體的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充的高效能資料儲存解決方案。 MongoDB是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。

在這裡我們有必要先簡單介紹一下非關係型資料庫(NoSQL)

1.什麼是NoSQL

 NoSQL,指的是非關係型的資料庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。 NoSQL用於超大規模資料的儲存。(例如Google或Facebook每天為他們的使用者收集萬億位元的資料)。這些類型的資料存放區不需要固定的模式,無需多餘操作就可以橫向擴充。

2.關係型資料庫 PK 非關係型資料庫
RDBMS  NoSQL 
高度組織化結構化資料  代表著不僅僅是SQL
結構化查詢語言 (SQL)(SQL)  沒有聲明性查詢語言
資料和關係都儲存在單獨的表中。  沒有預定義的模式
資料操縱語言,資料定義語言 (Data Definition Language)  鍵 - 值對儲存,列儲存,文檔儲存,圖形資料庫
嚴格的一致性 最終一致性,而非ACID屬性
基礎事務 非結構化和不可預知的資料
  CAP定理 
  高效能,高可用性和延展性
3.NoSQL分類
類型 部分代表 特點
列儲存

Hbase

Cassandra

Hypertable

顧名思義,是按照列儲存資料的。最大的特點是方便儲存結構化和半結

構化的資料,方便做資料壓縮,對針對某一列或者某幾列的查詢有非常大的IO優勢

文檔儲存

MongoDB

CounchDB

文檔儲存一般用類似json的格式儲存,儲存的內容是文檔型的。這樣也就有有機

會對某些欄位建立索引,實現關聯式資料庫的某些功能。

key-value儲存

Tokyo Cabinet / Tyrant

Berkelery DB

MemcacheDB

Redis

可以通過key快速查詢到其value。一般來說,儲存不管value的格式,

照單全收。(Redis包含了其他功能)

圖儲存

Neo4J

FlockDB

圖形關係的最佳儲存。使用傳統關聯式資料庫來解決的話效能低下,

而且設計使用不方便。

Object Storage Service

db4o

Versant

通過類似物件導向語言的文法操作資料庫,通過對象的方式儲存資料。
xml資料庫

Berkeley DB XML

BaseX

高效的儲存XML資料,並儲存XML的內部查詢文法,比如XQuery,Xpath。
4.CAP原則

在電腦科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer‘s theorem), 它指出對於一個分散式運算系統來說,不可能同時滿足以下三點:

  • 一致性(Consistency) (所有節點在同一時間具有相同的資料)
  • 可用性(Availability) (保證每個請求不管成功或者失敗都有響應)
  • 分隔容忍(Partition tolerance) (系統中任意資訊的丟失或失敗不會影響系統的繼續運作)

CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,最多隻能同時較好的滿足兩個。 因此,根據 CAP 原理將 NoSQL 資料庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類: CA - 單點叢集,滿足一致性,可用性的系統,通常在可擴充性上不太強大。 CP - 滿足一致性,分區容忍必的系統,通常效能不是特別高。 AP - 滿足可用性,分區容忍性的系統,通常可能對一致性要求低一些。

 5.mongodb資料結構

MongoDB的基礎單元——文檔

文檔是MongoDB的核心概念。多個索引值對有序的放置在一起便是文檔。

Js代碼:

1 {"course1":"MongoDB","course2":"hadoop"} 

說明:文檔是有序的,鍵是區分大小寫

集合

集合就是一組文檔。

集合是無模式的,即:一個集合中的文檔可以是各式各樣的例如:

集合代碼:

1 {"course1":"hadoop","course2":"hive"}  2 {"studentName":"小紅"}  

 資料庫

MongoDB中多個集合組成資料庫。一個MongoDB執行個體可以承載多個資料庫,它們之間可視為完全獨立的。每個資料庫有自己的許可權控制

6.關係型資料庫與MongoDB邏輯結構對比

對於習慣了關係型資料庫的朋友們,我將MongoDB與關係型資料庫的邏輯結構進行了對比。

MongoDB 關係型資料庫
文檔(document) 行(row)
集合(collection) 表(table)
資料庫(database) 資料庫(database)
7.測試MongoDB
 1 > show dbs   //顯示資料庫資訊   2 local   (empty)   3 > db  //查看當前連結到那個資料庫   4 test   5 > user test  //使用test資料庫   6 Fri Mar 28 10:20:14 SyntaxError: missing ; before statement (shell):1   7 > use test   8 switched to db test   9 > post = {"title":"love","content":"I love you"}  //定義文檔  10 { "title" : "love", "content" : "I love you" }  11 > db  12 test  13 > db.test.blog.insert(post)  //將文檔插入到集合中  14 > db.test.blog.find()  //查詢集合  15 { "_id" : ObjectId("5334dd149b7a445ea2166559"), "title" : "love", "content" : "I  16  love you" }  17 > post = {"job":"java","city":"wuhan"}  18 { "job" : "java", "city" : "wuhan" }  19 > db.test.blog.insert(post)  20 > db.test.blog.find()  21 { "_id" : ObjectId("5334dd149b7a445ea2166559"), "title" : "love", "content" : "I  22  love you" }  23 { "_id" : ObjectId("5334dd669b7a445ea216655a"), "job" : "java", "city" : "wuhan"  24  }  25 >  
 8.MongoDB中的資料類型

 null

1 {"x":null}

布爾

1 {"x":true}

32位整數

64位整數

64位浮點數

字串

1 {"x":"hi world"}

對象id

日期

1 {"x":new Date()} 

Regex

1 {"x":/foobar/i}

函數

1 {"x":function(){//......}}  

位元據

可以由任意位元組的串組成

最大值

最小值

未定義

1 {"x":undefined}  

數組

1 {"x":["a","b","c"]} 

內嵌文檔

1 {"x":{"foo":"bar"}} 
9._id和ObjectId

 Mongodb中儲存的文檔必須有一個“_id”鍵。這個鍵的值可以是任何類型的,預設是ObjectId對象。在集合中,每個文檔都有唯一的“_id”,來確保集合裡面每個文檔都能被唯一標示。

一個BSON ObjectID是12位元組的值,包含了4位元組的時間戳記(紀元以來的秒數),3位元組機器id,2位元組進程id,和3位元組計數值。注意不同於BSON中的其他欄位,時間戳記和計數值欄位必須儲存為big endian。這是由於會對它們按位元組比較,我們希望大多數情況下保證是升序。它的格式:

0 1 2 3 4 5 6 7 8 9 10 11
time machine pid inc

 轉載:http://zc985552943.iteye.com/blog/2037887

mongoDB入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.