我对 DynamoDB 比较陌生,我们正在为我们的一个应用程序设计一个自由格式的搜索 GUI。我们使用的主要数据存储是传统的关系数据库,我们计划使用 DynamoDB 作为数据库顶部的持久“缓存”层,仅用于搜索。
在我们的例子中,我们有 3 个键来确定客户。
我们将客户存储为上述 3 个 ID 的组合,如下所示:
- billingAccountNumber + customerId
- billingAccountNumber + InstanceId
- 客户ID
- 实例 ID
DynamoDB 中的每个项目都代表在特定时间发生在客户身上的事件。
在 DynamoDB 中设计这种模式的最佳方法是什么。查询将类似于
- 一段时间内某些 billingAccountNumber 的事件。
- 一段时间内特定客户 ID 的事件
- 一段时间内某个 instanceId 的事件。
等等
目前,我使用 BillingAccountNumber 作为分区键,因为这将平均分配负载,并使用时间戳作为排序键,以便我们可以获得给定范围的结果。
我正在讨论是否可以使用 customerId 或 instanceId 作为排序键,并使用时间戳作为过滤器,以便我可以在时间戳上使用 filterExpression 进行查询。
就性能和成本而言,哪种方式更有效?