如何定義NoSQL

openkk 12年前發布 | 24K 次閱讀 NOSQL

如何定義NoSQL

本文的作者 Martin Fowler

        [本文英文原文鏈接:NosqlDefinition ]

        本文的作者是著名的技術作家、敏捷軟件開發宣言的編寫人 Martin Fowler,本文是他在編寫一本關于 NoSQL 的新書《NoSQL Distilled》時附帶寫出的一篇博客。

        當我們開始著手寫《NosqlDistilled》的時候,我們遇到了一個棘手的問題——要寫什么?究竟什么是 NoSQL 數據庫?對這個概念我們沒有發現一個很權威的定義,沒有任何商標注冊,沒有標準化組織,甚至沒有一個宣言。

        NoSQL 這個術語最初出現在 2009 年 6 月 11 日在舊金山由 Johan Oskarsson 組織的一個非正式的會議上。與會人員來自 Voldemort,

        Cassandra, Dynomite, HBase, Hypertable, CouchDB, VPork, 以及 MongoDB 的公司。這個詞迅速的被人們注意到,有人認為只有出席了這次會議的幾個數據庫公司的產品才是 NoSQL。

        事實上,就是對 NoSQL 這個名字本身的理解也是有分歧的:很多 NoSQL 的倡導者認為它不僅僅指的是”No” to SQL,應該把它理解成 Not Noly SQL 才對。對于此,我認為,應該從目前的數據庫生態環境中分離出一個獨立的數據庫類型,這樣對 NoSQL 的未來更有好處。當我們說“x 是一個 NoSQL 數據庫”時,我認為把 NoSQL 解釋成“Not Only”是愚蠢的,因為這會讓這個術語變得沒有價值。(因為這樣一來你實際上可以認為 SQL Server 也是一個 NoSQL 數據庫)。我們應該把 NoSQL 的“not only”做另外一種理解——盡管這個時候我更愿意使用 PolyglotPersistence 這個詞。

        雖然有這么多的討論,定義如何才是一個 NoSQL 數據庫仍然不那么容易。難道所有不使用 SQL 的數據庫都有資格叫這個名字嗎?那如何看待那些更老的數據庫如 IMSMUMPS 呢?如何看待那些沒有 SQL 的關系型數據庫系統(例如早期的 Ingres)?如果有人試圖在這最初的八種數據庫上外掛一個 SQL 接口呢?

        所以,對于我們這本書來說,我們采取的觀點是,NoSQL 是目前的數據庫家族的外來者。它們有些通用的特征,但沒有一個是被明確定義的。

  • 不使用關系數據庫模型(或 SQL 語言)
  • 開源
  • 針對大型集群而設計
  • 基于 21 世紀互聯網特征的需求
  • 沒有 schema,可以在任何時候向一條記錄添加新字段

        雖然在軟件產業里我們已經習慣了這種模糊的邊界定義,但我承認當看到又多了這樣一個定義后,心里還是有些不爽。但重要的是,在我們以后數十年的開發工作中,這些數據庫提供了我們重要的補充。在未來普遍使用的過程中,這些不清晰的定義頂多就像一個蚊子的叮咬。
來自: 外刊IT評論

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!