Mongodb Mysql NoSQL的區別和聯繫

MongoDB

什麼是MongoDB

MongoDB是一個基於分佈式文件存儲的數據庫,由C++語言編寫,皆在爲WEB應用提供可擴展的高性能數據存儲解決方案mysql

MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構很是鬆散,是相似於Jsonbson 格式,所以能夠存儲比較複雜的數據類型,MongoDB最大的特色是它支持的查詢語言方法很是強大,其語言的特色相似於面向對象的查詢語言,幾乎能夠實現相似於關係數據庫單表查詢的絕大部分功能。並且支持對數據創建索引redis

MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。
在高負載的狀況下,添加更多的節點,能夠保證服務器性能。
MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。
MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。sql

MongoDB的特色

優勢

1.更高的寫負載,MongoDB擁有更高的插入速度。
2.處理很大的規模的單表,當數據表太大的時候能夠很容易的分割表。
3.高可用性,設置M-S不只方便並且很快,MongoDB還能夠快速、安全及自動化的實現節點(數據中心)故障轉移。
4.快速的查詢,MongoDB支持二維空間索引,好比管道,所以能夠快速及精確的從指定位置獲取數據。MongoDB在啓動後會將數據庫中的數據以文件映射的方式加載到內存中。若是內存資源至關豐富的話,這將極大地提升數據庫的查詢速度。
5.非結構化數據的爆發增加,增長列在有些狀況下可能鎖定整個數據庫,或者增長負載從而致使性能降低,因爲MongoDB的弱數據結構模式,添加1個新字段不會對舊錶格有任何影響,整個過程會很是快速。

缺點

1.不支持事務。
2.MongoDB佔用空間過大 。
3.MongoDB沒有成熟的維護工具。

NoSQL

1. NoSQL簡介

NoSQLNot Only SQL),意思是不只僅是SQL」,值的是非關係型數據庫,是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢愈加的高漲,NoSQL的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型數據庫運用,這一律念無疑是一種全新的思惟的注入。mongodb

關係型數據庫中的表都是存儲一些格式化的數據結構,每條記錄的字段的組成都同樣,即便不是每條記錄都須要全部的字段,但數據庫會爲每條數據分配全部的字段。而非關係型數據庫以鍵值對(key-value)存儲,它的結構不固定,每一條記錄能夠有不同的鍵,每條記錄能夠根據須要增長一些本身的鍵值對,這樣就不會侷限於固定的結構,能夠減小一些時間和空間的開銷。數據庫

2. 常見的NoSQL數據庫

CouchDB 數組

Redis安全

MongoDB服務器

Neo4j 數據結構

HBase併發

BigTable(Hadoop經常使用)

2. NoSQL數據庫的優缺點

優勢:

1.簡單的擴展

2.快速的讀寫

3.低廉的成本

4.靈活的數據模型

 

缺點:

1.不提供對SQL的支持

2.支持的特性不夠豐富

3.現有的產品部夠成熟

mongodbmysql的區別

 

什麼是MYSQL

MySQL是一個關係型數據庫管理系統

MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。 

MySQL是一種關係數據庫管理系統,關係數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。

MySQL所使用的 SQL 語言是用於訪問數據庫的最經常使用標準化語言。

MySQL 軟件採用了雙受權政策,分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,通常中小型網站的開發都選擇 MySQL 做爲網站數據庫。

 mongodbNosql的區別

Nosql和關係型數據庫的區別

1.存儲方式

關係型數據庫是表格式的,所以存儲在表的行和列中。他們之間很容易關聯協做存儲,提取數據很方便。而Nosql數據庫則與其相反,他是大塊的組合在一塊兒。一般存儲在數據集中,就像文檔、鍵值對或者圖結構。

2.存儲結構

關係型數據庫對應的是結構化數據,數據表都預先定義告終構(列的定義),結構描述了數據的形式和內容。這一點對數據建模相當重要,雖然預約義結構帶來了可靠性和穩定性,可是修改這些數據比較困難。而Nosql數據庫基於動態結構,使用與非結構化數據。由於Nosql數據庫是動態結構,能夠很容易適應數據類型和結構的變化。

3.存儲規範

關係型數據庫的數據存儲爲了更高的規範性,把數據分割爲最小的關係表以免重複,得到精簡的空間利用。雖然管理起來很清晰,可是單個操做設計到多張表的時候,數據管理就顯得有點麻煩。而Nosql數據存儲在平面數據集中,數據常常可能會重複。單個數據庫不多被分隔開,而是存儲成了一個總體,這樣整塊數據更加便於讀寫

4.存儲擴展 

這多是二者之間最大的區別,關係型數據庫是縱向擴展,也就是說想要提升處理能力,要使用速度更快的計算機。由於數據存儲在關係表中,操做的性能瓶頸可能涉及到多個表,須要經過提高計算機性能來克服。雖然有很大的擴展空間,可是最終會達到縱向擴展的上限。而Nosql數據庫是橫向擴展的,它的存儲自然就是分佈式的,能夠經過給資源池添加更多的普通數據庫服務器來分擔負載。

5.查詢方式 

關係型數據庫經過結構化查詢語言來操做數據庫(就是咱們一般說的SQL)。SQL支持數據庫CURD操做的功能很是強大,是業界的標準用法。而Nosql查詢以塊爲單元操做數據,使用的是非結構化查詢語言(UnQl),它是沒有標準的。關係型數據庫表中主鍵的概念對應Nosql中存儲文檔的ID。關係型數據庫使用預約義優化方式(好比索引)來加快查詢操做,而Nosql更簡單更精確的數據訪問模式。

6.事務 

關係型數據庫遵循ACID規則(原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)),而Nosql數據庫遵循BASE原則(基本可用(Basically Availble)、軟/柔性事務(Soft-state )、最終一致性(Eventual Consistency))。因爲關係型數據庫的數據強一致性,因此對事務的支持很好。關係型數據庫支持對事務原子性細粒度控制,而且易於回滾事務。而Nosql數據庫是在CAP(一致性、可用性、分區容忍度)中任選兩項,由於基於節點的分佈式系統中,很難所有知足,因此對事務的支持不是很好,雖然也可使用事務,可是並非Nosql的閃光點。

7.性能

關係型數據庫爲了維護數據的一致性付出了巨大的代價,讀寫性能比較差。在面對高併發讀寫性能很是差,面對海量數據的時候效率很是低。而Nosql存儲的格式都是key-value類型的,而且存儲在內存中,很是容易存儲,並且對於數據的 一致性是 弱要求。Nosql無需sql的解析,提升了讀寫性能。

8.受權方式

關係型數據庫一般有SQL Server,Mysql,Oracle。主流的Nosql數據庫有redis,memcache,MongoDb。大多數的關係型數據庫都是付費的而且價格昂貴,成本較大,而Nosql數據庫一般都是開源的。

相關文章
相關標籤/搜索