0

我无法使用 C# 在 dynamo DB 中加载数据。我们使用了 Scan 和 GetRemaining,这使得该过程非常缓慢。是否有任何替代选项可以更快地加载数据列表?

Table peopleTable = Table.LoadTable(client, "User_Activities_Log");
//get all records
ScanFilter scanFilter = new ScanFilter();
List<Document> allItems = peopleTable.Scan(scanFilter).GetRemaining();

加载 900 000 条记录需要 5-6 分钟。它比 SQL 慢得多

4

2 回答 2

0

对文档数据库进行扫描是一个非常缓慢的过程。与其进行扫描,不如使用 Query 来更快地返回数据,因为它会被索引。

想象一下扫描就像必须翻阅一本书的每一页才能找到信息。而不是书中有目录来帮助您查找数据的查询。https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LowLevelDotNetQuerying.html

AmazonDynamoDBClient client = new AmazonDynamoDBClient();

var request = new QueryRequest
{
    TableName = "Reply",
    KeyConditionExpression = "Id = :v_Id",
    ExpressionAttributeValues = new Dictionary<string, AttributeValue> {
        {":v_Id", new AttributeValue { S =  "Amazon DynamoDB#DynamoDB Thread 1" }}}
};

var response = client.Query(request);

foreach (Dictionary<string, AttributeValue> item in response.Items)
{
    // Process the result.
    PrintItem(item);
} 
于 2019-09-20T13:52:39.087 回答
0

您可以执行分段/并行扫描以并行扫描表。每个段都有自己的迭代器,您可以更快地加载数据。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html#Scan.ParallelScan

如果您使用的是预置容量,则应确保您没有受到限制。

于 2019-09-23T17:29:30.190 回答