OLTP と OLAP:本番 DB に分析 SQL を流さない
Stage 3 — 第1章 | データマネジメント入門 推定学習時間:35〜45分 | 難易度:★★☆☆☆
この章で学ぶこと
Stage 2 では 意味と正本 を整えました。 Stage 3 からは データの置き場所 —— どこに、どんな形で保存し、誰が触るか —— に入ります。
最初の論点は、分析 SQL と業務 DB の 分離 です。 さくら商事では、新人アナリストの 1 本のクエリが EC サイトの応答遅延を引き起こしました。
この章を終えると、こんなことができるようになります:
- OLTP(Online Transaction Processing)と OLAP(Online Analytical Processing)の 目的の違い を説明できる
- 本番 DB に分析クエリを流すリスクを具体例で説明できる
- 分析用データを 別系統 に置く設計の基本を説明できる
- Stage 1 のライフサイクル「保存・加工」と接続できる
1. 金曜日の 15 時:サイトが重い
さくら商事の EC サイトが、金曜 15 時ごろ突然遅くなりました。 インフラ担当のログを見ると、PostgreSQL(本番 DB)の CPU が 95% 付近で張り付いていました。
Slack #incident
インフラ:「本番 DB が飽和。誰か重い SELECT 回してない?」
山田:「すみません…
orders全件 JOIN して 2 年分集計してました。」鈴木:「本番は OLTP 用 です。分析は DWH へ。」
30 分後、クエリは止まり、サイトは復旧。 売上損失は小さかったものの、「分析のために本番を触る」文化 が問題として表面化しました。
2. OLTP と OLAP:目的が違う
| 観点 | OLTP | OLAP |
|---|---|---|
| 目的 | 業務処理(注文、在庫引当、決済) | 分析・集計(売上、CVR、傾向) |
| 典型クエリ | 1 行 INSERT / UPDATE、主キー検索 | 大量スキャン、JOIN、GROUP BY |
| レイテンシ | ミリ秒〜数十 ms | 秒〜分(バッチ可) |
| 同時実行 | 多数の短いトランザクション | 少数の重いクエリ |
| 整合性 | ACID、ロック重要 | 多少の遅延許容(分析系) |
| さくら商事の例 | EC 注文 API | 月次売上マート、Looker |
同じ orders テーブルでも、使い方が違えば別世界 です。
OLTP は「注文 1 件を正確に書く」、OLAP は「100 万行を横断して読む」。
2.1 なぜ混ぜると壊れるか
| リスク | さくら商事で起きうること |
|---|---|
| 性能劣化 | 注文 API がタイムアウト、カゴ落ち |
| ロック競合 | 在庫更新が待たされる |
| 誤操作 | 分析用の UPDATE テストが本番データを壊す |
| 権限 | 分析者に本番権限を広げがち |
| 説明責任 | 本番直集計は SSOT・リネージから外れやすい |
現場メモ
「読み取りだけなら大丈夫」は 半分正しく半分危険 です。 SELECT でもフルスキャンは 書き込み性能 を圧迫します。
3. 分離の基本パターン
分析は 本番からデータを複製・移送 し、別の置き場で行います。
[OLTP 本番 DB] ──ETL/CDC──> [分析基盤: DWH / レイク] ──> [マート / BI]
↑
業務 API のみ触る
| パターン | 概要 | さくら商事 |
|---|---|---|
| 夜間バッチ | 日次で本番 → DWH コピー | 初期構成 |
| CDC(Change Data Capture) | 変更分をストリーム同期 | 注文の準リアルタイム分析 |
| レプリカ読取 | 読取専用レプリカ(暫定) | 小規模時の妥協案 |
| SaaS エクスポート | Shopify 等から直接 DWH へ | EC データの主経路 |
3.1 レプリカ直読みの落とし穴
「本番ではなくレプリカなら OK」——小規模ではよく見る妥協です。
| メリット | デメリット |
|---|---|
| すぐ始められる | スキーマが OLTP 向けのまま(分析しにくい) |
| 本番への直接負荷は減る | レプリカにも重い SELECT は効く |
| リネージ・SSOT が DWH と二重化 | |
| 本番スキーマ変更が分析を壊す |
鈴木さんの方針は 「レプリカは移行期のみ。分析の正本は BigQuery DWH」 です。
4. さくら商事の役割分担
| 置き場 | 種類 | 誰が触る | 触ってよい操作 |
|---|---|---|---|
| PostgreSQL 本番 | OLTP | アプリ、DE(限定的) | 業務トランザクション |
BigQuery raw_* |
取込層 | DE | パイプライン |
BigQuery mart_* |
OLAP / マート | AE、アナリスト | SELECT、公式マート更新(PR) |
| Looker | BI | 全社 | セマンティックレイヤー経由 |
山田さんには 本番 PostgreSQL への read 権限を付与しない 方針に変更しました。
代わりに、DWH 上の mart_finance と mart_marketing へのアクセスを整備します。
5. DAMA・ライフサイクルとの接続
| 枠組み | OLTP / OLAP 分離の位置づけ |
|---|---|
| DAMA | データアーキテクチャ + ストレージ・運用 |
| ライフサイクル | 保存(OLTP)→ 加工・活用(OLAP) |
| SSOT | 公式売上は OLAP 側マートが正本(本番直集計は非公式) |
Stage 2 で決めた「公式売上の正本」は、OLAP 側の mart_finance です。
OLTP の orders は ソース であり、会議でそのまま触る場所ではありません。
6. よくある誤解
| 誤解 | 実際 |
|---|---|
| BigQuery があれば OLTP 不要 | 注文処理は依然 OLTP。DWH は分析用 |
| DWH に全部入れれば OLAP | 生 CSV 置き場だけでは分析しにくい(次章) |
| 分析は SQL が書ければどこでも | 置き場所 がガバナンスと性能を決める |
| リアルタイム分析 = 本番直読 | CDC で OLAP 側を更新するのが一般的 |
体系コラム:カリキュラム上の位置づけ
| 項目 | 内容 |
|---|---|
| Stage / 章 | Stage 3 — 第1章「OLTP と OLAP」 |
| 今回の論点 | 業務処理(OLTP)と分析(OLAP)は 目的が違う — 混ぜると性能もガバナンスも崩れる |
| DAMA 領域 | データストレージ・操作、データ統合 |
| ライフサイクル | 生成(OLTP)→ 保存・加工(OLAP 側へ ETL/CDC) |
| 前章との接続 | セマンティックレイヤー で決めた公式指標の 物理的な置き場 |
| 次章への伏線 | レイク・DWH・マート — OLAP 側の 三層構造 |
コラム:よくある誤解 —「BigQuery があれば OLTP は不要」
金曜 15 時、さくら商事の EC サイトが重くなった原因は、分析用の全件スキャンが本番 DB に流れていたことでした。鈴木さんは「BigQuery があるから本番も BigQuery で」と言う声に、注文処理と分析は別エンジン だと説明しました。
OLTP は短いトランザクションを大量に捌く。OLAP は横断集計を重くてもよい。DWH があっても、カート更新や在庫引当は依然 OLTP 側です。分析は CDC やバッチで OLAP 側に複製 して触るのが基本です。
もう一つの誤解は「リアルタイム分析=本番直読」です。ダッシュボードを 5 分更新したいからといって本番 orders を直接読むと、ピーク時にサイト全体が止まります。リアルタイムに近づけたいなら、ストリーミング取込で OLAP 側を更新 する設計が先です。
まとめ
| ポイント | 内容 |
|---|---|
| OLTP | 業務処理。短く、正確に、大量同時 |
| OLAP | 分析。重く、横断的、バッチ許容 |
| 分離 | 本番 → ETL/CDC → DWH → マート → BI |
| さくら商事 | 山田の本番 JOIN がインシデントに |
この章のキーメッセージ:
分析 SQL は 才能の問題 ではなく 置き場所の問題 です。 本番 DB は EC を動かすための OLTP。数字を出す場所は、別系統の OLAP 側に用意してください。
次に読む
- 前章(Stage 2): セマンティックレイヤー
- 次章: レイク・DWH・マート
- 関連: データマート(analytics)
確認問題
問題 1
さくら商事で本番 PostgreSQL に 2 年分の JOIN 集計を流し、EC が遅くなった。 最も本質的な設計ミス はどれですか。
A. JOIN 句の順序
B. 分析ワークロードを OLTP 本番で実行した
C. PostgreSQL ではなく MySQL を使うべきだった
D. 統計検定 2 級の知識不足
正解: B
解説: 症状は SQL 技法ではなく OLTP/OLAP 未分離 です。C/D は論点外、A は二次要因に過ぎません。
問題 2
「読み取り専用レプリカなら、分析 SQL を流しても本番に影響しない」について 最も正確 なのはどれですか。
A. 常に完全に真。レプリカなら無制限で OK
B. 本番への直接負荷は減らせるが、レプリカ性能・スキーマ・ガバナンスの問題は残る
C. レプリカは OLAP 専用なので SSOT に最適
D. レプリカは分析に使えない
正解: B
解説: レプリカは 移行期の妥協 になりがちです。性能・分析向けスキーマ・正本の一元化は DWH 側で解決するのが本筋です。
問題 3
公式売上の SSOT が mart_finance.monthly_revenue(BigQuery)にある。
経理が「本番 DB の orders を直接集計した数字が正しい」と主張した。
データマネジメント上 望ましい対応 はどれですか。
A. 本番直集計を SSOT に変更する
B. 本番はソース、公式数字は OLAP マート経由である理由(リネージ・定義)を説明し、会議はマートを正とする
C. 両方を SSOT として併存させる
D. 数字の議論をやめ、感覚で経営する
正解: B
解説: OLTP は ソース、OLAP マートが 公式分析正本 という役割分担です。A/C は SSOT 崩壊、D は Stage 1 の症状の放棄です。
用語メモ(この章)
| 用語 | 意味(この章での使い方) |
|---|---|
| OLTP | 注文登録など、短いトランザクション中心の業務 DB 利用 |
| OLAP | 大量データの集計・分析向けワークロード |
| CDC | データベースの変更を捕捉し下流へ同期する仕組み |
| レプリカ | 本番 DB の複製。読取分散用(分析正本にはなりにくい) |
| DWH | 分析用に最適化されたデータ基盤(次章で詳述) |