如何使用 nodejs 使用 Dynamodb 并行扫描检索数据

Posted

技术标签:

【中文标题】如何使用 nodejs 使用 Dynamodb 并行扫描检索数据【英文标题】:how to retrieve data using Dynamodb parallel scans using nodejs 【发布时间】:2018-02-10 22:28:19 【问题描述】:

我正在使用 nodejs 将发电机表导入 S3。我的一切工作正常,但整个副本非常慢,因为我有数百万条记录,并且顺序扫描限制为 1MB,所以我正在寻找使用节点对 dynamo dB 进行并行扫描。

但要做到这一点,我需要创建多个线程并将并行工作分配给节点中的这些线程。我想知道是否有推荐的方法,或者您是否建议使用 Data Pipeline 导入数据?你觉得我应该怎么做?

【问题讨论】:

【参考方案1】:

您可以使用Scan API 中提供的内置并行扫描功能。整体会被分成多个段,对各个段进行扫描。

Parallel scan

Segment: 0,
TotalSegments: 5

Segment:对于并行扫描请求,Segment 标识一个个体 由应用程序工作人员扫描的段。

段 ID 从零开始,因此第一个段始终为 0。对于 例如,如果您想使用四个应用程序线程来扫描一个表 或索引,则第一个线程指定一个 Segment 值为 0,则 第二个线程指定 1,依此类推。

Segment 的值必须大于等于 0 且小于 比为 TotalSegments 提供的值。

如果您提供 Segment,则还必须提供 TotalSegments。

TotalSegments:- 对于并行扫描请求,TotalSegments 表示 扫描操作将进入的段的总数 分为。 TotalSegments 的值对应于 将执行并行扫描的应用程序工作人员。例如, 如果您想使用四个应用程序线程来扫描一个表或一个 索引,指定 TotalSegments 值为 4。

【讨论】:

以上是关于如何使用 nodejs 使用 Dynamodb 并行扫描检索数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 NodeJS 将新对象附加到 DynamoDB 中的 JSON 数组

使用保留关键字作为 FilterExpression NodeJS 扫描 DynamoDB 中的函数

亚马逊 dynamodb(通过 aws sdk)是不是有一个很好的对象映射器,可以在 nodejs 中使用?

Nodejs,AWS Dynamodb如何在创建新记录之前检查用户是不是已经存在

如何将DynamoDB放入请求放入队列

“sls dynamodb start”抛出 spawn java ENOENT