1

我正在尝试创建一个汽车预订应用程序。用户可以预订位于许多办公室附近的汽车。

想知道我是否可以将所有预订放入一个硬编码的哈希键“预订”中,但具有唯一的范围键。

我想参考所有预订,以便“超级管理员”可以进入并查看所有内容。预订需要存储 10 年,所以我想我最终会在相同的 hashkey 下拥有大约 5000 万条记录,但具有不同的唯一 Range Key。搜索需要基于三个不同的日期标准,本地二级索引 1-3。

思考这样的事情(仅包括特定的“实体”)

            Hash Key    Range Key   LSI-1       LSI-2       LSI-3       Other Attributes...
            -------------------------------------------------------------------------------
Bookings    "Bookings"  UUID        CreatedAt   BookedFrom  BookedTo    ...........
                        UUID        CreatedAt   BookedFrom  BookedTo    ...........
                        UUID        CreatedAt   BookedFrom  BookedTo    ...........
                        UUID        CreatedAt   BookedFrom  BookedTo    ...........
                        UUID        CreatedAt   BookedFrom  BookedTo    ...........
                        UUID        CreatedAt   BookedFrom  BookedTo    ...........

这是应该怎么做的吗?这会导致热点/热点分区吗?感谢任何提示。

4

1 回答 1

0

我会说不,这不是应该的方式......

首先,DDB 只能在单个分区中存储 10GB,50m 行它们必须非常小才能容纳。

我建议将 vehicleID(UUID 或 VIN 或 STOCK#)作为哈希键,将 bookingID(UUID 或时间戳或???)作为排序键。

为了显示所有预订,您需要对每个车辆 ID 执行 Query(),但您的应用可以并行查询。可选地, Scan() 始终查看每个分区。

如果您没有其他地方可以存储该列表,则可以包含一个包含 vechicleID 列表的 hashkey = "VEHICLES" 的记录。

此外,例如带有 vechicleID 和 sortley = "INFO" 的记录可用于存储车辆详细信息。

但是您并没有真正提供足够的信息来真正设计 DDB 解决方案。

使用 RDB,您必须知道您打算存储什么。使用 DDB,您不必确切知道您计划存储什么,但您需要确切知道需要如何访问这些数据。

于 2019-07-15T14:24:17.667 回答