GraphQLでDynamoDBにアクセス

サーバーレスのシステムにてDynamoDBへのアクセスには、GraphQLを使用します。
GraphQLは、AWS AppSyncサービスを用います。
AppSyncの紹介サイトでは、以下の様な紹介がされています。

AWS AppSync は、サーバーレスの GraphQL および Pub/Sub API を作成し、単一のエンドポイントを通じて安全にデータの照会、更新、公開を行うことで、アプリケーションの開発を簡素化します。 

AWS Appsyncサービス紹介サイト から引用

単一のエンドポイン、アプリケーションの開発を簡素化 と記載さていますが、実際に使用してみると、非常に簡単にセキュアなDynamoDBへのアクセスが可能となります。

テーブルの設定などは、schema.graphql というファイルに定義を行い、Amplify pushによって、IFに関するコードやシステム側の設定を行う事が出来ます。

私が感じているメリットとしては、以下の通りです。

  • 必要な構成を指定し、抽出条件を設定するだけで、欲しい情報が取得できる
  • テーブルを結合した場合の取り扱いが分かりやすい。間違えにくい。
    結果はkey-value形式。
  • アクセス権限もテーブルごとに記述することで細かく設定できる。
  • テーブル間の結合は、indexを利用。双方向で結合を指定できる。 
  • データ取得の内容や機能を指定できる。
  • GraphQLのIFを利用して、Lambda関数の実行も可能です。

一方、RDBでは当たり前ですが、オートカウントの様な機能が無いため、連続したユニークな番号が必要な場合は、アトミックカウントの機能を作り込む必要があります(こちらは後日記事としてUPします)

RDBのようにデータベース側での設定をする必要が無く、schema.graphql の内容を見ればテーブル構成を確認できる点も気に入っています。

DynamoDBを使ったシステムの構築をする際にGraphQLを使われてみてはいかがでしょうか?
GraphQLについては、幅広い機能を持っていますので、今後も投稿していきます

本記事にたいする質問やお問合せ・IT改善のご相談はこちら