Я новичок в DynamoDb и пытаюсь выполнить массовую вставку около 5,5 тыс. Элементов в мой локально работающий DynamoDb, используя Java. Несмотря на все мои усилия и различные настройки, я могу сделать это примерно за 100 секунд (даже после использования среды executor).
Я разместил свой код здесь , но не получил ответа.
Чтобы улучшить скорость вставки, я несколько раз пытался изменить значение Provisioned Throughput при создании таблицы, а затем узнал, что при локальном запуске DynamodB игнорирует значения пропускной способности. Поэтому я думаю, что это мой DynamodB, который не способен обрабатывать столько запросов на запись одновременно, и когда я делаю это на сервере AWS, производительность может улучшиться.
Это код, который я запускал для создания таблицы:
public static void main(String[] args) throws Exception {
AmazonDynamoDBClient client = new AmazonDynamoDBClient().withEndpoint("http://localhost:8000");
DynamoDB dynamoDB = new DynamoDB(client);
String tableName = "Database";
try {
System.out.println("Creating the table, wait...");
Table table = dynamoDB.createTable(tableName, Arrays.asList(new KeySchemaElement("Type", KeyType.HASH),
new KeySchemaElement("ID", KeyType.RANGE)
), Arrays.asList(new AttributeDefinition("Type", ScalarAttributeType.S),
new AttributeDefinition("ID", ScalarAttributeType.S)),
new ProvisionedThroughput(10000L, 10000L));
table.waitForActive();
System.out.println("Table created successfully. Status: " + table.getDescription().getTableStatus());
} catch (Exception e) {
System.err.println("Cannot create the table: ");
System.err.println(e.getMessage());
}
}
Но чтобы убедиться, что я хочу знать, какова единица емкости чтения и записи по умолчанию для локально работающего экземпляра Dynamodb?