我正在试着创建一个叫车应用。用户可以在许多办公室周围预订汽车。
想知道我是否可以把所有的预订放在一个硬编码的hashkey " bookings“中,但有唯一的范围键。
我想有一个参考所有的预订,以便“超级管理员”可以进去,并查看一切。预订需要存储10年,所以我想我最终将在相同的hashkey下存储大约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 ...........这是不是应该这样做呢?这会导致热点/热点分区吗?感谢你给我的提示。
发布于 2019-07-15 22:24:18
我会说不,这不是应该这样做的.
首先,DDB只能在单个分区中存储10‘d,50m行必须非常小才能容纳。
我建议使用vehicleID (UUID或VIN或STOCK#)作为散列键,使用bookingID (UUID或时间戳或?)作为排序关键字。
为了显示所有预订,您需要在每个查询上使用vehicleID (),但是您的应用程序可以并行查询。可选的是,Scan()总是查看每个分区。
如果您没有其他地方存储vechicleIDs列表,则可以包含一个hashkey = "VEHICLES“记录,该记录包含一个vechicleID列表。
此外,例如,带有vechicleID和sortley = "INFO“的记录可用于存储车辆详细信息。
但是您并没有真正提供足够的信息来真正设计DDB解决方案。
对于RDB,您必须知道您计划存储什么。使用DDB,您不必确切地知道您计划存储什么,但您确实需要确切地知道需要如何访问这些数据。
https://stackoverflow.com/questions/56996678
复制相似问题