0
我正在考慮將我的Web應用程序從SQL數據庫遷移到鍵值存儲,因此我可以水平縮放我的應用程序。我應該使用什麼模式將我的關係SQL數據庫重構爲鍵值存儲?
我正在計劃如何遷移我的模式 - 而且我確定必須有一個模式來做到這一點。
我會給一個米老鼠的邏輯例子來展示我的想法。這是一個關係數據庫中的簡單庫系統,其中Book
s,Person
s和BorrowEvent
s。您可以使用BorrowEvent
從Book
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數據庫重構爲鍵值存儲?
假設:
- 假設這是一個邏輯重構,而不是一個物理重構。
這似乎接近:https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ – hawkeye
關係數據庫可以處理一般多元關係;當您在自己的代碼中重新創建關係DBMS功能時,分解爲二元關係可能意味着完整性和/或性能損失。我想起了愛因斯坦的一句話:「儘可能簡單但不簡單」。 – reaanb
或者引用:「對於每一個複雜的問題,都有一個清晰,簡單和錯誤的答案。」 – DanBaker