输入带有硬编码哈希键但具有不同范围键的行

时间:2019-07-11 20:14:40

标签: amazon-dynamodb amazon-dynamodb-index

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

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

我想参考所有预订,以便“超级管理员”可以进入并查看所有内容。预订需要保存10年,因此我想我最终将在同一哈希键下具有大约5000万条记录,但具有不同的唯一范围键。需要根据三种不同的条件进行搜索 日期标准,本地二级索引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    ...........

这应该是怎么做的?这会引起热点/热分区吗? 感谢所有提示。

1 个答案:

答案 0 :(得分:0)

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

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

我建议将VehicleID(UUID或VIN或STOCK#)作为哈希键,并将BookingID(UUID或Timestamp或???)作为排序键。

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

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

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

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

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