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)

現場での応用を知るには関連書籍も役立つ。

この記事は役に立ちましたか?

関連用語

関連する記事