零基础5分钟上手亚马逊云科技核心云架构知识-创建NoSQL数据库

devtools/2024/9/24 1:16:33/

简介:

欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。

我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何如何利用亚马逊云科技NoSQL数据库DynamoDB开发一个视频平台用户观看历史追踪功能。本方案架构图如下:

方案所需基础知识 

什么是亚马逊云科技 DynamoDB?

亚马逊云科技 DynamoDB 是一款全托管的 NoSQL 数据库服务,专为处理需要高性能、高可用性和大规模数据存储的应用而设计。DynamoDB 提供了灵活的键值和文档数据模型,支持自动扩展存储和计算资源,确保应用在各种负载下都能快速响应。由于其完全托管的特性,开发者无需担心底层基础设施的维护,可以专注于应用的开发和优化。

利用 NoSQL 数据库开发的优势

高性能与可扩展性

NoSQL 数据库,如 DynamoDB,能够处理高吞吐量的读写请求,适应大规模用户访问的场景。它支持自动水平扩展,能够根据流量需求动态调整资源,确保应用在高负载下仍能保持快速响应。

灵活的数据模型

与传统关系型数据库不同,NoSQL 数据库提供了更加灵活的数据模型。开发者可以根据业务需求存储和查询结构化或半结构化数据,无需事先定义固定的表结构。这种灵活性使得开发速度加快,适应不断变化的业务需求。

高可用性与持久性

DynamoDB 分布在多个可用区,确保数据的高可用性和持久性。即使在某个区域发生故障,DynamoDB 仍然能够确保数据的安全性和可访问性,支持企业级应用的连续性和可靠性。

简化运维

由于 DynamoDB 是完全托管的服务,开发者无需担心数据库的配置、维护和备份。亚马逊云科技会自动处理这些任务,降低了运维成本和复杂性,使开发团队可以专注于业务逻辑的实现。

成本优化

NoSQL 数据库通常采用按需计费模式,DynamoDB 提供了基于使用量的灵活定价。企业可以根据实际使用情况调整资源配置,避免资源浪费,优化成本支出。

本方案包括的内容

1. 创建一个DynamoDB NoSQL数据库

2. 为DynamoDB数据库动态表添加数据

3. 对DynamoDB数据库中的表进行数据查询

项目搭建具体步骤

1. 打开亚马逊云科技控制台,进入DynamoDB服务主页

2. 点击Create Table创建一个表

3. 为表起名“UserVideoHistory”,并根据业务设置分区键“userid”和排序键“lastDateWatched”,并选择类型。其他配置选择默认配置后,点击Create Table创建表。

4. 创建成功后,进入表,点击“Action”->"Create Item",为DynamoDB数据表添加数据。

5. 添加一条userid字段数据”12345-abcd-6789“,和lastDateWatched字段数据”1619156406“。再创建三个新的字段videoid、preferredLanguage和supportedDeviceTypes,类型分别为String、String、List,并添加数据”9875-djac-1859“、"English"和[”Amazon Fire TV“, "Amazon Fire Tablet"]。最后点击Create item添加数据。

6. 接下来我们进入DynamoDB主页的”Explore Items“功能,用于查询数据。我们点击查询类型为Query精确搜索,设置搜索条件如下:userid字段为”12345-abcd-6789“,lastDateWatched字段为”1619156406“,然后点击Run进行搜索

7.通过精确搜索Query我们就可以查询到我们刚刚创建的记录了,点击搜索结果可以看到具体的数据。

如何通过代码创建和调用DynamoDB数据库

下面是使用 Python SDK boto3 创建一个 DynamoDB 表并利用 query 方法进行搜索的代码示例

import boto3# 创建 DynamoDB 客户端
dynamodb = boto3.client('dynamodb')# 创建一个 DynamoDB 表
table_name = 'MyTable'
try:response = dynamodb.create_table(TableName=table_name,KeySchema=[{'AttributeName': 'PrimaryKey','KeyType': 'HASH'  # 分区键},{'AttributeName': 'SortKey','KeyType': 'RANGE'  # 排序键}],AttributeDefinitions=[{'AttributeName': 'PrimaryKey','AttributeType': 'S'  # 字符串类型},{'AttributeName': 'SortKey','AttributeType': 'S'  # 字符串类型}],ProvisionedThroughput={'ReadCapacityUnits': 5,'WriteCapacityUnits': 5})print(f"Table {table_name} is being created.")
except dynamodb.exceptions.ResourceInUseException:print(f"Table {table_name} already exists.")# 等待表创建完成
dynamodb.get_waiter('table_exists').wait(TableName=table_name)
print(f"Table {table_name} is ready.")# 查询 DynamoDB 表
def query_table(primary_key_value, sort_key_value):response = dynamodb.query(TableName=table_name,KeyConditionExpression='PrimaryKey = :pk and SortKey = :sk',ExpressionAttributeValues={':pk': {'S': primary_key_value},':sk': {'S': sort_key_value}})return response['Items']# 示例查询
items = query_table('ExamplePrimaryKey', 'ExampleSortKey')
print(f"Queried items: {items}")

代码解释:

创建 DynamoDB 客户端:

boto3.client('dynamodb') 用于创建与 DynamoDB 服务的连接。

创建 DynamoDB 表:

使用 create_table 方法定义表的名称、主键模式(分区键和排序键)以及其属性类型。
ProvisionedThroughput 定义了读取和写入容量单元(RCU 和 WCU)。
等待表创建完成:

dynamodb.get_waiter('table_exists').wait(TableName=table_name) 等待表创建完成。
查询 DynamoDB 表:

使用 query 方法进行查询,根据分区键和排序键来搜索表中的项目。
示例查询:

query_table 函数用来执行查询,并返回匹配的项目列表。

以上就是在亚马逊云科技上创建DynamoDB动态表架构,写入和查询数据的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案!


http://www.ppmy.cn/devtools/99969.html

相关文章

python绘制爱心代码

效果展示 完整代码 Python中绘制爱心的代码可以通过多种方式实现,高级的爱心代码通常指的是使用较复杂的算法或者图形库来生成更加精致的爱心图形。下面是一个使用Python的Turtle模块来绘制爱心的示例代码: import turtledef draw_love():turtle.speed…

Flutter 自动化测试 - 集成测试篇

Flutter集成测试 Flutter官方对Flutter应用测试类型做了三个阶段划分,分别为Unit(单元)测试、Widget(组件)测试、Integration(集成)测试。按照维护成本来看的话从左到右依次增高,按照…

linux df -h时没有查到root盘,root文件夹带着锁或者叉号的解决办法

文章目录 一、前言二、来龙去脉1、2、给root文件赋予权限3 、这个时候df -h 查看就可以看到root文件了 总结 一、前言 当时装的双系统,自认为会学习很多linux相关课程,买了个1T的固态,ubuntu上分了很多,结果显而易见,…

51单片机——按键控制

1、按键介绍 轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。 2、按键的抖动 对于机械开关,当机械触点断开、闭合时,由于…

一文迅速上手 ESP32 bluedroid 蓝牙从机开发

前言 个人邮箱:zhangyixu02gmail.com该博客主要针对希望迅速上手 ESP32 蓝牙从机开发人员,因此,很多蓝牙技术细节知识并不会进行介绍,仅仅介绍我认为需要了解的 API 函数和回调内容。本文主要是基于gatt_server demo来微调进行进…

HC32 华大DMA 传输

1,DMA原理图 2,功能描述 1 使能 DMA 控制器 使用 DMA 时需要先将功能时钟控制 0 寄存器 FCG0.DMAx 位写 0 允许 DMA 的时钟 供给,再将 DMA 使能寄存器 DMA_EN.EN 位写 1。 同时, DMA 需要外围电路来启动 传输,所以 F…

AI视频创作原理

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

TCP 协议的相关特性

TCP有许多可信特性在这里我们只讲解一部分的特性后续将会进行补充。 一,确认应答 接收方收到数据之后,就要给发送方返回一个应答报文(ack),TCP引入序号和确认序号的(由于TCP是面向字节流的所以此处的编号是…