新聞中心

- RDBMS(關(guān)系型數(shù)據(jù)庫(kù)):常見的關(guān)系型數(shù)據(jù)庫(kù)有 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL;
- NoSQL(非關(guān)系型數(shù)據(jù)庫(kù)):常見的非關(guān)系型數(shù)據(jù)庫(kù)有 MongoDB、Redis、Voldemort、Cassandra、Riak、Couchbase、CouchDB 等。
這里我們主要來(lái)介紹一下 NoSQL,NoSQL 全稱為“Not only SQL”,它僅僅是一個(gè)概念,用來(lái)表示非關(guān)系型數(shù)據(jù)庫(kù),本教程中將要介紹的 MongoDB 就是非關(guān)系型數(shù)據(jù)庫(kù)的一種。
相對(duì)于 RDBMS(關(guān)系型數(shù)據(jù)庫(kù)),NoSQL 具有以下優(yōu)點(diǎn):
- 易擴(kuò)展:NoSQL 數(shù)據(jù)庫(kù)種類繁多,但它們都有一個(gè)共同的特點(diǎn),那就是都去掉了關(guān)系型數(shù)據(jù)庫(kù)的關(guān)系型特性,數(shù)據(jù)與數(shù)據(jù)之間沒有關(guān)系,這樣就非常容易擴(kuò)展,無(wú)形之間也在架構(gòu)的層面上帶來(lái)了可擴(kuò)展的能力;
- 大數(shù)據(jù)量,高性能:NoSQL 數(shù)據(jù)庫(kù)都具有非常高的讀寫性能,尤其是在處理龐大數(shù)據(jù)時(shí)表現(xiàn)優(yōu)秀;
- 靈活:NoSQL 隨時(shí)都可以存儲(chǔ)任意類型的數(shù)據(jù),無(wú)須提前為要存儲(chǔ)的數(shù)據(jù)建立字段;
- 高可用:NoSQL 在不太影響性能的情況下,就可以方便地實(shí)現(xiàn)高可用的架構(gòu),比如 Cassandra、HBase 模型,通過(guò)復(fù)制模型也能實(shí)現(xiàn)高可用。
NoSQL 簡(jiǎn)史
NoSQL 一詞最早出現(xiàn)于 1998 年,是 Carlo Strozzi 開發(fā)的一個(gè)輕量、開源、不提供 SQL 功能的關(guān)系型數(shù)據(jù)庫(kù)。
2009 年,Johan Oskarsson 發(fā)起了一次關(guān)于分布式開源數(shù)據(jù)庫(kù)的討論,來(lái)自 Rackspace 的 Eric Evans 再次提出了 NoSQL 的概念,這時(shí)的 NoSQL 主要指非關(guān)系型、分布式、不遵循 ACID 原則的數(shù)據(jù)庫(kù)設(shè)計(jì)模式。
為什么使用 NoSQL?
隨著互聯(lián)網(wǎng)的不斷發(fā)展,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)在處理超大規(guī)模數(shù)據(jù)以及開發(fā)高并發(fā)應(yīng)用時(shí)已經(jīng)顯得力不從心了,出現(xiàn)了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL 數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來(lái)的問(wèn)題,特別是大數(shù)據(jù)應(yīng)用的難題。
體系框架
NoSQL 整體框架分為四層,由下至上分別為數(shù)據(jù)持久層(data persistence)、整體分布層(data distribution model)、數(shù)據(jù)邏輯模型層(data logical model)、和接口層(interface),層次之間相輔相成,協(xié)調(diào)工作。
1、數(shù)據(jù)持久層
數(shù)據(jù)持久層定義了數(shù)據(jù)的存儲(chǔ)形式,主要包括基于內(nèi)存、硬盤、內(nèi)存與硬盤相結(jié)合、訂制可插拔四種形式。
- 基于內(nèi)存形式的數(shù)據(jù)存取速度最快,但可能會(huì)造成數(shù)據(jù)丟失;
- 基于硬盤的數(shù)據(jù)可能保存很久,但存取速度較基于內(nèi)存的形式慢;
- 內(nèi)存和硬盤相結(jié)合的形式,結(jié)合了前兩種形式的優(yōu)點(diǎn),既保證了速度,又保證了數(shù)據(jù)不丟失;
- 訂制可插拔則保證了數(shù)據(jù)存取具有較高的靈活性。
2、數(shù)據(jù)分布層
數(shù)據(jù)分布層定義了數(shù)據(jù)是如何分布的,相對(duì)于關(guān)系型數(shù)據(jù)庫(kù),NoSQL 可選的機(jī)制比較多,主要有三種形式:
- CAP 支持:可用于水平擴(kuò)展;
- 多數(shù)據(jù)中心支持:可以保證在橫跨多數(shù)據(jù)中心時(shí)也能夠平穩(wěn)運(yùn)行;
- 動(dòng)態(tài)部署支持:可以在運(yùn)行著的集群中動(dòng)態(tài)地添加或刪除節(jié)點(diǎn)。
3、數(shù)據(jù)邏輯層
數(shù)據(jù)邏輯層表述了數(shù)據(jù)的邏輯表現(xiàn)形式,與關(guān)系型數(shù)據(jù)庫(kù)相比,NoSQL 在邏輯表現(xiàn)形式上相當(dāng)靈活,主要有四種形式:
- 鍵值模型:這種模型在表現(xiàn)形式上比較單一,卻有很強(qiáng)的擴(kuò)展性;
- 列式模型:這種模型相比于鍵值模型能夠支持較為復(fù)雜的數(shù)據(jù),但擴(kuò)展性相對(duì)較差;
- 文檔模型:這種模型對(duì)于復(fù)雜數(shù)據(jù)的支持和擴(kuò)展性都有很大優(yōu)勢(shì);
- 圖模型:這種模型的使用場(chǎng)景不多,通常是基于圖數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)定制的。
4、接口層
接口層為上層應(yīng)用提供了方便的數(shù)據(jù)調(diào)用接口,提供的選擇遠(yuǎn)多于關(guān)系型數(shù)據(jù)庫(kù)。接口層提供了五種選擇,分別是 Rest、Thrift、Map/Reduce、Get/Put 和特定語(yǔ)言 API,使得應(yīng)用程序在與數(shù)據(jù)庫(kù)交互時(shí)更加方便。
NoSQL 分層架構(gòu)并不代表每個(gè)產(chǎn)品在每一層只有一種選擇。相反,這種分層設(shè)計(jì)提供了很大的靈活性和兼容性,每種數(shù)據(jù)庫(kù)在不同層面可以支持多種特性。
適用場(chǎng)景
NoSQL 數(shù)據(jù)庫(kù)在以下的這幾種情況下比較適用:
- 數(shù)據(jù)模型比較簡(jiǎn)單;
- 對(duì)靈活性要求很強(qiáng)的系統(tǒng);
- 對(duì)數(shù)據(jù)庫(kù)性能要求較高;
- 不需要高度的數(shù)據(jù)一致性;
- 對(duì)于給定 key,比較容易映射復(fù)雜值的環(huán)境。
當(dāng)前名稱:NoSQL是什么
網(wǎng)頁(yè)鏈接:http://www.dlmjj.cn/article/cddhgjj.html


咨詢
建站咨詢
