0

我正在考慮將我的Web應用程序從SQL數據庫遷移到鍵值存儲,因此我可以水平縮放我的應用程序。我應該使用什麼模式將我的關係SQL數據庫重構爲鍵值存儲?

我正在計劃如何遷移我的模式 - 而且我確定必須有一個模式來做到這一點。

我會給一個米老鼠的邏輯例子來展示我的想法。這是一個關係數據庫中的簡單庫系統,其中Book s,Person s和BorrowEvent s。您可以使用BorrowEventBook s加入Person s,查看誰借了哪個Book

Book 
- BookID 
- BookTitle 

Person 
- PersonID 
- PersonName 

BorrowEvent 
- BorrowEventID 
- BookID 
- PersonID 

現在讓我們嘗試下面的重構:

[Key][Value] 
- ID/BookName 
- ID/PersonName 
- ID/[String]"BorrowEvent-"+[ID of BookName]+"-"+[ID of PersonName] 

這個工程通過查詢BorrowEvent,使用正則表達式來獲得的ID分裂值的字符串。

現在這有幾個限制。如果我想添加一個Author到我的Book,我必須添加一個額外的跳躍來檢索我的圖書信息。如果我想Person有姓和名,也是一樣。

我想必須有一個模式從關係到鍵值存儲的這種轉換。 (或多種模式)。我只是不知道名字是什麼。

我的問題是:我應該使用什麼模式將我的關係SQL數據庫重構爲鍵值存儲?

假設

  • 假設這是一個邏輯重構,而不是一個物理重構。
+1

這似乎接近:https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ – hawkeye

+1

關係數據庫可以處理一般多元關係;當您在自己的代碼中重新創建關係DBMS功能時,分解爲二元關係可能意味着完整性和/或性能損失。我想起了愛因斯坦的一句話:「儘可能簡單但不簡單」。 – reaanb

+0

或者引用:「對於每一個複雜的問題,都有一個清晰,簡單和錯誤的答案。」 – DanBaker

回答

0

This post lists多項技術,包括:

  1. 降維
  2. 索引表
  3. 複合鍵指數
  4. 聚合複合主鍵
  5. 倒搜索 - 直接聚合
  6. 樹聚集
  7. 鄰接表
  8. 物化路徑
  9. 嵌套集合
  10. 嵌套文檔壓扁

    我。編號字段名稱

    ii。近似查詢

  11. 批次中圖形處理

相關問題