Kinesis から S3 へのログの保存、Athena と Glue
前提
複数のアプリケーションから、Kinesis Data Streamsへログを送信している。 このログを(必要に応じて加工して)S3 に保存したい。 Kinesis から S3 におくる
大きく二つの方法が考えられる
Kinesis Data Streams から Lambda でレコードを取得して、S3 へ Put する。 なんでもできるが、自分で実装する必要がある。
Kinesis Data Streams を送信元として、 Kinesis Firehose に送る。 Kinesis Firehose の送信先にS3を指定する。
Lambda でレコードの変換を行うこともできる。
S3 への配信前にデータを圧縮や暗号化も行える。
Athena と Glue
あらゆるログは、全てとにかく S3 へ永続化
アドホックなクエリは、Athenaで
データベースとテーブル
クエリを投げる前に、データセットのスキーマを定義しておく必要がある(テーブル)
Athena でデータベースやテーブルを作成するとは、単にスキーマと Amazon S3 内のテーブルデータの場所を記述することに過ぎません。データはクエリ実行時に読み取られます。データは、データベースやテーブルのスキーマ定義と一緒に保存されないため、データベースやテーブルの意味が従来のリレーショナルデータベースシステムの場合とは少し異なります。
パーティショニング・最適化
パーティショニング
where句で読み込み範囲を絞るときに頻繁に使われるカラム(日付など)をキーとして指定することでスキャンするファイルを限定できるため、パフォーマンスの改善とコストの削減が行える
圧縮・列指向ストレージ形式
適切なファイルサイズ
以前は、Athena 独自にデータベース・テーブル管理がされていた。
現在では、のちリリースされた AWS Glue の Data Catalog 上でのデータベース・テーブル管理がされる。
AWS Glue クローラ
AWS Glue クローラを使用すると、データセットのスキーマを検出して AWS Glue データカタログに登録できます。
CTAS
BIツールとの連携