Amazon Athena Neptune コネクタ - Amazon Athena

Amazon Athena Neptune コネクタ

Amazon Neptune は、高速で信頼性に優れたフルマネージド型のグラフデータベースサービスで、高度に接続されたデータセットを使用するアプリケーションの構築と実行を容易にします。Neptune の高性能専用グラフデータベースエンジンは、数十億のリレーションシップを最適に保存し、ミリ秒単位のレイテンシーでグラフをクエリします。詳細については、「Neptune ユーザーガイド」を参照してください。

Amazon Athena Neptune コネクタは、Athena が Neptune グラフデータベースインスタンスとやり取りすることを可能にして、SQL クエリがNeptune グラフデータにアクセスできるようにします。

アカウントで Lake Formation を有効にしている場合、AWS Serverless Application Repository でデプロイした Athena フェデレーション Lambda コネクタの IAM ロールには、Lake Formation での AWS Glue Data Catalog への読み取りアクセス権が必要です。

前提条件

Neptune コネクタを使用するには、次の 3 つのステップが必要です。

制約事項

現在、Neptune コネクタには以下のような制限があります。

  • プライマリキー (ID) を含む列の射影はサポートされていません。

Neptune クラスターのセットアップ

使用したい既存の Amazon Neptune クラスターとプロパティグラフデータセットがない場合は、セットアップする必要があります。

Neptune クラスターをホストする VPC にインターネットゲートウェイと NAT ゲートウェイがあることを確認してください。Neptune コネクタ Lambda 関数が使用するプライベートサブネットには、この NAT ゲートウェイを経由するインターネットへのルートが必要です。Neptune コネクタの Lambda 関数は NAT ゲートウェイを使用して AWS Glue と通信します。

新しい Neptune クラスターをセットアップしてサンプルデータセットとともにロードする手順については、GitHub.com で「Sample Neptune Cluster Setup」(Neptune クラスターのセットアップ例) を参照してください。

AWS Glue Data Catalog のセットアップ

従来のリレーショナルデータストアとは異なり、Neptune グラフ DB ノードとエッジは設定されたスキーマを使用しません。各エントリには、異なるフィールドとデータ型を設定できます。ただし、Neptune コネクタは AWS Glue Data Catalog からメタデータを取得するので、必要なスキーマのテーブルを含む AWS Glue データベースを作成する必要があります。AWS Glue データベースとテーブル作成したら、コネクタは Athena からのクエリに使用できるテーブルのリストに入力できます。

大文字と小文字を区別しない列の照合を有効にする

AWS Glue の列名がすべて小文字である場合でも、Neptune テーブルの列名を正しい大文字と小文字で解決するには、大文字と小文字を区別しない照合を行うように Neptune コネクタを構成できます。

この機能を有効にするには、Neptune コネクタの Lambda 関数で enable_caseinsensitivematch 環境変数を true に設定します。

大文字と小文字を区別するテーブル名に AWS Glue glabel テーブルパラメータを指定する

AWS Glue は小文字のテーブル名のみをサポートしているため、Neptune 用の AWS Glue テーブルを作成する際には、glabel AWS Glue テーブルパラメータを指定することが重要です。

AWS Glue テーブルの定義に glabel パラメータを含めて、その値を元の大文字と小文字を区別したテーブル名に設定します。これにより、AWS Glue が Neptune テーブルとやり取りするときに、大文字と小文字が正しく区別された状態が維持されます。次の例では、glabel の値をテーブル名 Airport に設定します。

glabel = Airport
Neptune テーブルのテーブル名の大文字と小文字の区別が維持されるように glabel AWS Glue テーブルプロパティを正しく設定する

Neptune とのやり取りを考慮して AWS Glue Data Catalog を設定するための詳細については、GitHub.com に掲載されている「Set up AWS Glue Catalog」を参照してください。

パフォーマンス

Athena Neptune コネクタは、述語のプッシュダウンを実行して、クエリによってスキャンされるデータを減少させます。ただし、プライマリキーを使用する述語はクエリに失敗します。LIMIT 句はスキャンされるデータ量を減らしますが、述語が提供されない場合は、LIMIT 句を含む SELECT クエリは少なくとも 16 MB のデータをスキャンすることを想定する必要があります。Neptune コネクタは、同時実行によるスロットリングに強いです。

パススルークエリ

Neptune コネクタは、パススルークエリをサポートします。この機能を使用すると、プロパティグラフで Gremlin クエリを実行したり、RDF データに対して SPARQL クエリを実行したりできます。

Neptune でパススルークエリを作成するには、以下の構文を使用します。

SELECT * FROM TABLE( system.query( DATABASE => 'database_name', COLLECTION => 'collection_name', QUERY => 'query_string' ))

次の Neptune パススルークエリの例では、コード ATL の空港がフィルタリングされています。二重引用符はエスケープ用です。

SELECT * FROM TABLE( system.query( DATABASE => 'graph-database', COLLECTION => 'airport', QUERY => 'g.V().has(''airport'', ''code'', ''ATL'').valueMap()' ))

追加リソース

このコネクタに関するその他の情報については、GitHub.com で対応するサイトを参照してください。