使用 Amazon DynamoDB 为移动应用程序设计数据库

模块 1:背景和设置

首先,您将学习如何对 DynamoDB 表进行建模,以满足应用程序的所有访问模式需求

背景和设置

假设您正在开发一款移动应用程序,用于上传照片。用户可以通过这款应用程序上传照片,好友则可以查看上传的照片。

这是一款社交应用,因此用户需要能够查找并关注好友。关注好友后,用户会收到好友发布新照片的通知,并可以给好友发送消息。

使用这款应用时,用户希望能够浏览特定用户的所有照片,并以最新照片优先的顺序显示。

最后,用户可以对照片做出四种表情互动 - 爱心、笑脸、点赞或太阳镜。查看照片时,用户可以看到该照片收到的每种互动的数量。

在本教程中,您将学习如何对 DynamoDB 表进行建模,以满足应用的所有访问模式需求。后续模块将介绍一些核心的数据建模策略,以及如何使用新的事务功能,让您能够高效快速地使用 DynamoDB。

本模块的步骤包括配置环境和下载代码,以便在教程中参考示例代码。

 时长

20 分钟

 使用的服务

操作步骤

  • 使用已有个人 AWS 账户或创建新的 AWS 账户。不要使用组织账户。个人账户更能充分利用 AWS 提供的服务,而且避免造成资源遗留。如果您在教程结束后未删除使用过的资源,可能会产生 AWS 资源费用。

  • AWS Cloud9 是基于云的集成开发环境 (IDE)。使用 AWS Cloud9 IDE,您只需使用浏览器即可编写、运行和调试代码。AWS Cloud9 包含一个代码编辑器、一个调试器和一个终端。AWS Cloud9 中还预先打包了流行编程语言的基本工具和预安装的 AWS 命令行界面 (CLI)。这样,您就不必在您的本地电脑上为此次实验安装和配置这些工具文件。您在 AWS Cloud9 环境中的 AWS 资源访问权限与在 AWS 管理控制台上的资源访问权限相同。

    设置 AWS Cloud9 开发环境的步骤如下:

    1. 前往 AWS 管理控制台。在页面顶部栏,选择 Services(服务),然后选择 Developer Tools(开发者工具)下拉列表中的 Cloud9
    2. 点击 Create environment(创建环境)。
    3. Name(名称)框中输入 DynamoDB Quick Photos
    4. 点击 Next step(下一步)。
    5. 保留默认的 Environment settings(环境设置),创建一个新的 t2.micro EC2 实例,该实例在 30 分钟无活动后会进入休眠状态。
    6. 点击 Next step(下一步)。
    7. 检查环境名称和设置,然后点击 Create environment(创建环境)。环境预配需要几分钟时间才能完成。
    8. 环境准备就绪后,IDE 会自动打开并显示欢迎信息。

    此时,您应该可以看到您的 AWS Cloud9 环境界面。AWS Cloud9 控制台分为三个主要区域,如下图所示:

    • File explorer(文件资源管理器):位于界面左侧区域,显示您目录中的文件列表。
    • File editor(文件编辑器):位于界面右上区域,您可以在其中查看和编辑从文件资源管理器中选择的文件。
    • Terminal(终端):位于 IDE 的右下区域,您可以在其中运行用来执行示例代码的命令。
    AWS Cloud9 Console
  • 在本教程中,您将使用 Python 脚本与 DynamoDB API 进行交互。请在 AWS Cloud9 终端中运行以下命令,下载并解压模块代码。

    cd ~/environment
    curl -sL https://s3.amazonaws.com/ddb-labs/quick-photos.tar | tar -xv

    请在 AWS Cloud9 终端中运行以下命令,查看您的目录

    ls

    在 AWS Cloud9 文件管理器中,您应当会看到两个目录:

    • application 目录:application 目录中包含读取和写入表数据的示例代码。这些代码与真实移动应用程序后端的代码类似。
    • scripts 目录:scripts 目录中包含管理员级别的脚本,例如创建表、添加二级索引或删除表等。

总结

在本模块中,您了解了将在本教程中开发的示例应用程序,还创建了一个 AWS 账户,配置了一个 AWS Cloud9 实例。

现在,您已准备好开始本教程了。使用 DynamoDB 时,务必要预先规划数据模型,以便应用程序能保持快速、稳定的性能。在下一个模块中,您将学习规划数据模型。

规划数据模型