关系(SQL)数据库和 DynamoDB 在访问方式方面的差异 - Amazon DynamoDB

关系(SQL)数据库和 DynamoDB 在访问方式方面的差异

要让您的应用程序能够访问数据库,其必须经过身份验证,以确保该应用程序能够使用数据库。此外,您的应用程序还必须获得授权,以使该应用程序只能执行它有权执行的操作。

下图说明客户端与关系数据库和 Amazon DynamoDB 之间的交互。

与关系数据库和 NoSQL 数据库的交互。

下表包含有关客户端交互任务的更多详细信息。

特征 关系数据库管理系统(RDBMS) Amazon DynamoDB
用于访问数据库的工具

大多数关系数据库提供了命令行界面 (CLI),以便您能够输入临时 SQL 语句并立即查看结果。

大多数情况下,您将编写应用程序代码。此外,您还可以使用 AWS Management Console、AWS Command Line Interface (AWS CLI) 或 NoSQL 向 DynamoDB 发送临时请求并查看结果。PartiQL 是一种与 SQL 兼容的查询语言,它使您能够在 DynamoDB 中选择、插入、更新和输出数据。
连接到数据库 应用程序会建立和维护与数据库的网络连接。当应用程序完成时,它将终止连接。 DynamoDB 是一项 Web 服务,与其进行的交互是无状态的。应用程序不需要维护持久性网络连接。相反,与 DynamoDB 的交互是通过 HTTP(S) 请求和响应进行的。
身份验证 应用程序在经过身份验证之前无法连接到数据库。RDBMS 可自行执行身份验证,也可以将该任务分载到主机操作系统或目录服务。 对 DynamoDB 发出的每个请求均必须附有一个加密签名,此签名将对特殊请求进行身份验证。AWS SDK 提供了创建签名和签署请求所需的所有逻辑。有关更多信息,请参阅《AWS 一般参考》中的签署 AWS API 请求
授权 应用程序只能执行自身获得授权的操作。数据库管理员或应用程序所有者可以使用 SQL GRANTREVOKE 语句来控制对数据库对象 (如表) 、数据 (如表中的行) 或发出某些 SQL 语句的功能的访问权。 在 DynamoDB 中,由 AWS Identity and Access Management (IAM) 处理授权。您可以编写 IAM policy 来授予针对 DynamoDB 资源(如表)的权限,然后允许用户和角色使用该策略。IAM 还具有针对 DynamoDB 表中各个数据项的精细访问控制功能。有关更多信息,请参阅 适用于 Amazon DynamoDB 的 Identity and Access Management
发送请求 应用程序为要执行的每个数据库操作发出一个 SQL 语句。收到 SQL 语句后,RDBMS 将检查其语法,创建执行操作的计划,然后执行该计划。 应用程序将 HTTP(S) 请求发送到 DynamoDB。该请求包含要执行的 DynamoDB 操作的名称和参数。DynamoDB 立即运行请求。
接收响应 RDBMS 返回来自 SQL 语句的结构。如果出错,RDBMS 将返回错误状态和消息。 DynamoDB 返回一个包含操作结果的 HTTP(S) 响应。如果出错,DynamoDB 将返回 HTTP 错误状态和消息。