1. 程式人生 > >Mongodb Mysql NoSQL的區別和聯絡

Mongodb Mysql NoSQL的區別和聯絡

MongoDB

什麼是MongoDB

MongoDB是一個基於分散式檔案儲存的資料庫,由C++語言編寫,皆在為WEB應用提供可擴充套件的高效能資料儲存解決方案

MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。它支援的資料結構非常鬆散,是類似於Jsonbson 格式,因此可以儲存比較複雜的資料型別,MongoDB最大的特點是它支援的查詢語言方法非常強大,其語言的特點類似於面向物件的查詢語言,幾乎可以實現類似於關係資料庫單表查詢的絕大部分功能。而且支援對資料建立索引

MongoDB 是由C++語言編寫的,是一個基於分散式檔案儲存的開源資料庫系統。


在高負載的情況下,新增更多的節點,可以保證伺服器效能。
MongoDB 旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。
MongoDB 將資料儲存為一個文件,資料結構由鍵值(key=>value)對組成。
MongoDB 文件類似於 JSON 物件。欄位值可以包含其他文件,陣列及文件陣列。

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的擁護者們提倡運用非關係型的資料儲存,相對於鋪天蓋地的關係型資料庫運用,這一概念無疑是一種全新的思維的注入。

關係型資料庫中的表都是儲存一些格式化的資料結構,每條記錄的欄位的組成都一樣,即使不是每條記錄都需要所有的欄位,但資料庫會為每條資料分配所有的欄位。而非關係型資料庫以

鍵值對(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資料庫通常都是開源的。