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 互換で高可用性・高パフォーマンスを実現する
ACID
データベーストランザクションの 4 つの特性 - 原子性、一貫性、分離性、永続性
データウェアハウス
分析用に最適化された大規模データストアで、複数のデータソースを統合して意思決定を支援する
ストリーム処理
データを受信しながらリアルタイムで処理する手法で、バッチ処理と対比される
関連する記事
データベース本ガイド - SQL から設計まで学べる技術書の選び方
データベースの基礎から設計、パフォーマンスチューニングまで学べる技術書の選び方と学習順序を紹介します。
本についてくるダウンロード素材を使い倒す
プログラミングの本には、サンプルコードや素材のダウンロード特典がついていることがあります。この特典を活用するだけで、学習効率が大きく変わります。
機械学習・AI 本ガイド - エンジニアが読むべき技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルートと ML 本の賞味期限の見極め方を解説します。