2010-01-31 208 views
40

NoSQL究竟是什麼?數據庫系統是否只能與{key:value}對配合使用?我知道MemCache就是這樣的數據庫系統之一,對吧?NoSQL究竟是什麼?

還有哪些其他流行的NoSQL數據庫在哪裏以及它們在哪裏有用?

謝謝,Boda Cydo。

+0

社區wiki? – 2010-01-31 19:57:36

+10

http://en.wikipedia.org/wiki/Nosql ??? – skaffman 2010-01-31 19:59:19

+0

http://stackoverflow.com/questions/1245338/what-nosql-means-can-someone-explain-it-to-me-in-simple-words – 2010-05-05 03:27:57

回答

17

維基百科:

的NoSQL是一個鬆散定義的類與關係數據庫和ACID擔保的悠久歷史突破非關係型數據存儲的總稱。屬於該術語的數據存儲可能不需要固定表格模式,並且通常避免連接操作。一詞最早於2009年初

的動機普及了這樣的體系結構是高可擴展性,以支持網站,如Facebook,advertising.com等..

+0

我現在有了更好的理解。謝謝! – bodacydo 2010-01-31 20:38:43

+4

這些新方法的原始動力是水平可伸縮性,但現在其他好處顯着,主要是易於開發。面向文檔的數據庫例如消除了過去許多對象關係的「阻抗不匹配」工作。此外,這裏的靈活模式非常適合新的動態類型編程語言(Python,Ruby,PHP,...) – 2010-01-31 21:57:36

1

十多年前我就使用了一種叫做Raima Data Manager的東西,它有資格成爲NoSQL。它稱自己爲「面向數據庫的數據庫」,它不基於表格,並且沒有查詢「語言」,只是一個用於詢問子集的C API。

這是並且更容易在C/C++和SQL中使用,沒有構建字符串傳遞給查詢解釋器,數據以可枚舉對象而不是數組形式返回。可變大小的記錄是正常的,不會浪費空間。我從來沒有見過源代碼,但是在內部接口上有一些提示,代碼使用了很多指針。

我不確定我使用的產品是否已經售出,但公司仍在。

+0

有趣。感謝您貢獻您的答案。 – bodacydo 2010-01-31 20:31:11

7

要快速獲得NoSQL系統的句柄,請參閱此博客帖子,我寫道:Visual Guide to NoSQL Systems。從本質上講,NoSQL系統犧牲了一致性或可用性,有利於容忍網絡分區。

1

MongoDB看起來很有趣,SourceForge is now using it

我聽了一個團隊成員的播客。 NoSQL的想法並不是取代SQL,而是爲傳統的RDBMS解決不了的問題提供解決方案。正如其他地方所提到的,它們以可靠性和原子性爲代價(不同程度的不同解決方案)成本更高,規模更大。你不想使用金融系統,但基於文檔的系統會很好。

18

我不跟我看到的答案一致,雖然這是真的,NoSQL的解決方案往往會違反ACID規則,並非所有都是從這種方法創建的。

我認爲首先你應該定義什麼是SQL解決方案,然後你可以把「不僅」放在它的前面,這將更準確地定義什麼是NoSQL解決方案。

有了這個辦法:

SQL數據庫的方式將所有的數據存儲可訪問使用結構化查詢語言作爲主要的(和大部分時間只)的方式與他們交流這意味着它要求數據庫支持那些系統通用的結構,如「表格」,「列」,「行」,「關係」等。

現在,將「Not Only」在最後一句之前,你會得到一個什麼意思是「NoSQL」的定義。 NoSQL將創建的所有商店分組,以試圖解決無法適應表/列/行結構甚至SQL語句的問題,在大多數情況下,這些數據庫不支持關係,他們放棄了衆所周知的結構因爲問題自從他們構想以來已經發生了變化。

如果您有一個文本文件,並且您創建了一個API來存儲/檢索/組織這些信息,那麼您手中就有一個NoSQL數據庫。

所有這些意味着存在幾種解決方案來存儲信息,傳統SQL系統不允許實現更好的性能和靈活性等。每個NoSQL提供商都試圖解決不同的問題,這就是爲什麼您不會是能夠比較兩個不同的解決方案,例如:

  • djondb是創建用作 NoSQL的企業解決方案,支持交易,一致性等 但它的同行犧牲性能的文件存儲。
  • MongoDB是一個文件存儲(類似於 djondb),它完成了很好的性能,但是交易了一些 ACID屬性來實現這一點。
  • CouchDB是另一個文件存儲,其中 解決了稍有不同的查詢,提供視圖來檢索信息,而無需每次都進行完整查詢。
  • ...

正如你可能已經注意到,我只談到了文件存儲,這是因爲我想告訴你,3所不同的文件存儲的實現有不同的方法,因此,你應該記住的黃金NoSQL存儲規則「爲正確的工作使用正確的工具」。

我是djondb的創建者,在嘗試開始自己的NoSQL實現之前,我一直在做很多研究,但這是一個概念將不斷改變我們看到信息存儲方式的領域。

+0

它不是「不」。它不僅是SQL的縮寫。 – 2015-11-18 06:58:00

0

什麼是NoSQL?

NoSQL是Not Only SQL的首字母縮寫。 NoSQL數據庫的基本特性在商品硬件上是無模式,分佈式和水平可擴展的。 NoSQL數據庫提供各種函數來解決各種數據類型的各種問題,其中「blob」曾經是RDBMS中唯一用於存儲非結構化數據的數據類型。

1動態模式 NoSQL數據庫允許模式靈活。新列可以隨時添加。行可能有也可能沒有這些列的值,也沒有嚴格執行列的數據類型。這種靈活性對於開發人員來說非常方便,尤其是當他們期望在產品生命週期過程中經常發生變化時。

2各種數據 NoSQL數據庫支持任何類型的數據。它支持要存儲的結構化,半結構化和非結構化數據。它支持日誌,圖像文件,視頻,圖形,jpegs,JSON,XML等,無需任何預處理即可存儲和操作。因此它減少了對ETL(提取 - 轉換 - 加載)的需求。

3高可用性羣集 NoSQL數據庫支持使用商品硬件的分佈式存儲。它還通過水平可伸縮性支持高可用性。此功能使NoSQL數據庫能夠從雲基礎架構服務的彈性特性中受益。

4開源 NoSQL數據庫是開源軟件。軟件的使用是免費的,並且大多數軟件可以在商業產品中免費使用。開源代碼庫可以進行修改以解決業務需求。開源軟件許可證有細微的變化,用戶必須瞭解許可協議。

5 NoSQL - 不僅SQL NoSQL數據庫不僅依賴SQL來檢索數據。他們提供豐富的API接口來執行DML和CRUD操作。這些API是移動開發人員友好和支持各種編程語言。