One-to-many NoSQL 数据库中的关系
One-to-many relationships in NoSQL DB
我刚开始学习DynamoDB,遇到了一个大问题。
假设,我有一个作者和一本书 table,其中作者可以有多本书,每本书必须有一个作者。
所以,在 NonSQL DB 中,我只是在书中嵌入了作者信息 table 来解决这个问题。
示例代码:https://pastebin.ubuntu.com/p/DvHpS8JQJV/
但是,最近我遇到了一个问题,就是如果很久以后管理员想更改一些关于作者的信息,比如live属性。怎样才能在书table.
中生效
注意:作者table中的嵌入式图书collection可以解决这个问题,但将来通过分页和其他操作检索所有图书数据可能会更加困难。
在关系数据库中,使用外键并使用连接查询检索数据很容易解决。
如何在 NonSQL 或 dynamoDB 中解决此类问题?有什么建议吗?
你有两个选择。
- 使用半 sql 设计。为书籍和汽车创建单独的 table。连接将在应用程序级别处理。从性能的角度来看它并不完美,但对于具有 SQL 背景的开发人员来说很容易上手。
- 采用单一 table 设计。这是一个复杂的话题。没有灵丹妙药来处理像 SQL 中那样的一对多关系。您需要对您的领域和单一 table 设计有很好的了解才能做好这件事。
我刚开始学习DynamoDB,遇到了一个大问题。
假设,我有一个作者和一本书 table,其中作者可以有多本书,每本书必须有一个作者。
所以,在 NonSQL DB 中,我只是在书中嵌入了作者信息 table 来解决这个问题。
示例代码:https://pastebin.ubuntu.com/p/DvHpS8JQJV/
但是,最近我遇到了一个问题,就是如果很久以后管理员想更改一些关于作者的信息,比如live属性。怎样才能在书table.
中生效注意:作者table中的嵌入式图书collection可以解决这个问题,但将来通过分页和其他操作检索所有图书数据可能会更加困难。
在关系数据库中,使用外键并使用连接查询检索数据很容易解决。
如何在 NonSQL 或 dynamoDB 中解决此类问题?有什么建议吗?
你有两个选择。
- 使用半 sql 设计。为书籍和汽车创建单独的 table。连接将在应用程序级别处理。从性能的角度来看它并不完美,但对于具有 SQL 背景的开发人员来说很容易上手。
- 采用单一 table 设计。这是一个复杂的话题。没有灵丹妙药来处理像 SQL 中那样的一对多关系。您需要对您的领域和单一 table 设计有很好的了解才能做好这件事。