【零成本入门】如何用免费资源学习和实践 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,可以按照以下步骤进行:
- 创建亚马逊云科技账户(不会注册点这里)
首先,如果还没有AWS账号,前往AWS官网注册一个账号。
- 登录AWS管理控制台
进入AWS管理控制台,找到【DynamoDB】服务。
- 创建表
- 在DynamoDB控制台,点击“创建表”。
设置表的名称(如“User”)。
设计主键(Partition Key,例如“UserId”)。
根据需求设置排序键(Sort Key),如果需要的话。
其他参数保持默认或根据需求调整,然后点击“创建”。
- 添加数据 根据实际需求设置访问策略,确保数据安全且方便访问。
进入刚创建的表,点击“项目”标签。
点击“创建项目”或“添加项”。
输入数据,如:
UserId: 12345 Name: 张三 Age: 30
保存。
- 通过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
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 + " 的记录");
}
}
}
执行成功日志
平台可以查看到新增的数据:
- 查看官方文档和教程
- 官方文档:AWS DynamoDB Developer Guide
- 官方教程:DynamoDB入门教程
总结
学习 亚马逊 DynamoDB 并不复杂,关键在于有良好的学习规划和合理利用免费资源。从 AWS 免费套餐开始,结合官方文档和社区教程,动手去构建和实验小项目,你会逐渐熟悉这一强大数据库的特性和应用方式。希望这篇零成本学习指南能帮你开启 DynamoDB 之旅,打造你的云端数据技能!
友情提示
如果决定不再使用服务的话, 记得要在控制台关闭服务,以防超过免费额度产生扣费!