Athenaとは?
Amazon Athena とは?
Section titled “Amazon Athena とは?”Athenaは、S3上のデータを標準SQLで直接分析できる、サーバーレスなクエリサービスです。
1. サーバーレスクエリ
Section titled “1. サーバーレスクエリ”概要: - インフラ管理不要 - 自動スケーリング - 従量課金(スキャンデータ量) - SQLクエリ対応
特徴: - サーバープロビジョニング不要 - 即座にクエリ実行可能 - 同時クエリ実行 - JDBC/ODBC接続サポート2. 対応データ形式
Section titled “2. 対応データ形式”構造化データ: - CSV - TSV - JSON - Parquet(推奨) - ORC - Avro
圧縮形式: - GZIP - SNAPPY - LZO - BZIP2
メリット: Parquet/ORC: - 列指向フォーマット - 高圧縮率 - クエリ高速化 - コスト削減3. データソース
Section titled “3. データソース”主要: - Amazon S3
フェデレーテッドクエリ: - RDS(MySQL、PostgreSQL) - Aurora - DynamoDB - Redshift - OpenSearch - オンプレミスデータベース(Lambda経由)アーキテクチャ
Section titled “アーキテクチャ”構成要素: データソース: - S3バケット - パーティション構造
Glue Data Catalog: - テーブル定義 - メタデータ管理 - スキーマ情報
Athena: - クエリエンジン(Presto/Trino) - クエリ実行
結果保存: - S3バケット(クエリ結果) - 最大保持期間設定可能パーティション
Section titled “パーティション”概念: - データの論理的な分割 - クエリスキャン量削減 - コスト削減・高速化
構造例: s3://bucket/data/ year=2024/ month=01/ day=01/ data.parquet day=02/ data.parquet month=02/ ...
クエリ例: SELECT * FROM logs WHERE year='2024' AND month='01' → 該当パーティションのみスキャンGlue Data Catalog統合
Section titled “Glue Data Catalog統合”役割: - テーブル・スキーマ定義 - パーティション管理 - データ型管理
作成方法: 手動: - AthenaコンソールでCREATE TABLE
Glue Crawler: - 自動スキーマ推測 - パーティション自動検出 - 定期実行可能ワークグループ
Section titled “ワークグループ”概念: - クエリの論理的なグループ化 - リソース管理 - アクセス制御
機能: コスト管理: - クエリ毎のデータスキャン上限 - ワークグループ毎の予算
結果保存: - ワークグループ毎のS3ロケーション - 暗号化設定
IAM制御: - ワークグループ単位のアクセス制御クエリ最適化
Section titled “クエリ最適化”パーティション: - 適切なパーティション設計 - WHERE句でパーティション指定 - パーティション数最適化
ファイル形式: - Parquet / ORC推奨 - 列指向フォーマット - 圧縮有効化
ファイルサイズ: - 128MB以上推奨 - 小ファイル統合 - S3 Inventory活用
クエリ設計: - SELECT * 避ける - 必要な列のみ指定 - LIMIT活用 - JOINの最適化セキュリティ
Section titled “セキュリティ”暗号化: 保管時: - S3バケット暗号化(SSE-S3/KMS/CSE) - クエリ結果暗号化
転送中: - TLS/SSL
アクセス制御: - IAMポリシー - リソースベースポリシー - Lake Formation統合 - 列レベル・行レベル制御(Lake Formation)
監査: - CloudTrail - クエリ履歴 - アクセスログ統合サービス
Section titled “統合サービス”データ準備: - AWS Glue(ETL) - Glue Crawler(カタログ作成) - EMR(大規模処理)
可視化: - Amazon QuickSight - Tableau - Grafana
機械学習: - SageMaker - Athena ML(UDF)| 項目 | 価格 | 備考 |
|---|---|---|
| クエリ料金 | $5.00 / スキャンデータ 1TB | データスキャン量に応じた課金 |
| 最小課金単位 | 10MB | 10MB未満は10MB扱い |
| 四捨五入 | 1MB単位 | クエリごとに1MB単位で計算 |
その他の料金
Section titled “その他の料金”| 項目 | 価格 | 備考 |
|---|---|---|
| S3ストレージ(ソースデータ) | S3標準料金 | データ保存コスト |
| S3ストレージ(クエリ結果) | S3標準料金 | 結果保存コスト |
| Glue Data Catalog | 最初の100万オブジェクト無料 以降: $1.00 / 100万 / 月 | メタデータストア |
料金計算例(月間10TBスキャン):
| 項目 | 計算 | 料金 |
|---|---|---|
| クエリ | (10TB / 1TB) × $5.00 | $50.00 |
| S3保存(100TB) | 100TB × $0.023 | $2,300.00 |
| 合計 | - | $2,350.00/月 |
コスト削減策の効果例(Parquet形式使用):
| データ形式 | スキャン量 | クエリ料金 | 削減効果 |
|---|---|---|---|
| JSON | 10TB | $50.00 | - |
| Parquet | 2TB(80%削減) | $10.00 | $40.00削減(80%減) |
コスト最適化のベストプラクティス:
| 手法 | 効果 | 削減率 |
|---|---|---|
| Parquet/ORC形式使用 | ファイルサイズ削減 | 50-80% |
| パーティション活用 | スキャン範囲限定 | 70-90% |
| 圧縮有効化 | データ量削減 | 30-50% |
| 必要な列のみSELECT | カラムナー形式で効果 | 50-90% |
実例(10TBデータ、最適化前後):
| 項目 | 最適化前 | 最適化後 | 削減額 |
|---|---|---|---|
| スキャン量 | 10TB | 0.5TB | - |
| 月額料金 | $50.00 | $2.50 | $47.50削減(95%減) |
### CTAS(Create Table As Select)
```yaml概念: - クエリ結果から新テーブル作成 - データ変換・最適化
用途: - CSV → Parquet変換 - データフィルタリング - 集計結果保存
メリット: - 1回のクエリで変換 - 最適化されたフォーマット - パーティション作成Athenaの重要ポイント:
- サーバーレスでインフラ管理不要
- S3データを直接SQLクエリ
- Parquet/ORC でコスト削減
- パーティションで高速化
- Glue Data Catalog でメタデータ管理
- スキャンデータ量で課金
- QuickSight統合で可視化