我应该使用什么模式将关系 SQL 数据库重构为键值存储?
What pattern should I use for refactoring my relational SQL database to a key-value store?
我正在考虑将我的 Web 应用程序从 SQL 数据库迁移到键值存储,这样我就可以水平扩展我的应用程序。
我正在计划如何迁移我的模式 - 我确信必须有一个模式来执行此操作。
我举一个米老鼠的逻辑例子来说明我的想法。这是关系数据库中的一个简单图书馆系统,其中包含 Book
s、Person
s 和 BorrowEvent
s。您可以使用 BorrowEvent
从 Book
加入到 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 多项技术,包括:
- 降维
- 索引Table
- 复合键索引
- 复合键聚合
- 反向搜索 - 直接聚合
- 树聚合
- 邻接表
- 物化路径
- 嵌套集
嵌套文档扁平化
我。编号字段名称
二。邻近查询
批量图形处理
我正在考虑将我的 Web 应用程序从 SQL 数据库迁移到键值存储,这样我就可以水平扩展我的应用程序。
我正在计划如何迁移我的模式 - 我确信必须有一个模式来执行此操作。
我举一个米老鼠的逻辑例子来说明我的想法。这是关系数据库中的一个简单图书馆系统,其中包含 Book
s、Person
s 和 BorrowEvent
s。您可以使用 BorrowEvent
从 Book
加入到 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 多项技术,包括:
- 降维
- 索引Table
- 复合键索引
- 复合键聚合
- 反向搜索 - 直接聚合
- 树聚合
- 邻接表
- 物化路径
- 嵌套集
嵌套文档扁平化
我。编号字段名称
二。邻近查询
批量图形处理