鍵值資料庫是一種非關聯式資料庫,也稱為 NoSQL 資料庫,它採用簡單的鍵值方法存放資料。這種資料庫將資料儲存為鍵值組集合,而其中的鍵做為唯一識別碼。鍵和值不限種類,從簡單物件到複雜的複合物件皆可。鍵值資料庫 (或鍵值存放區) 具備高度可分割性,允許其他類型資料庫無法達到的規模橫向擴展。

鍵值資料庫的優勢有哪些

傳統關聯式資料庫 (SQL 資料庫) 以包含資料列和資料欄的資料表形式存放資料。這些資料庫對資料強制實施嚴格的結構,並非適合每個使用案例。另一方面,鍵值資料庫是 NoSQL 資料庫。它們允許靈活的資料庫架構,並針對某些使用案例大規模改善效能。鍵值存放區的優勢包括:

可擴展性

由於每個使用者查詢都需要資料互動,資料庫通常會成為應用程式效能的瓶頸。多種解決問題的策略,例如複寫和分區,會增加應用程式的程式碼複雜性。許多鍵值資料庫針對進階擴展功能提供內建支援。它們會水平擴展並在伺服器之間自動分配資料,以減少單一伺服器的瓶頸。

易用性

鍵值資料庫遵循物件導向範式,允許開發人員將現實物件直接映射至軟體物件。多種程式設計語言,例如 Java,也遵循相同的範式。工程師可建立與其程式碼物件相符的鍵值對,而不是將其程式碼物件映射至多個基礎資料表。這讓開發人員能夠更直覺地使用鍵值存放區。

效能

鍵值資料庫可透過低負荷伺服器呼叫來處理持續的讀寫作業。改善延遲並縮短回應時間,以大規模提供更出色的效能。它們基於簡單的單一資料表結構,而不是多個相互關聯的資料表。與關聯式資料庫不同,鍵值資料庫不必執行資源密集型表格聯結,這讓它們運作更快。

鍵值資料庫的使用案例有哪些

您可以使用鍵值資料庫系統做為應用程式的主要資料庫,或處理利基需求。我們在下面給出一些範例鍵值資料庫使用案例。

工作階段管理

工作階段導向的應用程式 (例如 Web 應用程式) 會在使用者登入應用程式時啟動工作階段,並且在使用者登出或工作階段逾時之前處於作用中狀態。在這段期間,應用程式會將所有使用者工作階段屬性存放在主記憶體或資料庫中。使用者工作階段資料可包括設定檔資訊、訊息、個人化資料和主題、建議、有針對性的促銷和折扣。

每一個使用者工作階段都會有唯一的識別符。除了主索引鍵之外,永遠不會查詢工作階段資料,因此快速鍵值存放區更適合工作階段資料。通常,鍵值資料庫的每頁開銷會比關聯式資料庫來得少。

購物車

在假日購物季節,電子商務網站可能每幾收到數十億筆的訂單。鍵值資料庫可以處理大量資料的擴展和極大量的狀態變更,同時還透過分散式處理和儲存,為數百萬同時上線的使用者提供服務。鍵值存放區還具有內建冗餘,可以處理儲存節點的遺失。

中繼資料儲存引擎

您的鍵值存放區可充當基礎儲存層,用於更高層級的資料存取。例如,您可以擴展媒體和娛樂工作負載 (如即時影片串流和互動式內容) 的輸送量和並行。您還可以使用玩家資料、工作階段歷史記錄和數百萬並行使用者的排行榜建置您的遊戲平台。

快取

您可以使用鍵值資料庫暫時存放資料,以便快速擷取。例如,社交媒體應用程式可以存放經常存取的資料,例如新聞摘要內容。記憶體內的資料快取系統還使用鍵值存放區,來加速應用程式回應。

鍵值資料庫如何運作

鍵值資料庫藉由將所有資料整理為鍵值對集來運作。您可以將索引鍵視為問題,而值為問題的答案。在下面的範例中,主索引鍵是兩個索引鍵的組合,即產品 ID 和類型。產品 ID 是描述存放項目所在分割區的分割區索引鍵。類型為排序索引鍵,可確定將項目存放在磁碟中的順序。分割區索引鍵和排序索引鍵的組合形成不重複的主索引鍵,該主索引鍵會映射至資料庫中的單一值。

在此範例中,資料物件簿具有標題、作者和發布日期等屬性。每個資料物件簿中的資料物件都具有名為 BookID 的索引鍵。您可以直接在鍵值存放區連結 BookID 和關聯的資料物件簿物件。此外,您可以透過查詢資料表中的 BookID 來擷取資料。此外,每個項目都有自己的結構描述,讓鍵值存放區非常靈活地存放各種結構的資料。

顯示 DynamoDB 中存放為鍵值組的資料範例圖

鍵值資料庫的功能有哪些

視乎您選擇的解決方案,您的鍵值存放區可提供以下若干其他功能。

支援複雜的資料類型

鍵值存放區針對定義的資料類型提供支援,例如整數和文字。不過,其中許多還可支援更複雜的物件,例如陣列、巢狀字典、影像、影片和半結構化資料。透過為資料庫提供更多有關您資料的資訊,可增加儲存空間和優化查詢效能。

無需資料表聯結

鍵值資料庫無需執行任何資源密集型資料表聯結。由於其靈活性,可在單一資料表中包含所有需要的資訊。這是鍵值存放區表現卓越的原因之一。

排序索引鍵

該鍵值存放區可以對索引鍵進行排序,以便系統地存放資料並用於實作分割區。例如,可按以下方式對索引鍵排序:

  • 按字母順序或數字順序
  • 按時間順序
  • 按資料大小

考慮使用客戶電子郵件地址做為不重複索引鍵的鍵值存放區。電子郵件地址可以按字母順序排序,因此 A-J 電子郵件清單的所有資料都會存放在伺服器 1、K-S 存放在伺服器 2,等等。

輔助索引鍵支援

某些鍵值存放區允許您定義兩個或多個不同的索引鍵或次要索引,以存取相同的資料。例如,您可以按主要電子郵件地址和主要電話號碼來存放客戶資料。

複寫

許多鍵值存放區可自動複製多個儲存節點間的資料,藉此提供內建複寫支援。這有助於在災難中自動復原;如果伺服器發生故障,您仍然擁有資料。

資料分割

資料分割是指您在節點間分配資料的方式。許多鍵值資料庫提供預設資料分割選項。有些還為您提供了針對分割區定義輸入參數的選項。例如,您可以將數字鍵分割為 1000 個群組。進階鍵值資料庫還提供自動支援,將您的鍵值資料庫分配到多個地理位置。這可改善應用程式可用性和可靠性,因為您可以對靠近使用者位置的查詢做出回應。

ACID 支援

原子性、一致性、隔離性和耐久性 (ACID) 是確保在所有情況下資料準確性和可靠性的資料庫屬性。例如,如果您在序列中對資料做出多次變更,原子性會要求所有變更都按順序進行。如果一個變更失敗,則全部都會失敗。

進階鍵值資料庫提供 ACID 的原生伺服器端支援。這可簡化開發人員對資料表內或資料表間的多個項目進行協調式、全有或全無變更的體驗。利用交易支援,開發人員可以將規模、效能和企業優勢延伸至更廣泛的一組關鍵任務工作負載。

鍵值資料庫的限制有哪些

與任何技術選項一樣,鍵值資料庫確實需要一些衡量。

不支援複雜的查詢

由於鍵值資料庫不支援複雜的查詢,因此開發人員必須在程式碼中解決此問題。資料操作主要使用簡單的查詢語言術語,例如 get,put 和 delete。在存取資料之前,您可以篩選和排序資料的數量有限制。

結構模式管理不善

鍵值存放區設計不會對開發人員強制執行結構模式。任何人都能修改資料庫程式中的結構描述。開發團隊必須系統性地規劃資料模型,以避免長期問題。缺少緊密的結構描述也意味著應用程式負責對其取用的資料進行正確解譯,通常稱為「讀取結構描述」。

AWS 如何支援您的鍵值資料庫要求?

Amazon DynamoDB 其中一種最受歡迎的鍵值資料庫,專為執行任何規模的高效能應用程式而設計。這是一個全受管、多區域、多活動資料庫,提供如下功能:

  • 無限的可擴展性,包括擴展至零,具有不到 10 毫秒的一致延遲。
  • 無伺服器,無需版本升級,沒有維護時段,也無需管理伺服器或軟體。
  • DynamoDB 全域表專為 99.999% 的可用性而設計,提供主動-主動複寫,讓您能夠鍵值具有本機讀取效能的全域分散式應用程式。
  • 高度安全性和可靠性,具備預設靜態加密、即時復原、隨需備份和還原等。
  • 輕鬆使用與眾多 AWS 服務的整合,包括 Amazon S3 大量匯入/匯出Amazon Kinesis Data StreamsAmazon Cloudwatch 等。

憑藉此有關建立和查詢 NoSQL 資料表的逐步教學課程,您可以在 10 分鐘內啟動並執行 DynamoDB。立即建立免費帳戶,開始使用 AWS 上的鍵值資料庫!

Introduction to Amazon DynamoDB
Amazon DynamoDB 資料建模