我有一个用例,我希望始终知道并能够按上次读取时间查找DynamoDB项目。最简单的方法是什么(我不想使用任何其他服务)。
答案 0 :(得分:0)
您可以通过结合使用UpdateItem API,查询API和GSI,在DynamoDB中按上次读取时间来调用项目。 首先,估计应用程序从DynamoDB表中随机读取1MB值的项目的时间。让我们假设我们正在处理小项目,并且每个项目都是<= 1KB,那么,如果表格上的RPS为100,则应用程序需要10秒钟来随机读取1MB数据。 其次,创建一个投影所有属性并键入的GSI(PK = read_time_bucket,SK = read_time)。在小项目的情况下,GSI上的WPS应该等于基表的RPS。 第三,使用UpdateItem API(ReturnAttributes = ALL_NEW,UpdateExpression =&#34; SET read_time_bucket =:bucket,read_time =:time&#34;,ExpressionAttributeValues = {&#34;:bucket&#34;:,&#34 ;:time&#34;:})参数“读取”每个项目。 UpdateItemResult将包含项目以及更新的上次读取时间和存储桶。 第四,您可以使用查询API在GSI上按上次读取时间查找项目,使用read_time_bucket和read_time上的关键条件。 您需要根据项目大小和基表上的读/写模式调整时间桶大小和吞吐量设置。如果项目大小过大,请将投影限制为SELECTED_ATTRIBUTES或KEYS_ONLY。