Nosql

什麼是鍵/值儲存數據庫?

  • July 30, 2013

我一直在查看 NoSQL 的維基百科頁面,它列出了鍵/值儲存數據庫的幾個變體,但我找不到任何關於鍵/值儲存在這種情況下的含義的詳細資訊。有人可以向我解釋或連結解釋嗎?另外,我什麼時候會使用這樣的數據庫?

您熟悉鍵/值對的概念嗎?假設您熟悉 Java 或 C#,這是語言中的 map/hash/datatable/KeyValuePair(最後一個是 C# 的情況)

這個小範例圖表展示了它的工作方式:

Color        Red
Age          18
Size         Large
Name         Smith
Title        The Brown Dog

你有一個鍵(左)和一個值(右)……注意它可以是字元串、整數等。大多數 KVP 對象允許您在右側儲存任何對象,因為它只是一個值。

由於您將始終擁有要返回的特定對象的唯一鍵,因此您只需在數據庫中查詢該唯一鍵並從具有該對象的任何節點返回結果(這就是它適用於分佈式系統的原因,因為還涉及其他事情,例如輪詢前 n 個節點以返回與其他節點返回匹配的值)。

現在我上面的例子很簡單,所以這裡有一個稍微好一點的 KVP 版本

user1923_color    Red
user1923_age      18
user3371_color    Blue
user4344_color    Brackish
user1923_height   6' 0"
user3371_age      34

如您所見,簡單的密鑰生成是將“使用者”放入使用者唯一編號、下劃線和對象。同樣,這是一個簡單的變體,但我認為我們開始理解,只要我們可以定義左側的部分並使其格式一致,我們就可以提取值。

請注意,鍵值(好吧,可能有一些限制,例如純文字)或值屬性(可能有大小限制)沒有限制,但到目前為止,我還沒有真正複雜的系統。讓我們嘗試更進一步:

app_setting_width      450
user1923_color         Red
user1923_age           18
user3371_color         Blue
user4344_color         Brackish
user1923_height        6' 0"
user3371_age           34
error_msg_457          There is no file %1 here
error_message_1        There is no user with %1 name
1923_name              Jim
user1923_name          Jim Smith
user1923_lname         Smith
Application_Installed  true
log_errors             1
install_path           C:\Windows\System32\Restricted
ServerName             localhost
test                   test
test1                  test
test123                Brackish
devonly
wonderwoman
value                  key

你明白了……所有這些都將儲存在分佈式節點上的一個巨大的“表”中(這一切背後都有數學),你只需通過名稱向分佈式系統詢問你需要的值。

至少,這是我對這一切如何運作的理解。我可能有一些錯誤,但這是基礎。


強制性維基百科連結http://en.wikipedia.org/wiki/Associative_array

在 SQL 術語中,NoSQL 數據庫是具有兩列的單個表:一列是(主)鍵,另一列是值。就是這樣,這就是 NoSQL 的全部魔力。

你會使用 NoSQL 的主要原因之一是:可擴展性。

如果您的應用程序需要每秒處理數百萬次查詢,那麼實現它的唯一方法就是添加更多伺服器。使用 NoSQL 非常便宜和容易。相比之下,擴展傳統的 SQL 數據庫要復雜得多。

只有最大的網站才能真正充分利用 NoSQL 的潛力,例如 Facebook,擁有數千台執行Cassandra的伺服器。

我強烈推薦閱讀這篇博文,比較 SQL、NoSQL 和 ORM:

http://seldo.com/weblog/2010/07/12/in_defence_of_sql

引用自:https://dba.stackexchange.com/questions/607