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

What pattern should I use for refactoring my relational SQL database to a key-value store?

我正在考虑将我的 Web 应用程序从 SQL 数据库迁移到键值存储,这样我就可以水平扩展我的应用程序。

我正在计划如何迁移我的模式 - 我确信必须有一个模式来执行此操作。

我举一个米老鼠的逻辑例子来说明我的想法。这是关系数据库中的一个简单图书馆系统,其中包含 Books、Persons 和 BorrowEvents。您可以使用 BorrowEventBook 加入到 Person 以查看谁借了哪个 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。

现在这有几个限制。如果我想在我的 Book 中添加一个 Author,我必须添加一个额外的跃点来检索我的图书信息。如果我希望 Person 有名字和姓氏,也是如此。

我想必须有一个 模式 用于从关系存储到键值存储的这种转换。 (或多种模式)。我只是不知道名字是什么。

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

假设

This post lists 多项技术,包括:

  1. 降维
  2. 索引Table
  3. 复合键索引
  4. 复合键聚合
  5. 反向搜索 - 直接聚合
  6. 树聚合
  7. 邻接表
  8. 物化路径
  9. 嵌套集
  10. 嵌套文档扁平化

    我。编号字段名称

    二。邻近查询

  11. 批量图形处理