0

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

我在这里发布了我的代码,但没有得到答案。

为了提高插入率,我在创建表时尝试了多次更改预置吞吐量值,然后我知道在本地运行时,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 实例的默认读写容量单位是多少?

4

1 回答 1

2

DynamoDBLocal 不会以任何方式实现吞吐量限制。如果您的吞吐量是有限的,它会受到您运行它的硬件的限制。

来自DynamoDB 本地文档

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

根据这个对相关问题的回答,性能明显很差,因为 DynamoDB 本地在幕后使用 SQLite。由于实现与真正的 DynamoDB 不同,我们应该预期性能也会有所不同。

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

于 2019-06-30T20:51:45.083 回答