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 でのデータフロー
AWS でのデータフローを図で示す。
OLTP (DynamoDB)
↓ DynamoDB Streams → Lambda → S3 (Parquet)
OLAP (Athena / Redshift)
↓ クエリ結果
BI ダッシュボード (QuickSight)
OLTP の例 (DynamoDB)
OLTP の例 (DynamoDB) のコード例を示す。
// 1 件の注文を取得 (ミリ秒)
await db.get({ TableName: 'orders', Key: { id: '123' } });
OLAP の例 (Athena)
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) |
現場での応用を知るには関連書籍も役立つ。
この記事は役に立ちましたか?
関連用語
列指向ストア
データを列 (カラム) 単位で保存し、分析クエリの集計を高速化するストレージ形式
Redshift
AWS のペタバイト規模のデータウェアハウスサービスで、大量データの分析クエリを高速に実行する
Aurora
AWS のクラウドネイティブ RDB で、MySQL/PostgreSQL 互換で高可用性・高パフォーマンスを実現する
データ正規化
データベースの冗長性を排除し、データの一貫性を保つためにテーブル構造を分割・整理する手法
非正規化
読み取り性能を向上させるために、意図的にデータの冗長性を持たせる設計手法
データウェアハウス
分析用に最適化された大規模データストアで、複数のデータソースを統合して意思決定を支援する