mongodb(一): 基本概念

NoSQL 簡介

  • NoSQL,全名為 Not Only SQL,指的是非關(guān)系型的數(shù)據(jù)庫。
  • 隨著訪問量的上升,網(wǎng)站的數(shù)據(jù)庫性能出現(xiàn)了問題,于是 nosql 被設(shè)計出來。

優(yōu)缺點

  • 優(yōu)點:

(1) 高可擴展性
(2) 分布式計算
(3) 低成本
(4) 架構(gòu)的靈活性,半結(jié)構(gòu)化數(shù)據(jù)
(5) 沒有復雜的關(guān)系

  • 缺點:

(1) 沒有標準化
(2) 有限的查詢功能(到目前為止)
(3) 程序不直觀

分類

類型 部分代表 特點
列存儲 Hbase, Cassandra, Hypertable 顧名思義,是按列存儲數(shù)據(jù)的。最大的特點是方便存儲結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),方便做數(shù)據(jù)壓縮,對針對某一列或者某幾列的查詢有非常大的的 IO 優(yōu)勢。
文檔存儲 MongoDB,CouchDB 文檔存儲一般用類似 json 的格式存儲,存儲的內(nèi)容是文檔型的。這樣也就有機會對某些字段建立索引,實現(xiàn)關(guān)系數(shù)據(jù)庫的某些功能
key-value 存儲 Tokyo Cabinet / Tyrant , Berkeley DB, MemcacheDB, Redis 可以通過 key 快速查詢到其 value。一般來說,存儲不管 value 的格式,照單全收。(Redis 包含了其他功能)
圖存儲 Neo4J 圖形關(guān)系的最佳存儲。使用傳統(tǒng)關(guān)系型數(shù)據(jù)庫來解決的話性能低下,而且設(shè)計使用不方便
對象存儲 db4o, Versant 通過類似面向?qū)ο笳Z言的語法操作數(shù)據(jù)庫,通過對象的方式存儲數(shù)據(jù)
xml數(shù)據(jù)庫 Berkeley DB XML, BaseX 高效的存儲XML數(shù)據(jù)庫,并支持 XML 的內(nèi)部查詢語法,比如 XQuery, XPath

MongoDB 簡介

  • MongoDB 是一個基于分布式文件存儲的 NoSQL 數(shù)據(jù)庫
  • 由 C++ 語言編寫,運行穩(wěn)定,性能高
  • 旨在為 Web 應(yīng)用提供可擴展性的高性能數(shù)據(jù)存儲解決方案

MongoDB 特點

  • 模式自由,可以把不同結(jié)構(gòu)的文檔存儲在同一個數(shù)據(jù)庫里
  • 面向集合的存儲:適合存儲 JSON 風格文件的形式
  • 完整的索引支持:對任何屬性可索引
  • 復制和高可用性:支持服務(wù)器之間的數(shù)據(jù)復制,支持 主-從 模式及服務(wù)器之間的相互復制。復制的主要目的是提供冗余及自動故障轉(zhuǎn)移
  • 自動分片:支持云級別的伸縮性:自動分片功能支持水平的數(shù)據(jù)庫集群,可動態(tài)添加額外的機器
  • 豐富的查詢:支持豐富的查詢表達方式。查詢指令使用 JSON 形式的標記,可輕易查詢文檔中的內(nèi)嵌的對象及數(shù)組
  • 快速就地更新:查詢優(yōu)化器會分析查詢表達式,并生成一個高效的查詢計劃
  • 高效的傳統(tǒng)存儲方式:支持二進制數(shù)據(jù)及大型對象(如照片或圖片)

基本操作

  • MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值 (key=>value) 對組成。
  • MongoDB 文檔類似于 JSON 對象,字段值可以包含其他文檔、數(shù)組、文檔數(shù)組
  • 安裝管理 mongodb 環(huán)境
  • 完成數(shù)據(jù)庫、集合的管理
  • 數(shù)據(jù)的增加、修改、刪除、查詢

名詞

SQL術(shù)語/概念 MongoDB術(shù)語/概念 解釋/說明
database database 數(shù)據(jù)庫
table collection 數(shù)據(jù)庫表/集合
row document 數(shù)據(jù)庫記錄行/文檔
column field 數(shù)據(jù)字段/域
index index 索引
table joins 表連接,MongoDB不支持
primary key primary key 主鍵,MongoDB 自動將 _id 字段設(shè)置為主鍵
  • 三元素:數(shù)據(jù)庫、集合、文檔

集合就是關(guān)系型數(shù)據(jù)庫中的表
文檔對應(yīng)著關(guān)系數(shù)據(jù)庫中的行

  • 文檔,就是一個對象,由鍵值對構(gòu)成,是 json 的擴展 Bson 形式。
{'name':'JayChou', 'gender':'男'}
  • 集合:類似于關(guān)系型數(shù)據(jù)庫中的表,存儲多個文檔,結(jié)構(gòu)不固定,如可以存儲如下文檔在一個集合中
{'name':'guojing', 'gender':'男'}
{'name':'huangrong', 'age':18}
{'book':'shuihuzhuan', 'heros':108}
  • 數(shù)據(jù)庫:是一個集合的物理容器,一個數(shù)據(jù)庫中可以包含多個文檔
  • 一個服務(wù)器通常有多個數(shù)據(jù)庫

服務(wù)端 - mongod

  • 配置文件在 /etc/mongod.conf
  • 默認端口是 27017
  • 啟動:sudo service mongod start
  • 停止:sudo service mongod stop
  • 重啟:sudo service mongod restart

客戶端 - mongo

  • mongo 這個 shell 就是 mongodb 的客戶端,同時也是一個 js 編譯器

mongo

  • 命令

db - 查看當前數(shù)據(jù)庫名稱
db.stats() - 查看當前數(shù)據(jù)庫信息

  • 終端退出連接

exitCtrl+C

  • GUI 客戶端:robomongo
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • NoSql數(shù)據(jù)庫優(yōu)缺點 在優(yōu)勢方面主要體現(xiàn)在下面幾點: 簡單的擴展 快速的讀寫 低廉的成本 靈活的數(shù)據(jù)模型 在不足...
    dreamer_lk閱讀 2,877評論 0 6
  • 一、MongoDB簡介 1.概述 ? MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫,由C++語言編寫。旨在為WE...
    鄭元吉閱讀 1,122評論 0 2
  • MongoDB 是一個基于分布式文件存儲的數(shù)據(jù)庫。由 C++ 語言編寫,旨在為 WEB 應(yīng)用提供可擴展的高性能數(shù)據(jù)...
    LittlePy閱讀 1,682評論 0 4
  • 簡介 MongoDB 是一個基于分布式文件存儲的NoSQL數(shù)據(jù)庫 由C++語言編寫,運行穩(wěn)定,性能高 旨在為 WE...
    大熊_7d48閱讀 37,867評論 1 9
  • MongoDB 1. MongoDB 是一個基于分布式文件存儲的數(shù)據(jù)庫。由 C++ 語言編寫。旨在為 WEB 應(yīng)用...
    Kevinr閱讀 1,716評論 0 3

友情鏈接更多精彩內(nèi)容