STEP 14:データウェアハウス設計基礎

🎯 STEP 14: データウェアハウス設計基礎

OLTPとOLAPの違いを理解し、分析用データベースの設計手法を学ぼう

📋 このステップで学ぶこと
  • OLTPとOLAPの違いと特徴
  • データウェアハウス(DWH)とは何か
  • ファクトテーブルとディメンションテーブル
  • スタースキーマとスノーフレークスキーマ
  • データマート設計の考え方

学習時間の目安: 2.5時間 | 前提知識: 正規化、インデックス設計の基本を理解していること

🎯 1. OLTPとOLAPの違い

STEP 13からの続き:分析用データベースの世界へ

STEP 13ではインデックス設計を学び、OLTPシステムのパフォーマンス最適化を習得しました。このSTEP 14では、分析用データベース(OLAP)の世界に足を踏み入れます。

データベースシステムには、大きく分けて2つのタイプがあります。これまで学んできた正規化は主にOLTPのためのものでしたが、分析用のOLAPではまったく異なる設計アプローチが必要です。

OLTP(オンライントランザクション処理)

📝 OLTP(Online Transaction Processing)

日常的な業務処理のためのデータベースです。

  • 📦 例:ECサイトの注文処理、銀行のATM、在庫管理システム
  • 特徴:リアルタイムで大量のトランザクションを処理
  • ✏️ 操作:INSERT、UPDATE、DELETEが頻繁
  • 🎯 目的:業務をスムーズに進めること

OLAP(オンライン分析処理)

📊 OLAP(Online Analytical Processing)

分析・レポート作成のためのデータベースです。

  • 📈 例:売上分析、顧客行動分析、経営ダッシュボード
  • 🔍 特徴:大量のデータを集計・分析
  • 📖 操作:主にSELECT(読み取り)、複雑な集計
  • 🎯 目的:意思決定をサポートすること

OLTPとOLAPの比較

項目 OLTP(業務処理) OLAP(分析処理)
主な用途 日常業務の処理(注文、決済、在庫管理) 分析・レポート作成(売上分析、トレンド分析)
データ量 少量(現在のデータのみ) 大量(過去数年分の履歴)
クエリパターン 単純、定型的(特定の注文を検索) 複雑、アドホック(多次元分析、集計)
更新頻度 リアルタイムで頻繁 バッチ処理(日次、週次)
正規化 第3正規形(高度に正規化) 非正規化(スタースキーマ)
レスポンス時間 ミリ秒単位 秒〜分単位
ユーザー数 多数(数千〜数万人) 少数(数十〜数百人)
ECサイト、会計システム、顧客管理システム データウェアハウス、BIツール、分析レポート
💡 なぜ分ける必要があるのか?

OLTPとOLAPでは求められる性能が全く違うため、同じデータベースで両方を実現するのは困難です。

OLTP:素早い書き込みと読み取りが必要 → 正規化されたテーブル
OLAP:複雑な集計を高速に実行したい → 非正規化されたテーブル

そのため、業務システム(OLTP)からデータを抽出し、分析用のデータウェアハウス(OLAP)を別途構築します。

🏢 2. データウェアハウス(DWH)とは?

データウェアハウスの定義

📊 データウェアハウス(Data Warehouse, DWH)

分析を目的とした大量のデータを統合・蓄積するデータベースです。

複数の業務システム(OLTP)からデータを集約し、分析しやすい形式で保存します。

データウェアハウスの特徴

✅ データウェアハウスの4つの特徴(Inmonの定義)
  1. Subject-Oriented(主題指向):業務プロセスではなく、分析したい主題(売上、顧客など)ごとに整理
  2. Integrated(統合された):複数のシステムからデータを統合し、一貫性のある形式で保存
  3. Time-Variant(時系列):過去のデータを保持し、時系列での分析が可能
  4. Non-Volatile(非揮発性):データは削除されず、追加・更新のみ(履歴として保持)

データウェアハウスの構成

🏗️ 典型的なDWHアーキテクチャ
データの流れ
📦 業務システム(OLTP)     ├─ ECサイトDB     ├─ 在庫管理DB     └─ 顧客管理DB
↓ ETL処理(抽出・変換・ロード)
🏢 データウェアハウス(DWH)     ├─ ファクトテーブル(売上実績)     └─ ディメンションテーブル(商品、顧客、時間)
📊 データマート(特定部門用)     ├─ 営業部用データマート     └─ マーケティング部用データマート

ETL処理とは

🔄 ETL(Extract, Transform, Load)

業務システムからデータウェアハウスにデータを移行するプロセスです。

  • Extract(抽出):複数の業務システムからデータを取り出す
  • Transform(変換):データの形式を統一、クレンジング、集計
  • Load(ロード):変換後のデータをDWHに格納

📊 3. ファクトテーブルとディメンションテーブル

データウェアハウスの設計では、テーブルを2種類に分けて考えます。

ファクトテーブル(Fact Table)

📈 ファクトテーブル

分析の対象となる数値データ(メジャー)を保持するテーブルです。

  • 📊 内容:売上金額、数量、利益など、集計したい数値
  • 🔑 キー:ディメンションテーブルへの外部キーを複数持つ
  • 📏 粒度:「1行 = 1トランザクション」など、分析の最小単位
  • 📦 サイズ:通常、非常に大きい(数百万〜数億行)

例:売上ファクトテーブル

sales_fact ——————————————————- 売上ID | 日付ID | 商品ID | 店舗ID | 顧客ID | 数量 | 売上金額 | 利益 1 | 20250115 | 101 | 1 | 1001 | 2 | 160000 | 32000 2 | 20250115 | 102 | 1 | 1002 | 5 | 10000 | 2000 3 | 20250116 | 101 | 2 | 1003 | 1 | 80000 | 16000

ディメンションテーブル(Dimension Table)

🏷️ ディメンションテーブル

分析の軸となる属性情報を保持するテーブルです。

  • 📝 内容:商品名、カテゴリ、顧客名、地域など、説明的な情報
  • 🔑 キー:サロゲートキー(人工的な連番ID)を主キーとする
  • 📏 粒度:「1行 = 1商品」「1行 = 1顧客」など
  • 📦 サイズ:ファクトテーブルに比べて小さい(数千〜数万行)

例:商品ディメンションテーブル

product_dimension ——————————————————- 商品ID | 商品名 | カテゴリ | ブランド | 仕入先 | 価格 101 | ノートPC | 電子機器 | A社 | メーカーX | 80000 102 | マウス | 電子機器 | B社 | メーカーY | 2000 103 | キーボード | 電子機器 | A社 | メーカーX | 5000

例:日付ディメンションテーブル

date_dimension ————————————————————————- 日付ID | 日付 | 年 | 月 | 日 | 曜日 | 四半期 | 週番号 | 祝日フラグ 20250115 | 2025-01-15 | 2025| 1 | 15 | 水 | Q1 | 3 | 0 20250116 | 2025-01-16 | 2025| 1 | 16 | 木 | Q1 | 3 | 0

ファクトとディメンションの関係

💡 ファクトとディメンションの違い
項目 ファクトテーブル ディメンションテーブル
役割 「何を測るか」数値データ 「どう分析するか」分析の軸
データ例 売上金額、数量、利益 商品名、顧客名、日付
行数 非常に多い(数百万〜数億行) 比較的少ない(数千〜数万行)
更新頻度 頻繁(新規追加) 低頻度(マスタ更新)

⭐ 4. スタースキーマ

スタースキーマとは

⭐ スタースキーマ(Star Schema)

中心にファクトテーブル、周囲にディメンションテーブルを配置したデータウェアハウスの代表的な設計パターンです。

上から見ると星型(Star)に見えることから、この名前がつきました。

スタースキーマの構造

🌟 スタースキーマの概念図
┌─────────────────┐ │ 商品ディメンション │ └────────┬────────┘ │ ┌─────────────────┐ │ ┌─────────────────┐ │ 日付ディメンション │──────┬──┼──┬────────│ 店舗ディメンション │ └─────────────────┘ │ │ │ └─────────────────┘ │ │ │ ┌────┴──┴──┴────┐ │ 売上ファクト │ │ (中心) │ └────────┬────────┘ │ ┌────────┴────────┐ │ 顧客ディメンション │ └─────────────────┘

スタースキーマの実例

— ファクトテーブル(中心) sales_fact ——————————————————- 売上ID | 日付ID | 商品ID | 店舗ID | 顧客ID | 数量 | 売上金額 | 利益 — ディメンションテーブル(周囲) date_dimension(日付ディメンション) ——————————————————- 日付ID | 日付 | 年 | 月 | 日 | 曜日 | 四半期 product_dimension(商品ディメンション) ——————————————————- 商品ID | 商品名 | カテゴリ | ブランド | 価格 store_dimension(店舗ディメンション) ——————————————————- 店舗ID | 店舗名 | 地域 | 都道府県 | マネージャー customer_dimension(顧客ディメンション) ——————————————————- 顧客ID | 顧客名 | 性別 | 年齢層 | 都道府県

スタースキーマのメリット

✅ スタースキーマのメリット
  1. シンプルで理解しやすい:構造が明確で、ビジネスユーザーにも分かりやすい
  2. クエリが高速:JOINが少なく、集計クエリのパフォーマンスが良い
  3. 柔軟な分析:任意のディメンションで切り口を変えて分析できる
  4. BIツールとの相性が良い:多くのBIツールがスタースキーマに最適化されている

スタースキーマでの集計クエリ例

— 2025年1月の商品カテゴリ別売上 SELECT p.カテゴリ, SUM(f.売上金額) AS 売上合計, SUM(f.数量) AS 販売数量 FROM sales_fact f JOIN product_dimension p ON f.商品ID = p.商品ID JOIN date_dimension d ON f.日付ID = d.日付ID WHERE d.年 = 2025 AND d.月 = 1 GROUP BY p.カテゴリ ORDER BY 売上合計 DESC; — 都道府県別の顧客数と売上 SELECT c.都道府県, COUNT(DISTINCT f.顧客ID) AS 顧客数, SUM(f.売上金額) AS 売上合計 FROM sales_fact f JOIN customer_dimension c ON f.顧客ID = c.顧客ID GROUP BY c.都道府県 ORDER BY 売上合計 DESC;

❄️ 5. スノーフレークスキーマ

スノーフレークスキーマとは

❄️ スノーフレークスキーマ(Snowflake Schema)

ディメンションテーブルを正規化したデータウェアハウスの設計パターンです。

雪の結晶(Snowflake)のような形に見えることから、この名前がつきました。

スタースキーマ vs スノーフレークスキーマ

⭐ スタースキーマの例
product_dimension(商品ディメンション) ——————————————————- 商品ID | 商品名 | カテゴリ | ブランド | 仕入先 | カテゴリ説明 101 | ノートPC | 電子機器 | A社 | メーカーX | PC・周辺機器 102 | マウス | 電子機器 | B社 | メーカーY | PC・周辺機器 103 | Tシャツ | 衣料品 | C社 | 工場Z | アパレル商品 — カテゴリ情報が重複している(非正規化)
❄️ スノーフレークスキーマの例
product_dimension(商品ディメンション) ——————————————————- 商品ID | 商品名 | カテゴリID | ブランド | 仕入先 101 | ノートPC | 1 | A社 | メーカーX 102 | マウス | 1 | B社 | メーカーY 103 | Tシャツ | 2 | C社 | 工場Z category_dimension(カテゴリディメンション) ——————————————————- カテゴリID | カテゴリ名 | カテゴリ説明 1 | 電子機器 | PC・周辺機器 2 | 衣料品 | アパレル商品 — カテゴリ情報を別テーブルに分離(正規化)

スノーフレークスキーマのメリット・デメリット

メリット デメリット
  • ストレージ節約:データの重複が少ない
  • 更新が容易:カテゴリ名の変更は1箇所だけ
  • データの整合性:正規化されているため矛盾が少ない
  • JOINが増える:クエリが複雑になる
  • パフォーマンス低下:JOIN処理により遅くなる
  • 理解しにくい:構造が複雑になりがち
💡 どちらを選ぶべきか?

ほとんどの場合、スタースキーマを推奨します。

スタースキーマ:シンプルで高速、BIツールとの相性が良い(推奨)
⚠️ スノーフレークスキーマ:ストレージが非常に限られている場合のみ検討

現代のストレージコストは安価なため、パフォーマンスとシンプルさを優先してスタースキーマを選ぶのが一般的です。

📦 6. データマート設計の考え方

データマートとは

📦 データマート(Data Mart)

特定の部門や目的に特化した小規模なデータウェアハウスです。

データウェアハウスから必要なデータを抽出・集約し、特定の分析ニーズに最適化します。

データウェアハウスとデータマートの関係

🏢 全体アーキテクチャ
📦 業務システム(複数)     ├─ ECサイトDB     ├─ 在庫管理DB     └─ 顧客管理DB
↓ ETL処理
🏢 データウェアハウス(統合・全社)     └─ 全社統合データ(過去5年分など)
↓ データマート作成
📊 データマート(部門別)     ├─ 営業部用データマート(売上分析)     ├─ マーケティング部用データマート(顧客分析)     └─ 経営層用データマート(経営ダッシュボード)

データマートの設計例

📊 例:営業部用データマート

目的:営業実績の把握、目標達成率の確認

— ファクトテーブル sales_performance_fact ——————————————————- 日付ID | 営業担当ID | 商品ID | 地域ID | 売上金額 | 目標金額 | 達成率 — ディメンションテーブル salesperson_dimension(営業担当ディメンション) ——————————————————- 営業担当ID | 営業担当名 | 所属支店 | 役職 | 入社年 region_dimension(地域ディメンション) ——————————————————- 地域ID | 地域名 | 都道府県 | エリアマネージャー

特徴:

  • 営業部に必要なデータだけを抽出
  • 目標金額、達成率など、営業固有の指標を追加
  • 営業担当者の属性を詳細化

データマート設計のポイント

💡 データマート設計のベストプラクティス
  1. 特定の目的に特化:部門や分析目的に応じて最適化
  2. スタースキーマ推奨:シンプルで使いやすい構造
  3. 集計済みデータ:頻繁に使う集計は事前計算して保持
  4. 適切な粒度:分析に必要な粒度で設計(日次、月次など)
  5. 定期的な更新:日次バッチでDWHからデータを更新

📝 7. データウェアハウス設計のまとめ

✅ このステップで学んだこと
  • OLTPとOLAP:業務処理と分析処理は目的が異なるため、別々のデータベースで設計
  • データウェアハウス:分析を目的とした大量データの統合・蓄積基盤
  • ファクトとディメンション:数値データ(ファクト)と分析軸(ディメンション)に分けて設計
  • スタースキーマ:シンプルで高速、DWH設計の基本パターン
  • スノーフレークスキーマ:正規化されたパターンだが、通常はスタースキーマを推奨
  • データマート:特定部門向けに最適化された小規模DWH
💡 実務での適用

データウェアハウスの設計は、OLTPとは全く異なるアプローチが必要です:

OLTP:第3正規形、データの整合性を最優先
DWH:スタースキーマ、クエリパフォーマンスを最優先

どちらも正しい設計ですが、目的が違うため、設計方針も異なります。
実務では、OLTPで業務データを管理し、それをETL処理でDWHに統合するのが一般的です。

📝 練習問題

問題 1 基礎

OLTPとOLAPの違いを3つ以上挙げて説明してください。

【解答例】
  1. 主な用途:OLTPは日常業務処理(注文、決済など)、OLAPは分析・レポート作成
  2. クエリパターン:OLTPは単純で定型的なクエリ、OLAPは複雑な集計・多次元分析
  3. 更新頻度:OLTPはリアルタイムで頻繁に更新、OLAPはバッチ処理(日次、週次)
  4. 正規化:OLTPは第3正規形(高度に正規化)、OLAPは非正規化(スタースキーマ)
  5. データ量:OLTPは少量(現在のデータ)、OLAPは大量(過去数年分の履歴)
問題 2 基礎

ファクトテーブルとディメンションテーブルの違いを説明してください。

【解答例】

ファクトテーブル:

  • 分析の対象となる数値データ(売上金額、数量、利益など)を保持
  • ディメンションテーブルへの外部キーを複数持つ
  • 行数が非常に多い(数百万〜数億行)
  • 「何を測るか」を表す

ディメンションテーブル:

  • 分析の軸となる属性情報(商品名、カテゴリ、顧客名など)を保持
  • サロゲートキーを主キーとする
  • 行数は比較的少ない(数千〜数万行)
  • 「どう分析するか」を表す
問題 3 標準

以下のデータを分析するためのスタースキーマを設計してください。ファクトテーブル1つ、ディメンションテーブル3つ以上を設計してください。

分析したいこと:
  • 店舗別の日次売上を分析したい
  • 商品カテゴリ別の売上傾向を把握したい
  • 時間帯別の売上パターンを分析したい
  • 従業員(レジ担当者)別の売上を比較したい
【解答例】
— ファクトテーブル sales_fact(売上ファクト) ——————————————————- 売上ID | 日付ID | 時間ID | 店舗ID | 商品ID | 従業員ID | 数量 | 売上金額 | 原価 | 利益 — ディメンションテーブル date_dimension(日付ディメンション) ——————————————————- 日付ID | 日付 | 年 | 月 | 日 | 曜日 | 四半期 | 週番号 | 祝日フラグ time_dimension(時間ディメンション) ——————————————————- 時間ID | 時刻 | 時 | 分 | 時間帯 | 営業区分 — 時間帯: 朝(6-10)、昼(10-14)、午後(14-18)、夜(18-22) store_dimension(店舗ディメンション) ——————————————————- 店舗ID | 店舗名 | 地域 | 都道府県 | 店舗タイプ | 開店日 | 店長名 product_dimension(商品ディメンション) ——————————————————- 商品ID | 商品名 | カテゴリ | サブカテゴリ | ブランド | 仕入先 | 標準価格 employee_dimension(従業員ディメンション) ——————————————————- 従業員ID | 従業員名 | 所属店舗 | 役職 | 入社日 | シフト区分

設計のポイント:

  • ファクトテーブルには数値(数量、売上金額、原価、利益)を配置
  • 各ディメンションには分析に使う属性を豊富に含める
  • 日付と時間を分離することで、日次分析と時間帯分析の両方に対応
  • 時間ディメンションに「時間帯」「営業区分」を追加して分析しやすくする
問題 4 標準

以下のスタースキーマを使って、「2025年1月の商品カテゴリ別・店舗別の売上合計」を取得するSQLを書いてください。

— ファクトテーブル sales_fact(sale_id, date_id, store_id, product_id, quantity, amount) — ディメンションテーブル date_dimension(date_id, date, year, month, day) store_dimension(store_id, store_name, region) product_dimension(product_id, product_name, category)
【解答】
SELECT p.category AS カテゴリ, s.store_name AS 店舗名, SUM(f.amount) AS 売上合計, SUM(f.quantity) AS 販売数量 FROM sales_fact f JOIN date_dimension d ON f.date_id = d.date_id JOIN store_dimension s ON f.store_id = s.store_id JOIN product_dimension p ON f.product_id = p.product_id WHERE d.year = 2025 AND d.month = 1 GROUP BY p.category, s.store_name ORDER BY p.category, 売上合計 DESC;

実行結果例:

カテゴリ | 店舗名 | 売上合計 | 販売数量 電子機器 | 東京本店 | 5000000 | 250 電子機器 | 大阪店 | 3200000 | 180 衣料品 | 東京本店 | 2800000 | 420 衣料品 | 大阪店 | 1900000 | 310
問題 5 応用

スタースキーマとスノーフレークスキーマの違いを説明し、それぞれのメリット・デメリットを挙げてください。また、どのような状況でスノーフレークスキーマを選ぶべきか説明してください。

【解答】

違い:

  • スタースキーマ:ディメンションテーブルが非正規化されている(1つのテーブルに属性をフラットに格納)
  • スノーフレークスキーマ:ディメンションテーブルが正規化されている(階層を別テーブルに分離)

スタースキーマのメリット・デメリット:

  • ✅ クエリが高速(JOINが少ない)
  • ✅ 構造がシンプルで理解しやすい
  • ✅ BIツールとの相性が良い
  • ❌ ストレージ使用量が多い(データの重複)
  • ❌ ディメンションの更新時に複数行を変更する必要がある

スノーフレークスキーマのメリット・デメリット:

  • ✅ ストレージ使用量が少ない
  • ✅ データの整合性が高い
  • ✅ ディメンションの更新が容易
  • ❌ クエリが複雑になる(JOINが多い)
  • ❌ パフォーマンスが低下する
  • ❌ 理解しにくい

スノーフレークスキーマを選ぶべき状況:

  • ストレージコストが非常に限られている場合
  • ディメンションの属性が頻繁に変更される場合
  • データの整合性が特に重要な場合
  • ただし、現代ではストレージコストが安価なため、ほとんどの場合はスタースキーマを推奨
問題 6 応用

【総合問題】ECサイトのデータウェアハウスを設計してください。以下の分析要件を満たすスタースキーマを設計し、各テーブルの主要カラムを定義してください。

分析要件:
  • 日次/月次/年次の売上トレンド分析
  • 商品カテゴリ別の売上分析
  • 顧客セグメント別の購買行動分析
  • 地域別の売上分析
  • プロモーション効果の測定
【解答例】
— ファクトテーブル order_fact(注文ファクト) ——————————————————- 注文明細ID | 注文ID | 日付ID | 顧客ID | 商品ID | 配送先ID | プロモーションID | 数量 | 売上金額 | 割引金額 | 原価 | 利益 — ディメンションテーブル date_dimension(日付ディメンション) ——————————————————- 日付ID | 日付 | 年 | 四半期 | 月 | 週番号 | 日 | 曜日 | 祝日フラグ | 会計年度 | 会計月 customer_dimension(顧客ディメンション) ——————————————————- 顧客ID | 顧客名 | メールアドレス | 会員ランク | セグメント | 初回購入日 | 累計購入金額 | 購入回数 | RFM分類 product_dimension(商品ディメンション) ——————————————————- 商品ID | 商品名 | カテゴリ | サブカテゴリ | ブランド | 仕入先 | 標準価格 | 原価 | 発売日 | 販売ステータス geography_dimension(地域ディメンション) ——————————————————- 地域ID | 郵便番号 | 都道府県 | 市区町村 | 地方区分 | 配送エリア promotion_dimension(プロモーションディメンション) ——————————————————- プロモーションID | プロモーション名 | プロモーションタイプ | 開始日 | 終了日 | 割引率 | 対象カテゴリ | チャネル

設計のポイント:

  • ファクトテーブル:注文明細レベルの粒度で、数量・金額・利益などの数値を保持
  • 日付ディメンション:様々な時間軸での分析に対応(年/四半期/月/週/日)
  • 顧客ディメンション:セグメント分析、RFM分析に対応する属性を追加
  • プロモーションディメンション:プロモーション効果を測定するための属性

分析クエリの例:

— プロモーション別の売上効果分析 SELECT pr.プロモーション名, pr.プロモーションタイプ, SUM(f.売上金額) AS 売上合計, SUM(f.割引金額) AS 割引合計, SUM(f.利益) AS 利益合計, COUNT(DISTINCT f.注文ID) AS 注文件数 FROM order_fact f JOIN promotion_dimension pr ON f.プロモーションID = pr.プロモーションID JOIN date_dimension d ON f.日付ID = d.日付ID WHERE d.年 = 2025 AND d.月 = 1 GROUP BY pr.プロモーション名, pr.プロモーションタイプ ORDER BY 売上合計 DESC;

❓ よくある質問

Q1: OLTPとOLAPは必ず分ける必要がありますか?

規模が大きい場合は分けることを強く推奨します。小規模なシステム(数万件程度)であれば、OLTPデータベースで分析も行うことは可能です。しかし、データ量が増えると分析クエリが業務処理を遅くしたり、リソースの競合が発生したりします。目安として、トランザクションが月10万件を超えたら、DWHの導入を検討しましょう。

Q2: スタースキーマは正規化されていないので、データの整合性が心配です。

DWHでは問題ありません。理由として、DWHは読み取り専用に近く、データは追加のみで更新・削除はほぼありません。また、元データはOLTPシステムで整合性が保証されており、ETL処理時にクレンジング・検証を行います。DWHの目的は「高速な分析」であり、そのために非正規化は許容されます。

Q3: ファクトテーブルとディメンションテーブルの区別が難しいです。どう判断すればいいですか?

「集計したい数値」が含まれているか?という質問で判断できます。YESならファクトテーブル、NOならディメンションテーブルです。簡単な判断基準として「数値データ = ファクト」「文字データ = ディメンション」と考えるとわかりやすいです。

Q4: データウェアハウスは常にリアルタイムである必要がありますか?

いいえ、通常はリアルタイムである必要はありません。ほとんどの分析では「昨日までのデータ」で十分です。日次バッチで更新(深夜にETL処理)するのが一般的です。リアルタイムDWHが必要な場合もありますが、技術的に複雑で高コストなため、本当に必要か慎重に判断しましょう。

Q5: 小規模なシステムでもデータウェアハウスを導入すべきですか?

規模とニーズによります。複数システムのデータ統合、過去数年分のデータ保持、経営層向けダッシュボードが必要な場合は検討の価値があります。一方、データ量が少ない(数万件程度)場合や、単純な集計だけで十分な場合は不要です。小規模であれば、OLTPデータベースに集計テーブルを追加する「簡易版DWH」で十分な場合もあります。

Q6: ETL処理は自分で作る必要がありますか?

いいえ、ETLツールを使うことを推奨します。主要なETLツールとしては、Apache Airflow(オープンソース)、AWS Glue、Google Cloud Dataflow、Azure Data Factoryなどがあります。これらを使えば、データの抽出・変換・ロードが簡単で、スケジューリング機能も標準装備されています。ただし、シンプルな要件であればSQLやPythonスクリプトで十分な場合もあります。

📝

学習メモ

データベース設計・データモデリング - Step 14

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE