

# リレーショナル (SQL) データベースと DynamoDB へのアクセスの相違点
<a name="SQLtoNoSQL.Accessing"></a>

アプリケーションがデータベースにアクセスする前に、アプリケーションがデータベースの使用を許可されるように*認証*する必要があります。アプリケーションで、許可されているアクションのみ実行できるように、*許可*する必要があります。

次の図表は、クライアントのリレーショナルデータベースおよび Amazon DynamoDB とのやり取りを示します。

![\[リレーショナルおよび NoSQL データベースとのやり取り。\]](http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/images/SQLtoNoSQL.png)


次の表にクライアントのやり取りのタスクについての詳細があります。


****  

| 特徴 | リレーショナルデータベース管理システム (RDBMS) | Amazon DynamoDB | 
| --- | --- | --- | 
| データベースにアクセスするためのツール |  ほとんどのリレーショナルデータベースは、コマンドラインインターフェイス (CLI) を提供しており、アドホックな SQL ステートメントを入力して、結果をすぐに見ることができます。  | ほとんどの場合、アプリケーションコードを書き込みます。AWS マネジメントコンソール、AWS Command Line Interface (AWS CLI)、または NoSQL Workbench を使用して、アドホックリクエストを DynamoDB に送信し、結果を表示することもできます。[PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html) は SQL 互換のクエリ言語であり、DynamoDB でデータの選択、挿入、更新、および削除を行うことができます。 | 
| データベースに接続 | アプリケーションプログラムは、データベースを使用したネットワーク接続を確立し、維持します。アプリケーションが終了すると、接続を終了します。 | DynamoDB は、ウェブサービスで、その操作はステートレスです。アプリケーションは永続的ネットワーク接続を維持する必要はありません。代わりに、DynamoDB の操作は HTTP(S) リクエストおよびレスポンスを使用して行われます。 | 
| 認証 | アプリケーションが認証されるまでデータベースに接続できません。RDBMS は認証自体を実行できますし、ホストのオペレーティングシステムやディレクトリサービスにこのタスクをオフロードすることもできます。 | DynamoDB に対するすべてのリクエストは、その特定のリクエストを認証する暗号署名と共に使用しなければなりません。AWS SDK は、署名の作成とリクエストの署名に必要なすべての論理を提供します。詳細については、「AWS 全般のリファレンス.」の「[AWS API リクエストの署名](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html)」を参照してください。 | 
| Authorization | アプリケーションは承認されたアクションのみ実行できます。データベース管理者またはアプリケーション所有者は、SQL GRANT および REVOKE ステートメントを使用して、データベースオブジェクト (テーブルなど)、データ (テーブル内の行など)、特定の SQL ステートメントを発行する機能へのアクセスを制御できます。 | DynamoDB では、AWS Identity and Access Management (IAM) が承認を行います。DynamoDB リソース (テーブルなど) へのアクセス許可を付与する IAM ポリシーを記述し、ユーザーとロールがそのポリシーを使用できるようにします。IAM では、DynamoDB テーブルの個々のデータ項目に対する詳細なアクセス制御といった特徴も備えています。詳細については、「[Amazon DynamoDB の Identity and Access Management](security-iam.md)」を参照してください。 | 
| リクエストを送信 | アプリケーションは、実行するすべてのデータベース操作に対する SQL ステートメントを発行します。SQL ステートメントを受信すると、RDBMS は構文を確認し、オペレーションを実行するための計画を作成してから、計画を実行します。 | アプリケーションは、HTTP(S) リクエストを DynamoDB に送信します。リクエストには、パラメータとともに、実行する DynamoDB オペレーションの名前が含まれます。DynamoDB はリクエストを直ちに実行します。 | 
| レスポンスを受信 | RDBMS は SQL ステートメントから結果を返します。エラーがある場合は、RDBMS はエラー状況とエラーメッセージを返します。 | DynamoDB は、オペレーションの結果を含む HTTP(S) レスポンスを返します。エラーがあると、DynamoDB は、HTTP エラー状況およびエラーメッセージを返します。 | 