我应该使用什么模式将关系SQL数据库重构为键值存储?

时间:2015-11-14 01:18:31

标签: design-patterns refactoring relational-database key-value horizontal-scaling

我正在考虑将我的网络应用程序从SQL数据库迁移到键值存储,因此我可以横向扩展我的应用程序。

我计划如何迁移我的架构 - 我确信必须有这样做的模式。

我将给出一个米老鼠的逻辑例子来展示我的想法。以下是包含Book s,PersonBorrowEvent s的关系数据库中的简单库系统。您可以使用BookPerson加入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数据库重构为键值存储?

假设

  • 假设这是一个逻辑重构,而不是物理重构。

1 个答案:

答案 0 :(得分:0)

This post lists许多技巧,包括:

  1. 维度降低
  2. 索引表
  3. 综合关键指数
  4. 使用复合键进行聚合
  5. 倒置搜索 - 直接聚合
  6. 树聚合
  7. 邻接列表
  8. 物化路径
  9. 嵌套集
  10. 嵌套文档展平

    我。编号字段名称

    II。邻近查询

  11. 批处理图处理