🗂️
スキーマって何なの?
背景
AWSのRedshiftとAthenaの違いを勉強していた時、
スキーマのありなしで処理速度や柔軟性が違う
と解説があったけど、そもそもスキーマってなんだってなった。
結論
スキーマとは構造を決めるルールとタイミング
そもそもAWS RedshiftとAthenaって?
RedshiftはDWHを構築・分析するためのサービス、Athenaはデータレイクを直接クエリして分析するためのサービス(中規模まで)
| 観点 | Redshift Spectrum | Athena |
|---|---|---|
| 立ち位置 | Redshift の拡張機能 | 独立したサーバーレス分析サービス |
| ターゲット | DWH(加工済データ中心) | データレイク(無加工データ中心) |
| 必要なもの | Redshift クラスター | 何も必要ない |
| 得意な処理 | JOIN・集計・DWH的分析 | ad-hoc 調査・ログ分析 |
| 使い方 | RedshiftのSQLから外部テーブルを参照 | Athenaに直接SQLを投げる |
※表作成にはAIを使用しています。
※厳密には、Redshift Spectrum は Redshift の拡張機能であり、Redshift の内部テーブルとは保存方式やスキーマ適用タイミングが異なります。
構造的な違い
データレイク:生データの集まり。いろんなデータ形式で保存出来て柔軟性が高い。分析エンジンに依存しない
DWH:主に表形式。複雑な集計や結合操作などに向く。高速で分析できる。
スキーマってズバリ何なのか
スキーマはデータの構造を決めるタイミングあるいはルールの内容。
- schema-on-read
データ保存時には整形ルールを適用せず、データを使用するときに構造を決定する。
→柔軟性ある分析が可能、データレイクはこっち。
- schema-on-write
データ保存時に構造を決定して、データを使用する。
→高速に処理できる、データウェアハウスはこっち。
例えるなら?
schema-on-read=とりあえず採用して、仕事の時に役割を決める会社
schema-on-write=部署が決まっていて、入社時に配属される会社
活用例など
データレイクでは生データを保存してあとから任意の項目、条件で使用する。
→保存するときに構造を指定しない。分析の時に使う項目、表現方法などを指定できる。
活用例:単発、調査などスポット的分析(ログ調査、インシデント調査、特定のキャンペーンの効果振り返りなどに優位)
DWHでは保存時に使う項目、表現方法などを定義して保存して使用する
活用例:売り上げ分析、行動追跡調査、BIダッシュボード作成など長期間のデータを扱う分析に優位
まとめ
スキーマは構造を決めるタイミングあるいはルールの内容。
| 種類 | 特徴 |
|---|---|
| schema-on-read | 保存時のルールなし。多様なデータ形式を受け入れ可能。柔軟性・弾力性・リアルタイム性で優位。長期間の分析や処理能力は劣る |
| schema-on-write | 保存時のルールあり。表形式データが受け入れ可能。継続的な調査・分析や高速な分析処理で優位。保存時に指定した形式のデータしか取り扱えない。 |
参照リンク
Discussion