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