在什么情况下,您需要在dynamodb中使用多个表



我正在开发一个资产跟踪系统,该系统还管理";项目";。该应用程序的用户对其客户的资产执行维护活动,因此他们需要一个操作日志,在该日志中,资产上的操作作为项目中的任务开始使用。例如;修复损坏的框架";可能是一项任务,其中一个动作将具有类似于";使用部件a、b和c来固定框架";带有完成的时间和执行操作的员工。

应用程序的概念数据模型从一个客户开始,该客户有多个位置,每个位置都有多个资产。每个资产都应该有一个关联的操作日志,这样就可以很容易地查看应用于该资产的以前的操作。

对我来说,所有这些都应该基于数据的逻辑所有权放在一个表中。客户拥有拥有资产的地点,拥有行动。

我认为我应该有第二个项目表,因为这些数据与客户/地点/资产数据无关。然而,因为我读了很多关于它应该如何成为一个表的文章,我不确定这种描述是否存在,因为我对数据建模错误,因为我无法克服我整个职业生涯中使用的3NF建模。

单表设计并不禁止创建多个表。相反,in鼓励每个微服务只使用一个表(也就是说,将要一起访问的相关数据存储在同一个表中(。

让我们看看专家的一些轶事:

Rick Houlihan一年多前在推特上发布

在DynamoDB中为每个实体使用一个表就像为RDBMS中的每个表部署一个新服务器。没有人这么做。一旦在表之间隔离项目,就不能再在GSI上对它们进行分组。相反,您必须查询每个表以获取相关项。这既慢又贵。

Alex DeBrie去年8月回应了的一条推文

将其视为每个服务一个表,而不是跨整个体系结构。每个服务都应该拥有自己的表,就像其他数据库一样。围绕单个表的关键是不需要像RDBMS中那样每个实体都有一个表。

基于此,您应该回答自己。。。

  • 数据之间有何关联
  • 如果您使用关系数据库进行构建,您会将其存储在单独的数据库中吗
  • 这实际上是两个独立的微型服务,还是同一个微型服务的一部分

根据这些(和类似(问题的答案,您可以争论将其保留在一个表中,或者将其拆分为两个表。

相关内容

最新更新