OLTP・OLAP おーえるてぃーぴー・おーえるえーぴー
トランザクション処理分析処理データウェアハウスBI列指向行指向
OLTP・OLAPについて教えて
簡単に言うとこんな感じ!
OLTPは「レジの処理」、OLAPは「店長の売上分析」みたいなイメージだよ!OLTPは「注文を登録する・在庫を引く」みたいに小さくて速いトランザクションを大量にこなすのが得意。OLAPは「先月の商品カテゴリ別売上を集計する」みたいに大量データをまとめて分析するのが得意。全然違う処理なんだ!
OLTP・OLAPとは
OLTP(Online Transaction Processing)とは、業務システムが日々行う「注文登録・在庫更新・決済処理」などの小さなトランザクションを高速にこなすためのデータ処理モデルです。1秒間に数百〜数万件のリクエストを処理し、応答時間はミリ秒レベルが求められます。RDBが典型的なOLTPシステムです。
OLAP(Online Analytical Processing)とは、「過去1年の商品別・地域別売上トレンド」のような大量データを複数の軸で集計・分析するための処理モデルです。数億〜数十億行のデータをスキャンすることもあり、クエリ1本の実行時間は秒〜分単位になります。データウェアハウス・BIツールが典型的なOLAP環境です。
OLTPとOLAPは最適なDB設計が根本的に異なります。OLTPは行単位での更新が多いため「行指向ストレージ」が適し、OLAPは特定カラムの大量集計が多いため「列指向ストレージ」が適します。そのため多くの企業は「業務DB(OLTP)→ETL→データウェアハウス(OLAP)」という構成を取ります。
OLTP vs OLAP 比較表
| 観点 | OLTP | OLAP |
|---|---|---|
| 主な処理 | INSERT・UPDATE・DELETE | SELECT(大量集計) |
| 1クエリの対象行数 | 数件〜数十件 | 数百万〜数十億行 |
| 応答時間 | ミリ秒 | 秒〜分 |
| 同時接続数 | 数百〜数万 | 数人〜数十人 |
| データ更新頻度 | リアルタイム | バッチ(日次等) |
| ストレージ形式 | 行指向 | 列指向 |
| 正規化 | 高度に正規化 | 非正規化(スタースキーマ) |
| 代表製品 | MySQL・PostgreSQL・Oracle | BigQuery・Redshift・Snowflake |
歴史と背景
- 1970年代:OLTPという概念はIBMのCICS(Customer Information Control System)とともに誕生
- 1993年:E.F.コッドがOLAP(OnLine Analytical Processing)の12のルールを定義
- 1996年:Ralph KimballがDWH設計のスタースキーマ手法を体系化
- 2000年代:Hyperion・BusinessObjectsなどのOLAP専用ツールが企業に普及
- 2010年:Google BigQueryが登場。クラウドベースOLAPが一般化
- 2014年:Snowflakeが登場。OLTP・OLAP双方に対応するHTAPの概念も広まる
- 現在:「HTAP(Hybrid Transaction/Analytical Processing)」として1システムで両方を担うDBも増加
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| E.F.コッド「OLAPの12ルール」(1993) | OLAPシステムの評価基準 |
| MDX (Multidimensional Expressions) | OLAPキューブへの問い合わせ言語 |