关系(SQL)数据库和 DynamoDB 在访问方式方面的差异
要让您的应用程序能够访问数据库,其必须经过身份验证,以确保该应用程序能够使用数据库。此外,您的应用程序还必须获得授权,以使该应用程序只能执行它有权执行的操作。
下图说明客户端与关系数据库和 Amazon DynamoDB 之间的交互。
下表包含有关客户端交互任务的更多详细信息。
特征 | 关系数据库管理系统(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 GRANT 和 REVOKE 语句来控制对数据库对象 (如表) 、数据 (如表中的行) 或发出某些 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 错误状态和消息。 |