NoSQL簡介

NoSQL簡介(菜鳥教程:http://www.runoob.com/mongodb/nosql.html)

NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。

在現代的計算系統上每天網絡上都會產生龐大的數據量。

這些數據有很大一部分是由關系數據庫管理系統(RDMBSs)來處理。 1970年 E.F.Codd's提出的關系模型的論文 "A relational model of data for large shared data banks",這使得數據建模和應用程序編程更加簡單。

通過應用實踐證明,關系模型是非常適合于客戶服務器編程,遠遠超出預期的利益,今天它是結構化數據存儲在網絡和商務應用的主導技術。

NoSQL 是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的數據存儲,相對于鋪天蓋地的關系型數據庫運用,這一概念無疑是一種全新的思維的注入。

關系型數據庫遵循ACID規則

事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性:

1、A (Atomicity) 原子性

原子性很容易理解,也就是說事務里的所有操作要么全部做完,要么都不做,事務成功的條件是事務里的所有操作都成功,只要有一個操作失敗,整個事務就失敗,需要回滾。

比如銀行轉賬,從A賬戶轉100元至B賬戶,分為兩個步驟:1)從A賬戶取100元;2)存入100元至B賬戶。這兩步要么一起完成,要么一起不完成,如果只完成第一步,第二步失敗,錢會莫名其妙少了100元。

2、C (Consistency) 一致性

一致性也比較容易理解,也就是說數據庫要一直處于一致的狀態,事務的運行不會改變數據庫原本的一致性約束。

例如現有完整性約束a+b=10,如果一個事務改變了a,那么必須得改變b,使得事務結束后依然滿足a+b=10,否則事務失敗。

3、I (Isolation) 獨立性

所謂的獨立性是指并發的事務之間不會互相影響,如果一個事務要訪問的數據正在被另外一個事務修改,只要另外一個事務未提交,它所訪問的數據就不受未提交事務的影響。

比如現有有個交易是從A賬戶轉100元至B賬戶,在這個交易還未完成的情況下,如果此時B查詢自己的賬戶,是看不到新增加的100元的。

4、D (Durability) 持久性

持久性是指一旦事務提交后,它所做的修改將會永久的保存在數據庫上,即使出現宕機也不會丟失。

分布式系統

分布式系統(distributed system)由多臺計算機和通信的軟件組件通過計算機網絡連接(本地網絡或廣域網)組成。

分布式系統是建立在網絡之上的軟件系統。正是因為軟件的特性,所以分布式系統具有高度的內聚性和透明性。

因此,網絡和分布式系統之間的區別更多的在于高層軟件(特別是操作系統),而不是硬件。

分布式系統可以應用在在不同的平臺上如:Pc、工作站、局域網和廣域網上等。

分布式計算的優點

可靠性(容錯) :

分布式計算系統中的一個重要的優點是可靠性。一臺服務器的系統崩潰并不影響到其余的服務器。

可擴展性:

在分布式計算系統可以根據需要增加更多的機器。

資源共享:

共享數據是必不可少的應用,如銀行,預訂系統。

靈活性:

由于該系統是非常靈活的,它很容易安裝,實施和調試新的服務。

更快的速度:

分布式計算系統可以有多臺計算機的計算能力,使得它比其他系統有更快的處理速度。

開放系統:

由于它是開放的系統,本地或者遠程都可以訪問到該服務。

更高的性能:

相較于集中式計算機網絡集群可以提供更高的性能(及更好的性價比)。

分布式計算的缺點

故障排除: :

故障排除和診斷問題。

軟件:

更少的軟件支持是分布式計算系統的主要缺點。

網絡:

網絡基礎設施的問題,包括:傳輸問題,高負載,信息丟失等。

安全性:

開發系統的特性讓分布式計算系統存在著數據的安全性和共享的風險等問題。

什么是NoSQL?

NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。

NoSQL用于超大規模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。

為什么使用NoSQL ?

今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日志已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了, NoSQL數據庫的發展也卻能很好的處理這些大的數據。

實例

社會化關系網:

Each record: UserID1, UserID2

Separate records: UserID, first_name,last_name, age, gender,...

Task: Find all friends of friends of friends of ... friends of a given user.

Wikipedia 頁面 :

Large collection of documents

Combination of structured and unstructured data

Task: Retrieve all pages regarding athletics of Summer Olympic before 1950.

RDBMS vs NoSQL

RDBMS

- 高度組織化結構化數據

- 結構化查詢語言(SQL) (SQL)

- 數據和關系都存儲在單獨的表中。

- 數據操縱語言,數據定義語言

- 嚴格的一致性

- 基礎事務

NoSQL

- 代表著不僅僅是SQL

- 沒有聲明性查詢語言

- 沒有預定義的模式

-鍵 - 值對存儲,列存儲,文檔存儲,圖形數據庫

- 最終一致性,而非ACID屬性

- 非結構化和不可預知的數據

- CAP定理

- 高性能,高可用性和可伸縮性

NoSQL 簡史

NoSQL一詞最早出現于1998年,是Carlo Strozzi開發的一個輕量、開源、不提供SQL功能的關系數據庫。

2009年,Last.fm的Johan Oskarsson發起了一次關于分布式開源數據庫的討論[2],來自Rackspace的Eric Evans再次提出了NoSQL的概念,這時的NoSQL主要指非關系型、分布式、不提供ACID的數據庫設計模式。

2009年在亞特蘭大舉行的"no:sql(east)"討論會是一個里程碑,其口號是"select fun, profit from real_world where relational=false;"。因此,對NoSQL最普遍的解釋是"非關聯型的",強調Key-Value Stores和文檔數據庫的優點,而不是單純的反對RDBMS。

CAP定理(CAP theorem)

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

一致性(Consistency)(所有節點在同一時間具有相同的數據)

可用性(Availability)(保證每個請求不管成功或者失敗都有響應)

分隔容忍(Partition tolerance)(系統中任意信息的丟失或失敗不會影響系統的繼續運作)

CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,最多只能同時較好的滿足兩個。

因此,根據 CAP 原理將 NoSQL 數據庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:

CA - 單點集群,滿足一致性,可用性的系統,通常在可擴展性上不太強大。

CP - 滿足一致性,分區容忍必的系統,通常性能不是特別高。

AP - 滿足可用性,分區容忍性的系統,通常可能對一致性要求低一些。

NoSQL的優點/缺點

優點:

- 高可擴展性

- 分布式計算

- 低成本

- 架構的靈活性,半結構化數據

- 沒有復雜的關系

缺點:

- 沒有標準化

- 有限的查詢功能(到目前為止)

- 最終一致是不直觀的程序

BASE

BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定義。

CAP理論的核心是:一個分布式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,最多只能同時較好的滿足兩個。

BASE是NoSQL數據庫通常對可用性及一致性的弱要求原則:

Basically Availble --基本可用

Soft-state --軟狀態/柔性事務。 "Soft state" 可以理解為"無連接"的, 而 "Hard state" 是"面向連接"的

Eventual Consistency --最終一致性 最終一致性, 也是是 ACID 的最終目的。

ACID vs BASE

ACIDBASE

原子性(Atomicity)基本可用(BasicallyAvailable)

一致性(Consistency)軟狀態/柔性事務(Soft state)

隔離性(Isolation)最終一致性 (Eventual consistency)

持久性 (Durable)

NoSQL 數據庫分類

類型部分代表

特點

列存儲Hbase

Cassandra

Hypertable顧名思義,是按列存儲數據的。最大的特點是方便存儲結構化和半結構化數據,方便做數據壓縮,對針對某一列或者某幾列的查詢有非常大的IO優勢。

文檔存儲

MongoDB

CouchDB文檔存儲一般用類似json的格式存儲,存儲的內容是文檔型的。這樣也就有有機會對某些字段建立索引,實現關系數據庫的某些功能。

key-value存儲

Tokyo?Cabinet?/?Tyrant

Berkeley?DB

MemcacheDB

Redis可以通過key快速查詢到其value。一般來說,存儲不管value的格式,照單全收。(Redis包含了其他功能)

圖存儲

Neo4J

FlockDB圖形關系的最佳存儲。使用傳統關系數據庫來解決的話性能低下,而且設計使用不方便。

對象存儲

db4o

Versant通過類似面向對象語言的語法操作數據庫,通過對象的方式存取數據。

xml數據庫

Berkeley?DB?XML

BaseX高效的存儲XML數據,并支持XML的內部查詢語法,比如XQuery,Xpath。

誰在使用

現在已經有很多公司使用了 NoSQL:

Google

Facebook

Mozilla

Adobe

Foursquare

LinkedIn

Digg

McGraw-Hill Education

Vermont Public Radio

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內容