我正在考虑将我的 Web 应用程序从 SQL 数据库迁移到键值存储,这样我就可以水平扩展我的应用程序。
我正在计划如何迁移我的模式 - 我确信必须有一个模式来做到这一点。
我将举一个米老鼠的逻辑例子来展示我的想法。这是一个关系数据库中的简单库系统,带有Book
s、Person
s 和BorrowEvent
s。您可以使用 s 连接从Book
s 到Person
sBorrowEvent
以查看谁借了哪个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 数据库重构为键值存储?
假设:
- 假设这是一个逻辑重构,而不是物理重构。