Какова Предоставленная пропускная способность по умолчанию (единица емкости чтения и записи) для локально работающего DynamoDb? - PullRequest
0 голосов
/ 30 июня 2019

Я новичок в 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?

1 Ответ

2 голосов
/ 30 июня 2019

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

Из локальных документов DynamoDB :

Скорость операций чтения и записи данных таблицы ограничена только скоростью вашего компьютера.

Согласно этому ответу на связанный вопрос производительность заметно снижается, поскольку локальный DynamoDB использует SQLite за кулисами.Поскольку реализация отличается от реальной DynamoDB, следует ожидать, что производительность также будет отличаться.

Если вам нужно провести какое-либо тестирование производительности с DynamoDB, вы должны использовать настоящую DynamoDB.Моя компания использовала DynamoDB для приложений с десятками тысяч операций чтения и записи в секунду без каких-либо проблем с масштабированием от DynamoDB, поэтому я могу засвидетельствовать, что настоящая DynamoDB будет работать намного лучше, чем DynamoDB Local.

...