【零成本入门】如何用免费资源学习和实践 Amazon DynamoDB

对于初学者和开发者来说,直接上手亚马逊云科技 复杂的云服务有时会感到畏难,尤其像 DynamoDB 这样功能强大但架构灵活的 NoSQL 数据库。幸好,AWS 为新用户和学习者提供了丰富的免费资源和实践机会,让你可以零成本逐步掌握 DynamoDB 的核心知识与技能。

本文将为你推荐最适合 DynamoDB 初学者的免费学习资源、学习路线以及实战建议,帮助你在最短时间内打下坚实基础。

为什么选择 亚马逊 DynamoDB 作为学习目标?

  • 无服务器架构:免去繁琐的数据库运维,专注学习。
  • 广泛使用:大公司和创业项目常用,掌握后提升职业竞争力。
  • 丰富文档和社区支持:AWS 官方和第三方都有大量教程资料。
  • 免费额度支持:AWS 免费套餐中包含 DynamoDB 使用权,实操零门槛。

亚马逊云科技 免费套餐里的 DynamoDB

AWS Free Tier(免费套餐)对 DynamoDB 的支持内容包括:

  • 每月免费 25 GB 存储空间
  • 每月 25 个写入容量单位(WCU)
  • 每月 25 个读取容量单位(RCU)
  • 无限量数据传输

这意味着在免费套餐期间,你可进行大量的读写操作,足够完成大部分学习和小型项目的需求。

为什么选择 DynamoDB?

  • 免运维:无需关注硬件、服务器、分片等,节省大量人力成本。
  • 高可用:数据自动复制,99.999% 服务可用性保障。
  • 弹性扩展:应对从几百到数亿请求的增长毫无压力。
  • 安全性:支持加密、访问控制、网络隔离。
  • 与 AWS 平台无缝集成:方便构建现代微服务和无服务器架构。

如何快速上手

要快速上手使用DynamoDB,可以按照以下步骤进行:

  1. 创建亚马逊云科技账户(不会注册点这里)

首先,如果还没有AWS账号,前往AWS官网注册一个账号。

  1. 登录AWS管理控制台

进入AWS管理控制台,找到【DynamoDB】服务。

03e3ba87bb74cf7740568192b7267187.jpeg

  1. 创建表
  • 在DynamoDB控制台,点击“创建表”。

c73dfd15f0d2c45e95d7f0b9fed70029.jpeg

  • 设置表的名称(如“User”)。

  • 设计主键(Partition Key,例如“UserId”)。

  • 根据需求设置排序键(Sort Key),如果需要的话。

  • 其他参数保持默认或根据需求调整,然后点击“创建”。

fd78180c2d0f96f29ec3655e83a7596b.jpeg

  1. 添加数据 根据实际需求设置访问策略,确保数据安全且方便访问。
  • 进入刚创建的表,点击“项目”标签。

  • 点击“创建项目”或“添加项”。

  • 输入数据,如:

    UserId: 12345
    Name: 张三
    Age: 30
    

    保存。

  1. 通过AWS SDK操作 (通过SDK操作可以不用手动建表)

使用Java操作DynamoDB:

<dependencies>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>dynamodb</artifactId>
        <version>2.20.26</version> <!-- 使用最新版本 -->
    </dependency>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>auth</artifactId>
        <version>2.20.26</version>
    </dependency>
</dependencies>

这里的区域根据自己的情况来选,我这里是在香港区域所以指定区域为 Region.AP_EAST_1

181fe5e9a733cca7ea8c2e10cd796f7c.jpeg

import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.*;

import java.net.URI;
import java.util.HashMap;
import java.util.Map;

public class DynamoDBExample {
    public static void main(String[] args) {
        String accessKey = "你的AccessKeyId";
        String secretKey = "你的SecretAccessKey";

        StaticCredentialsProvider credentialsProvider = StaticCredentialsProvider.create(
                AwsBasicCredentials.create(accessKey, secretKey)
        );
        // 初始化DynamoDB客户端(使用本地模拟或AWS区域)
        DynamoDbClient ddb = DynamoDbClient.builder()
                .region(Region.AP_EAST_1) // 指定区域
                .credentialsProvider(credentialsProvider)
                .build();

        String tableName = "Users";

        // 1. 创建表(如果还不存在)
        createTable(ddb, tableName);

        // 2. 插入数据
        putItem(ddb, tableName, "12345", "张三", 30);

        // 3. 查询数据
        getItem(ddb, tableName, "12345");

        // 关闭客户端
        ddb.close();
    }

    // 创建表方法
    public static void createTable(DynamoDbClient ddb, String tableName) {
        try {
            // 先检查表是否存在
            DescribeTableResponse describeResponse = ddb.describeTable(DescribeTableRequest.builder().tableName(tableName).build());
            System.out.println("表已存在: " + describeResponse.table().tableName());
        } catch (ResourceNotFoundException e) {
            // 如果不存在,创建新表
            CreateTableRequest request = CreateTableRequest.builder()
                    .tableName(tableName)
                    .keySchema(KeySchemaElement.builder()
                            .attributeName("UserId")
                            .keyType(KeyType.HASH)  // Partition key
                            .build())
                    .attributeDefinitions(AttributeDefinition.builder()
                            .attributeName("UserId")
                            .attributeType(ScalarAttributeType.S)
                            .build())
                    .provisionedThroughput(ProvisionedThroughput.builder()
                            .readCapacityUnits(5L)
                            .writeCapacityUnits(5L)
                            .build())
                    .build();

            ddb.createTable(request);
            System.out.println("创建表中,请稍后...");
            // 还可以添加等待表激活的逻辑
        }
    }

    // 插入数据
    public static void putItem(DynamoDbClient ddb, String tableName, String userId, String name, int age) {
        Map<String, AttributeValue> item = new HashMap<>();
        item.put("UserId", AttributeValue.builder().s(userId).build());
        item.put("Name", AttributeValue.builder().s(name).build());
        item.put("Age", AttributeValue.builder().n(String.valueOf(age)).build());
        PutItemRequest request = PutItemRequest.builder()
                .tableName(tableName)
                .item(item)
                .build();

        ddb.putItem(request);
        System.out.println("成功插入数据:UserId=" + userId);
    }

    // 查询数据
    public static void getItem(DynamoDbClient ddb, String tableName, String userId) {
        Map<String, AttributeValue> item = new HashMap<>();
        item.put("UserId", AttributeValue.builder().s(userId).build());
        GetItemRequest request = GetItemRequest.builder()
                .tableName(tableName)
                .key(item)
                .build();

        GetItemResponse response = ddb.getItem(request);
        if (response.hasItem()) {
            System.out.println("查询结果:" + response.item());
        } else {
            System.out.println("未找到用户ID为:" + userId + " 的记录");
        }
    }
}

执行成功日志

4d7aeb4392ff6eb0b6dca1b021a5565d.jpeg

平台可以查看到新增的数据:

1af58a73a1ef3a24ea2c7ea0f8960af9.jpeg

  1. 查看官方文档和教程

总结

学习 亚马逊 DynamoDB 并不复杂,关键在于有良好的学习规划和合理利用免费资源。从 AWS 免费套餐开始,结合官方文档和社区教程,动手去构建和实验小项目,你会逐渐熟悉这一强大数据库的特性和应用方式。希望这篇零成本学习指南能帮你开启 DynamoDB 之旅,打造你的云端数据技能!

友情提示

如果决定不再使用服务的话, 记得要在控制台关闭服务,以防超过免费额度产生扣费!

淡淡的心,回味的情