コンテンツにスキップ

【比較】DBとDWHの違い

データ管理の世界で中心的な役割を果たす「データベース(DB)」と「データウェアハウス(DWH)」。この2つはデータを格納するという点で似ていますが、その目的、設計、使われ方は大きく異なります。このドキュメントでは、両者の違いを明確にし、それぞれの役割を解説します。

概要

項目 データベース (DB) データウェアハウス (DWH)
主目的 記録 (Record) 分析 (Analyze)
処理 OLTP (オンライン・トランザクション処理) OLAP (オンライン分析処理)
対象データ 最新のデータ、リアルタイムのデータ 過去から現在までの大量な履歴データ
処理速度 高速な読み書き(Read/Write) 高速な読み取り(Read)と集計
データ構造 正規化されていることが多い スター/スノーフレークなど分析向けに非正規化されることが多い
利用者 アプリケーション、業務担当者 データアナリスト、経営層、意思決定者

一言で言うと、DBは「日々の業務を遂行するための、現在のデータを扱うシステム」 であり、DWHは「意思決定のために、過去からの膨大なデータを分析するためのシステム」 です。

なお、ここでの「DB」は OLTP 用途の業務データベースを指します。データレイクやデータレイクハウスを含む「分析基盤アーキテクチャ全体」の比較は別テーマです(データレイク・DWH・データレイクハウスの違い を参照)。

詳細比較

1. データベース (DB: Database)

データベースは、アプリケーションやシステムの日々の業務処理(トランザクション)を支えるために設計されています。例えば、ECサイトの在庫管理、銀行の入出金記録、SNSの投稿など、リアルタイムでのデータの作成(Create)、読み出し(Read)、更新(Update)、削除(Delete) が頻繁に発生する処理(OLTP)に使われます。

主な特徴

  • リアルタイム性: 常に最新の状態を保ち、ミリ秒単位の高速なトランザクション処理が求められます。
  • 正規化: データの重複をなくし、一貫性を保つために「正規化」というデータ設計手法が用いられます。これにより、効率的なデータの更新が可能になります。
  • 小規模なクエリ: 一度に扱うデータ量は比較的小さく、「特定の顧客の注文履歴を見る」といった単純なクエリが中心です。
  • データソース: 主に単一のアプリケーションからデータが入力されます。
  • 例: MySQL, PostgreSQL, Oracle Database, SQL Server など

DBの役割は、ビジネスの最前線で発生する出来事を、正確かつ迅速に記録・管理することです。

2. データウェアハウス (DWH: Data Warehouse)

データウェアハウスは、組織内の様々なシステム(複数のDB、基幹システム、外部サービスなど)からデータを集約し、分析やレポート作成、意思決定支援のために設計されたシステムです。過去からのデータを時系列で蓄積し、ビジネス全体の傾向を分析する処理(OLAP)に使われます。

主な特徴

  • 履歴データ: 数年から数十年にわたる膨大な量の履歴データを保持します。データは更新されず、追加されていくのが基本です。
  • 非正規化: 分析クエリのパフォーマンスを向上させるため、あえてデータを重複させてテーブルを結合しておく「非正規化」という設計(スタースキーマ、スノーフレークスキーマなど)が用いられます。
  • 大規模なクエリ: 大量のデータを横断的に集計・分析する複雑なクエリが中心です。「過去5年間の月別・地域別売上トレンドを分析する」といった処理を行います。応答は秒〜分単位になることもあります。
  • 統合されたデータ: 複数のソースからデータを抽出し(Extract)、分析しやすい形式に変換・加工し(Transform)、DWHに格納(Load)する「ETL」という処理を経て、データが統合されます。
  • 例: Google BigQuery, Amazon Redshift, Snowflake, Teradata など

DWHの役割は、組織に散らばるデータを一箇所に集め、過去から現在に至るまでの全体像を可視化し、未来の戦略を立てるための洞察を得ることです。

DBとDWHの関係性

DBとDWHは競合するものではなく、データ活用の流れの中で異なる役割を担う、補完的な関係にあります。

一般的なデータの流れは以下のようになります。

  1. ECサイトのDB、販売管理システムのDB、顧客管理システムのDBなど、日々の業務でデータが生成・更新される。
  2. 定期的に(例:夜間バッチで)これらのDBからデータが抽出(Extract)される。
  3. 抽出されたデータは、分析しやすいように名寄せやクレンジングなどの変換・加工(Transform)が行われる。
  4. 加工されたデータがDWHに格納(Load)され、蓄積されていく。
  5. アナリストや経営層が、BIツールなどを使ってDWHのデータを分析し、経営判断に役立てる。

このように、DBが「データ発生源」であるのに対し、DWHは「データ集積・分析基盤」として機能します。分析処理をトランザクションDBから切り離すことで、双方の性能を保てるのも大きな利点です。

よくある誤解

  • 誤解1:「DWHは“大きいデータベース”にすぎない(容量を増やせばDBがDWHになる)」 — 違います。違いは規模ではなくワークロードと設計思想です。DB(OLTP)はミリ秒の単一行更新に最適化された正規化スキーマ、DWH(OLAP)は大量行の集計に最適化されたスター/スノーフレークの非正規化スキーマ。同じ箱を大きくしても最適化対象が逆なので置き換わりません。
  • 誤解2:「分析は本番DBに直接クエリを投げればよく、DWHは不要」 — 重い分析クエリを OLTP 本番DBへ直接投げると、業務トランザクションの応答性能を圧迫します。分析処理をDWH側へ分離するのは「両システムの性能をともに保つ」ための定石です。
  • 誤解3:「DWHは正規化していないので、データ品質や整合性が低い」 — 非正規化はクエリ性能のための意図的な設計選択であって、品質を下げるためのものではありません。むしろ ETL(抽出・変換・ロード)でクレンジングや名寄せを行い、複数ソースを統合した整合性の高いデータを蓄積します。
  • 誤解4:「DBとDWHはどちらか一方を選ぶもの」 — 二者択一ではなく補完関係です。DBが業務データを生み、ETLでDWHへ集約し、DWHで分析する、という流れの中で両者は別々の役割を担います。

実務での選び分け

  • データベース(DB)を使うべきケース:

    • ユーザー操作や業務トランザクションをリアルタイムに記録・更新する(注文、入出金、在庫など)。
    • 単一行〜少数行の高速な読み書き・更新が中心。
    • 強い一貫性と正規化による更新効率を重視する。
  • データウェアハウス(DWH)を使うべきケース:

    • 複数システムの履歴データを横断して集計・傾向分析したい。
    • 経営判断・BIレポート・ダッシュボードが目的で、読み取り・集計が中心。
    • 重い分析クエリを本番業務DBから切り離して性能を確保したい。
  • 判断軸:①目的が「記録」か「分析」か ②書き込み中心か読み取り集計中心か ③単一ソースか複数ソース統合か ④応答要件がミリ秒か秒〜分許容か。多くの組織では両方を併用し、ETLで橋渡しします。

ひとことまとめ

DB=OLTP用途で「今」を正規化スキーマでミリ秒記録・更新するシステム、DWH=OLAP用途で「過去から今」を非正規化スキーマで集計分析する分析基盤。優劣ではなく役割が異なり、ETLで連携する補完関係として理解するのが要です。

観点 データベース (DB) データウェアハウス (DWH)
役割 記録と管理 分析と意思決定支援
例えるなら 日々の取引を記録する「レジ」や「会計帳簿」 過去からの全取引を分析する「経営分析室」
時間軸 「今」を扱う 「過去から今」までを扱う
最適化対象 高速な書き込み・更新 高速な読み取り・集計

出典・参考

  • AWS「What is a Data Warehouse?」(DWHはデータ分析のために設計され、大量データを読んで関係や傾向を理解する。DBはトランザクションの記録などデータの取得・保存に使う。トランザクションシステム・RDB等からデータが流入し、分析処理を業務DBから分離することで双方の性能が向上): https://aws.amazon.com/data-warehouse/
  • AWS「What's the Difference Between OLAP and OLTP?」(OLAPは複数ソースの履歴・集計データ、スター/スノーフレーク等の分析モデル、応答は秒〜分。OLTPは単一ソースのリアルタイム取引データ、ミリ秒応答、書き込み中心。両者は補完的に併用される): https://aws.amazon.com/compare/the-difference-between-olap-and-oltp/
  • AWS「What's the Difference Between a Database and a Data Warehouse?」(DBはトランザクション処理向け、DWHは分析クエリ向け。DWHは複数の運用DBからデータを集約し分析に最適化): https://aws.amazon.com/compare/the-difference-between-a-database-and-a-data-warehouse/
  • AWS「What is ETL (Extract, Transform, Load)?」(複数ソースからデータを抽出し、分析に適した形へ変換し、DWH等へロードする統合プロセス): https://aws.amazon.com/what-is/etl/