Использование GetRemaining () в Dynamodb C # не в состоянии загружать данные быстрее? - PullRequest
0 голосов
/ 20 сентября 2019

Я не могу загрузить данные в базу данных Dynamo, используя C #.мы использовали Scan и GetRemaining, что делает процесс очень медленным.Есть ли альтернативный вариант для загрузки списка данных быстрее?

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

Требуется 5-6 минут для загрузки 900 000 записей.это очень медленно, чем SQL

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Вы можете выполнить сегментированное / параллельное сканирование для параллельного сканирования таблицы.Каждый сегмент будет иметь свой собственный итератор, и вы сможете загружать данные намного быстрее.

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

Если вы используете выделенную емкость, вы должны убедиться, что вы не ограничены.

0 голосов
/ 20 сентября 2019

Сканирование в БД документов - это очень медленный процесс.Вместо того, чтобы выполнять сканирование, вы должны использовать запрос, который будет возвращать данные намного быстрее, поскольку они будут проиндексированы.

Думайте о сканировании, как о необходимости пролистать каждую страницу в книге, чтобы найти информацию.Вместо запроса, где книга содержит оглавление, которое поможет вам найти данные.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);
} 
...