如何定義NoSQL
當(dāng)我們開(kāi)始著手寫(xiě)《NosqlDistilled》的時(shí)候,我們遇到了一個(gè)棘手的問(wèn)題——要寫(xiě)什么?究竟什么是NoSQL數(shù)據(jù)庫(kù)?對(duì)這個(gè)概念我們沒(méi)有發(fā)現(xiàn)一個(gè)很權(quán)威的定義,沒(méi)有任何商標(biāo)注冊(cè),沒(méi)有標(biāo)準(zhǔn)化組織,甚至沒(méi)有一個(gè)宣言。
本文的作者M(jìn)artin Fowler
NoSQL這個(gè)術(shù)語(yǔ)最初出現(xiàn)在2009年6月11日在舊金山由Johan Oskarsson組織的一個(gè)非正式的會(huì)議上。與會(huì)人員來(lái)自Voldemort,Cassandra, Dynomite, HBase, Hypertable, CouchDB, VPork, 以及MongoDB的公司。這個(gè)詞迅速的被人們注意到,有人認(rèn)為只有出席了這次會(huì)議的幾個(gè)數(shù)據(jù)庫(kù)公司的產(chǎn)品才是NoSQL。
事實(shí)上,就是對(duì)NoSQL這個(gè)名字本身的理解也是有分歧的:很多NoSQL的倡導(dǎo)者認(rèn)為它不僅僅指的是”No” to SQL,應(yīng)該把它理解成Not Noly SQL才對(duì)。對(duì)于此,我認(rèn)為,應(yīng)該從目前的數(shù)據(jù)庫(kù)生態(tài)環(huán)境中分離出一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)類(lèi)型,這樣對(duì)NoSQL的未來(lái)更有好處。當(dāng)我們說(shuō)“x 是一個(gè)NoSQL數(shù)據(jù)庫(kù)”時(shí),我認(rèn)為把NoSQL解釋成“Not Only”是愚蠢的,因?yàn)檫@會(huì)讓這個(gè)術(shù)語(yǔ)變得沒(méi)有價(jià)值。(因?yàn)檫@樣一來(lái)你實(shí)際上可以認(rèn)為SQL Server也是一個(gè)NoSQL數(shù)據(jù)庫(kù))。我們應(yīng)該把NoSQL的“not only”做另外一種理解——盡管這個(gè)時(shí)候我更愿意使用PolyglotPersistence這個(gè)詞。
雖然有這么多的討論,定義如何才是一個(gè)NoSQL數(shù)據(jù)庫(kù)仍然不那么容易。難道所有不使用SQL的數(shù)據(jù)庫(kù)都有資格叫這個(gè)名字嗎?那如何看待那些更老的數(shù)據(jù)庫(kù)如IMS 或 MUMPS呢?如何看待那些沒(méi)有SQL的關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)(例如早期的Ingres)?如果有人試圖在這最初的八種數(shù)據(jù)庫(kù)上外掛一個(gè)SQL接口呢?
所以,對(duì)于我們這本書(shū)來(lái)說(shuō),我們采取的觀點(diǎn)是,NoSQL是目前的數(shù)據(jù)庫(kù)家族的外來(lái)者。它們有些通用的特征,但沒(méi)有一個(gè)是被明確定義的。
- 不使用關(guān)系數(shù)據(jù)庫(kù)模型(或SQL語(yǔ)言)
- 開(kāi)源
- 針對(duì)大型集群而設(shè)計(jì)
- 基于21世紀(jì)互聯(lián)網(wǎng)特征的需求
- 沒(méi)有schema,可以在任何時(shí)候向一條記錄添加新字段
雖然在軟件產(chǎn)業(yè)里我們已經(jīng)習(xí)慣了這種模糊的邊界定義,但我承認(rèn)當(dāng)看到又多了這樣一個(gè)定義后,心里還是有些不爽。但重要的是,在我們以后數(shù)十年的開(kāi)發(fā)工作中,這些數(shù)據(jù)庫(kù)提供了我們重要的補(bǔ)充。在未來(lái)普遍使用的過(guò)程中,這些不清晰的定義頂多就像一個(gè)蚊子的叮咬。
英文原文:NosqlDefinition
原文鏈接:http://www.aqee.net/nosqldefinition/
【編輯推薦】