Amazon DynamoDB 是一种完全托管的 NoSQL 数据库服务,专为高性能和可扩展性设计,特别适合需要快速响应和高吞吐量的应用场景,如移动应用、游戏、物联网和实时分析等。
工作原理
Amazon DynamoDB 在任何规模下响应时间一律达毫秒级,使您能够开发并运行现代应用程序,同时只需为实际使用量付费。其核心工作原理包括以下几个方面:
1. 数据存储与管理:DynamoDB 支持 NoSQL Workbench,允许用户配置表和键值对。它具有静态加密、按需容量模式、多区域复制等特性,确保数据的安全和高可用性。
2. 全球表和恢复:通过全球表功能实现跨多个亚马逊云科技区域的同步,支持任意时刻恢复 (Point-in-time Recovery),确保数据完整性和恢复能力。
3. PartiQL 支持:允许使用 SQL 类查询语法查询 DynamoDB 数据。
4. 集成与数据流导出:DynamoDB 支持与亚马逊云科技其他服务集成,如 Amazon S3、Amazon Glue、Kinesis 数据流等,实现数据导出、分析和监控,增强数据处理和安全性。
通过这些机制,DynamoDB 提供了一个高度可扩展、灵活的数据库解决方案,满足现代应用的需求,具体如下图所示:
免费额度
DynamoDB 的免费套餐提供 25GB 的存储空间,以及 25 个预置的写入容量单位和 25 个预置的读取容量单位 (WCU、RCU),足以处理每月 2 亿个请求。写入和读取容量单位可以通过表的其他设置选项卡中进行查看,注意不要超过免费额度,不然会产生费用。
注册账号
在使用 Amazon DynamoDB 之前,需要先注册亚马逊云科技官方账号。
重要说明:申请 AWS 必须持有一张信用,比如万事达、运通卡、VISA卡、银联信用卡
1、 登录亚马逊云科技官方网站,点击右上角的登录控制台。然后选择创建新 AWS账号
2、按照提示填写邮件地址与账户名称,然后点击验证电子邮件地址。
3、查看邮箱中的验证码
4、输入验证码,点击验证
5、验证通过后输入根用户密码两次后并点击继续。
6、按照提示输入联系人信息后并点击继续,所有信息不能用中文、拼音。
7、输入信用卡信息后点击继续,万事达、运通卡、VISA卡、银联信用卡都可以。
8、确认身份信息后点击继续,中国地区代码+86。
9、输入短信验证码后继续。
10、选择支持计划,选第一个基本支持 – 免费的即可。
登录控制台
账号注册完成之后,点击这里登录控制台,选择根用户,然后输入刚刚注册账号时用的邮箱。
点击下一步,输入密码,点击登录。
然后就到了亚马逊云科技的控制台主页,具体如下:
在搜索栏中输入 DynamoDB 并选择打开 DynamoDB 控制台。
创建NoSQL表
1、 创建表
在 DynamoDB 控制台上,点击 Create table(创建表)。
2、 添加表名
在 Table name(表名)文本框中,输入 Music
3、 设置Partition key
在 Partition key(分区键)文本框中,输入 Artist,其主要是用于跨分区分布数据以实现可扩展性
4、 设置 Sort key
在 Sort key(排序键)文本框中,输入 songTitle,用排序键轻松排序。
5、 启用 DynamoDB 自动扩缩。
选择 Customize settings(自定义设置),他会基于请求量改变表的读写能力自动扩缩
6、 点击Create table
点击 Create table(创建表)。当 Music 表可用时,它会出现在表列表中并带有一个复选框。
操作数据
对表中数据进行操作时,可以通过可视化页面进行操作,也可以通过下面的方式进行操作。
连接到DynamoDB
需要提供亚马逊云科技的访问秘钥凭证和地区,通过boto3.resource来创建一个DynamoDB客户端,注意需要安装boto3库。可以通过pip install boto3进行安装
# 指定亚马逊云科技访问密钥和凭证
ACCESS_KEY = 'your-access-key'
SECRET_KEY = 'your-secret-key'
REGION = 'ap-east-1'
# 创建DynamoDB客户端
dynamodb = boto3.resource('dynamodb',region_name=REGION,aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY)
新增
Music就是我们的一开始创建的表名,Item里面的id就是我们的主键
# 获取DynamoDB表
table = dynamodb.Table('Music')
# 将文本内容插入到DynamoDB表中
table.put_item(
Item={
'id': '1',
'text': "青花瓷"
}
)
查询
这里我们查整个表
table = dynamodb.Table('Music')
response = table.scan()
items = response['Items']
print(items)
结果如下
[{'id': '1', 'text': '青花瓷'}]
修改
# 定义要更新的项的主键
key = {'id': '1'}
# 更新数组,追加一个新的整数
table.update_item(
Key=key,
UpdateExpression='SET #attrName = :attrValue',
ExpressionAttributeNames={'#attrName': 'text'},
ExpressionAttributeValues={':attrValue': '这就是爱'}
)
删除
# 定义需要删除的数据的主键
item_key = {'id': '1'}
# 删除数据
response = table.delete_item(Key=item_key)
总结
Amazon DynamoDB 提供了一个灵活、可靠且高扩展性的数据库解决方案,用户可以轻松创建表、管理数据,并与亚马逊云科技生态系统无缝集成,为开发现代应用程序提供了极大便利。