【数据建模】设计一个DynamoDB数据模型,用于管理图形化的层次关系 -- 定义访问模式
视频号
微信公众号
知识星球
Chinese, Simplified
作为最佳实践,首先定义支持业务案例的访问模式。然后进行数据建模以支持这些访问模式。在定义访问模式之前,请查看本指南示例中使用的汽车零部件层次结构树。
使用示例树
绘制汽车组件的示例树可以帮助您映射它们之间的关系。下图显示了具有四个级别的依赖关系图。CM1是示例汽车本身的顶级组件。它有两个子组件用于两个示例电池,CM2和CM3。每个电池有两个子组件,即模块。CM2具有模块CM4和CM5,而CM3具有模块CM6和CM7。每个模块都有几个子组件,即单元。CM4模块有两个单元,CM8和CM9。CM5具有一个单元CM10。CM6和CM7还没有任何相关联的细胞。
本指南将使用此树及其组件标识符作为参考。顶部组件将被称为父组件,子组件将被称作子组件。例如,顶部组件CM1是CM2和CM3的父组件。CM2是CM4和CM5的父代。这是父子关系的图表。
从树中,您可以看到组件的完整依赖关系图。例如,CM8依赖于CM4,CM4依赖于CM2,CM2依赖于CM1。树将完整的依赖关系图定义为路径。路径描述了两件事:
- 依赖关系图
- 树中的位置
CM8从上到下的路径是CM1|CM2|CM4|CM8。
本指南的示例用例具有以下访问模式,用于管理不同汽车组件之间的关系。
访问模式 |
|
---|---|
1 |
作为一个用户,我想检索父组件ID的所有直接子组件(向下一级)。 |
2 |
作为一个用户,我想检索组件ID的所有子(下级)组件的递归列表。 |
3 |
作为用户,我希望看到组件的祖先。 |
使用汽车组件示例,每个组件(汽车、电池、模块和电池)都具有组件ID作为唯一标识符。在这种情况下,如果使用电池组件ID进行查询,则直接的子级是模块。递归列表显示模块和单元。对于电池来说,祖先是模块、电池和汽车。
要为您的用例定义必要的访问模式,请彻底分析业务需求。在您有完整的业务需求之前,不要开始数据建模。
本文地址
https://architect.pub/design-dynamodb-data-model-managing-graphlike-hierarchical-relationship-defining-access-patterns
- 6 次浏览
SEO Title
Design a DynamoDB data model for managing a graphlike hierarchical relationship -- Defining access patterns