OLAP vs OLTP
オンライン分析処理 (OLAP) とオンライントランザクション処理 (OLTP) の違いと使い分け
データベースデータ分析
OLAP vs OLTP とは
OLTP (Online Transaction Processing) はリアルタイムのトランザクション処理、OLAP (Online Analytical Processing) は大量データの分析処理である。用途に応じて異なるデータベースを選択する。
比較
| 観点 | OLTP | OLAP |
|---|---|---|
| 目的 | トランザクション処理 | データ分析 |
| クエリ | 単純 (1 行の CRUD) | 複雑 (集計、JOIN) |
| データ量 | GB〜TB | TB〜PB |
| レイテンシ | ミリ秒 | 秒〜分 |
| ストレージ | 行指向 | 列指向 |
| 正規化 | 正規化 (3NF) | 非正規化 (スタースキーマ) |
| AWS | DynamoDB, Aurora | Redshift, Athena |
AWS でのデータフロー
OLTP (DynamoDB)
↓ DynamoDB Streams → Lambda → S3 (Parquet)
OLAP (Athena / Redshift)
↓ クエリ結果
BI ダッシュボード (QuickSight)
OLTP の例 (DynamoDB)
// 1 件の注文を取得 (ミリ秒)
await db.get({ TableName: 'orders', Key: { id: '123' } });
OLAP の例 (Athena)
-- 月別の売上集計 (秒〜分)
SELECT DATE_TRUNC('month', order_date) AS month, SUM(amount) AS total
FROM orders
GROUP BY 1
ORDER BY 1;
いつどちらを使うか
| ケース | 推奨 |
|---|---|
| ユーザーの注文処理 | OLTP (DynamoDB) |
| 月次売上レポート | OLAP (Athena + Parquet) |
| リアルタイムダッシュボード | OLTP + キャッシュ |
| アドホック分析 | OLAP (Redshift) |
現場での応用を知るには関連書籍も役立つ。