dayjournal memo

Total 977 articles!!

Try #106 – Amazon S3 Express One ZoneのデータをAmazon Athenaで空間検索してQGISで可視化してみた

Yasunori Kirimoto's avatar

img

img




この記事は、「AWS Advent Calendar 2023」の11日目の記事です。


Amazon S3 Express One ZoneのデータをAmazon Athenaで空間検索してQGISで可視化してみました!

以前、S3 Standardで検証した記事を投稿しました。今回はre:Invent 2023で発表された新しいS3 Express One Zoneで検証しました。S3 Express One Zoneを利用した時のAthenaとの連携・Geospatialな空間検索・検索速度の向上などに焦点を当ててその結果を紹介します!

S3 Express One Zoneは、高パフォーマンスを重視したAmazon S3のストレージオプションです。このオプションは東京リージョンでも利用可能で、S3 Standardストレージクラスと比較して最大10倍の優れたパフォーマンスを提供する設計になっています。また、リクエスト料金はS3 Standardよりも50%削減されています。このサービスを利用するには、「ディレクトリバケット」と呼ばれる特定のバケットタイプを利用します。



事前準備

Amazon Athenaで利用するGISデータを準備します。今回は事前にQGISで4種類のサンプルデータを作成しました。


ポイント・ライン・ポリゴンのGISデータをそれぞれCSV(TSV形式)で準備しました。

img


追加で100万ポイントのGISデータをCSV(TSV形式)で準備しました。

img


今回のサンプルデータはGitHubのリポジトリにあるのでぜひご利用ください。
sample data



バケット作成 & データ登録 (S3 Express One Zone)

Amazon S3 Express One Zoneでバケット作成とデータ登録します。


AWSマネジメントコンソール → S3をクリック。

img


「バケットを作成」をクリック。

img


リージョン・バケットタイプをディレクトリ・アベイラビリティーゾーン・ベース名を設定。

img


指定名称のバケットが作成されます。

img


対象のバケットを選択 → 「アップロード」をクリック。

img


登録したいファイルを選択 → 「アップロード」をクリック。

img


アップロードされたファイルを確認。

img


今回は4種類のCSV(TSV形式)を任意の名称でディレクトリバケットに保存しました。

img


これでS3 Express One Zoneのデータ登録は完了です!



クエリ保存先を設定

Amazon Athenaでクエリ保存先を設定します。


事前に任意の名称でクエリ保存先のS3バケットを準備します。

img


AWSマネジメントコンソール → Athenaをクリック。

img


「クエリエディタを起動」をクリック。

img


「設定」をクリック。

img


「管理」をクリック。

img


クエリ保存先のS3バケットを指定 → 「保存」をクリック。

img


クエリの保存先が設定される。

img


これでクエリ保存先の設定は完了です!



テーブル作成

Amazon Athenaでテーブルを作成します。


Athenaのクエリエディタ → テーブルとビュー作成 → 「S3バケットデータ」をクリック。

img


テーブル名・データベース選択・対象のS3バケット指定・データ形式・カラム設定。プレビュー確認 → 「テーブルを作成」をクリック。

S3 Express One Zoneのバケットは、現状で一覧に表示されないので直接アドレスを入力する必要があります。アドレスの頭は「s3://」で指定します。

img


今回は4つの任意のテーブルを作成しました。対象のテーブル → 「テーブルをプレビュー」をクリック。

img


取得したレコードが表示されます。

img


これでテーブルの作成は完了です!S3 Express One Zoneでも問題なくAthenaで読み込めることが確認できました。



空間検索

最後に、Amazon AthenaでGeospatialな空間検索を実行します。


ポリゴンから重心のポイントを取得してみます。結果データをダウンロードします。

S3 Standard
キュー内の時間: 0.243秒、実行時間: 0.799秒、データ: 1.5KB

S3 Express One Zone
キュー内の時間: 0.120秒、実行時間: 0.899秒、データ: 1.5KB

SELECT "geospatial_database"."polygon_table"."name", ST_Centroid(ST_GeometryFromText("geospatial_database"."polygon_table"."wkt")) FROM "geospatial_database"."polygon_table";

img


ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

img


ラインから始点のポイントを取得してみます。結果データをダウンロードします。

S3 Standard
キュー内の時間: 0.175秒、実行時間: 0.601秒、データ: 1.05KB

S3 Express One Zone
キュー内の時間: 0.119秒、実行時間: 0.948秒、データ: 1.05KB

SELECT "geospatial_database"."line_table"."name", ST_StartPoint(ST_GeometryFromText("geospatial_database"."line_table"."wkt")) FROM "geospatial_database"."line_table";

img


ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

img


ポリゴン内に含まれるポイントのみを取得してみます。結果データをダウンロードします。

S3 Standard
キュー内の時間: 0.313秒、実行時間: 1.230秒、データ: 2.01KB

S3 Express One Zone
キュー内の時間: 0.073秒、実行時間: 0.993秒、データ: 2.01KB

SELECT "geospatial_database"."point_table"."name", "geospatial_database"."point_table"."wkt" FROM "geospatial_database"."point_table", "geospatial_database"."polygon_table" WHERE ST_Within(ST_GeometryFromText("geospatial_database"."point_table"."wkt"), ST_GeometryFromText("geospatial_database"."polygon_table"."wkt"));

img


ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

img


100万件のポリゴン内に含まれるポイントのみを取得してみます。大量GISデータの検索でも高速にレスポンスされました。結果データをダウンロードします。

S3 Standard
キュー内の時間: 0.220秒、実行時間: 2.832秒、データ: 46.41MB

S3 Express One Zone
キュー内の時間: 0.117秒、実行時間: 2.843秒、データ: 46.41MB

SELECT "geospatial_database"."randompoint_table"."name", "geospatial_database"."randompoint_table"."wkt" FROM "geospatial_database"."randompoint_table", "geospatial_database"."polygon_table" WHERE ST_Within(ST_GeometryFromText("geospatial_database"."randompoint_table"."wkt"), ST_GeometryFromText("geospatial_database"."polygon_table"."wkt"));

img


ダウンロードしたデータをQGISで可視化すると処理結果データを表示確認できます。

img

img


AthenaでS3 Express One Zoneに登録したデータを空間検索することができました!



今回の検証で、S3 Express One Zoneを利用した場合でも、Athenaとの連携やGeospatialな空間検索が実現可能であることが確認できました。

空間検索については、一部の検索で120%以上のパフォーマンス向上がありましたが、全体としては大きな速度向上は確認できませんでした。これは、S3 Express One Zoneが小さいサイズの多数のファイル処理に特化しているため、今回の検証で利用した大規模な空間検索データには適していない可能性があります。

ただ、ストレージコストの削減という点ではS3 Express One Zoneを利用することに大きな利点があると思いました!



Amazon AthenaとAmazon S3とQGISについて、他にも記事を書いています。よろしければぜひ。
tags - Amazon Athena
tags - Amazon S3
tags - QGIS



book

Q&A