我正在考虑将我的网络应用程序从SQL数据库迁移到键值存储,因此我可以横向扩展我的应用程序。
我计划如何迁移我的架构 - 我确信必须有这样做的模式。
我将给出一个米老鼠的逻辑例子来展示我的想法。以下是包含Book
s,Person
和BorrowEvent
s的关系数据库中的简单库系统。您可以使用Book
从Person
加入BorrowEvent
,以查看谁借了哪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,使用正则表达式拆分值的String来获取ID。
现在这有一些局限性。如果我想在Author
添加Book
,我必须添加一个额外的点来检索我的图书信息。如果我希望Person
具有名字和姓氏,也是如此。
我认为从关系到键值存储的转换必须有模式。 (或多种模式)。我只是不知道这个名字是什么。
我的问题是:我应该使用什么模式将关系型SQL数据库重构为键值存储?
假设:
答案 0 :(得分:0)
This post lists许多技巧,包括:
嵌套文档展平
我。编号字段名称
II。邻近查询
批处理图处理