本地运行的DynamoDb的默认预配置吞吐量(读写容量单位)是多少?

时间:2019-06-30 15:49:39

标签: java amazon-web-services amazon-dynamodb executorservice dynamo-local

我是DynamoDb的新手,并尝试使用Java在本地运行的DynamoDb上批量插入约5.5k项。尽管做出了最大的努力,并且进行了各种调整,但我仍然能够在大约100秒内完成此操作(即使在使用了executor框架之后)。

我发布了代码here,但是没有得到答案。

为了提高插入率,我尝试在创建表时多次更改Provisioned Throughput值,然后才知道在本地运行时,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 个答案:

答案 0 :(得分:2)

DynamoDBLocal不以任何方式实现吞吐量限制。如果吞吐量受限制,则受运行硬件的限制。

来自DynamoDB Local docs

  

对表数据进行读写操作的速度仅受计算机速度的限制。

根据this answer的相关问题,由于DynamoDB本地在后台使用SQLite,因此性能明显较差。由于实现与真正的DynamoDB不同,因此我们应该期望性能也会有所不同。

如果需要使用DynamoDB进行任何性能测试,则应使用真正的DynamoDB。我的公司已将DynamoDB用于每秒读取和写入数以万计的应用程序,而DynamoDB没有任何扩展问题,因此我可以证明,真正的DynamoDB的性能将比DynamoDB Local更好。