データ基盤の設計判断は、データ量のオーダーで根本的に変わります。10GB級の組織と1PB級の組織では、使うツールも、チーム構成も、チューニングの観点もまるで異なります。本記事では、10GB・10TB・1PBの3段階でスケーリング戦略を整理し、各段階の設計判断と落とし穴を解説します。

データ量で設計は根本的に変わる

「データが増えたら同じ構成を拡張すればいい」という発想は、一定規模を超えると通用しなくなります。10GBの世界ではシンプルさが正義、10TBではチューニングの世界、1PBではアーキテクチャの根本見直しが必要です。どの段階にいるかを正しく認識し、次の段階の構成を見据えて設計することが重要です。

ここで述べる「GB / TB / PB」は単に保存サイズではなく、クエリ対象となるアクティブデータの目安です。コールドデータを含めるとさらに桁が大きくなる場合があります。

10GBスケール――シンプルさが正義

10GBクラスでは、何を選んでも動きます。BigQueryでもSnowflakeでもPostgreSQLでも、快適に動作します。この段階で重要なのは「シンプルさ」と「次のフェーズへの移行しやすさ」の両立です。

典型的な構成はBigQuery無料枠 + Airbyte OSS + dbt Core + Metabaseで、月額数千円〜数万円の範囲に収まります。パーティショニングやクラスタリングを意識する必要はほとんどなく、テストを書いて日次バッチを回せば十分です。むしろ、この段階でアーキテクチャを複雑にしすぎないよう気を付けてください。

10GB級でよく見る失敗は「将来のために過剰設計する」ことです。スキーマレスに全てを溜めたり、ストリーム処理基盤を先行導入したりしても、データ量が少ないうちは使い切れずに運用負荷だけが残ります。

10TBスケール――パフォーマンスチューニングの世界

10TBに入ると、クエリが遅くなり始め、月額費用も目に見えて上昇します。パーティショニング、クラスタリング、インクリメンタルモデル、マテリアライズドビューといったチューニング技法が効いてくる領域です。

BigQueryならパーティショニング+クラスタリングでスキャン量を大幅に削減できます。以下は典型的な設定例です。

CREATE TABLE marts.fct_orders
PARTITION BY DATE(order_date)
CLUSTER BY customer_id, region
OPTIONS(
  partition_expiration_days = 365,
  require_partition_filter = TRUE
) AS
SELECT * FROM {{ ref('int_orders_enriched') }};

dbtでは`materialized=’incremental’`を使い、日次で差分だけを再計算するのが定石です。全件再計算はコストと時間の両面で現実的でなくなります。

この段階では、データ品質の問題も目立ち始めます。Elementary / Monte CarloなどのオブザーバビリティツールとdbtテストでSLAを守る運用を確立しましょう。チーム構成も専任のデータエンジニア2〜3名 + アナリティクスエンジニアが必要になってきます。

1PBスケール――アーキテクチャの根本見直し

1PBに達すると、「DWHにすべて突っ込む」方針は破綻します。ホット / コールドの分離、オブジェクトストレージ + オープンテーブルフォーマットの採用、Spark / Trinoによる分散処理、専用ストリーム処理基盤など、アーキテクチャそのものを見直す必要があります。

この段階ではDatabricks(Delta Lake + Spark)やSnowflake + Icebergといったレイクハウスアーキテクチャが主流です。BigQueryもPBスケールに対応していますが、コスト管理と権限設計の複雑さが桁違いに増します。

組織面では、データプラットフォームチームが部門として確立されることが多くなります。SRE的な視点を持つエンジニア、データモデラー、アナリティクスエンジニア、ガバナンス担当が専門分業し、データメッシュ的な分散所有に移行するケースも見られます。

スケール別推奨構成

各スケールの推奨構成を1つの表で俯瞰します。

観点10GB10TB1PB
DWHBigQuery無料枠Snowflake / BigQueryDatabricks / Snowflake + Iceberg
IngestionAirbyte OSSFivetranFivetran + 自作CDC
Transformdbt Coredbt Clouddbt Cloud + SQLMesh / Spark
BIMetabaseLooker / TableauLooker + BIセマンティック層
品質監視dbt testsdbt tests + ElementaryMonte Carlo / Soda
チーム規模1〜2名3〜8名15名以上
月額コスト目安1〜15万円100〜500万円5,000万円以上

各スケールの構成を図で示します。

【スケール別構成図】

10GB:
[Sources] -> [Airbyte] -> [BigQuery] -> [dbt Core] -> [Metabase]

10TB:
[Sources] -> [Fivetran] -> [Snowflake] -> [dbt Cloud] -> [Looker]
                              |                 |
                              +-> [DataHub]     +-> [Elementary]

1PB:
[Sources] -> [Fivetran + CDC] -> [Object Storage (S3/GCS)]
                                     |
                                     v
                       [Delta / Iceberg Table Format]
                                     |
                   +-----------------+-----------------+
                   v                 v                 v
               [Databricks]      [Trino/Presto]    [Spark Jobs]
                   |                 |                 |
                   v                 v                 v
           [dbt Cloud / SQLMesh] [BI Semantic Layer] [Looker/Tableau]

スケーリングの落とし穴

スケーリング時によく陥る落とし穴を表に整理しました。先回りして手を打つことで、痛みを最小化できます。

落とし穴症状対策
パーティショニング未設定フルスキャンで費用急増DATE / タイムスタンプ列で分割
全件再計算の放置dbt runが数時間incrementalモデル採用
コールドデータ未分離ストレージ費増大アーカイブ / BI Engineから除外
権限管理の属人化退職で止まるTerraformでRBAC管理
モノリシックなモデル変更不能ドメイン分割 / データメッシュ
テストカバレッジ不足障害多発dbt tests + Elementary自動化

まとめ

データ基盤は量のオーダーで別物になります。10GBではシンプルさ、10TBではチューニング、1PBではアーキテクチャ再設計――それぞれのフェーズで正しい手を打ち続けることが、持続可能な基盤の条件です。先のフェーズを見据えつつ、今のフェーズに合った構成を保ち続けてください。

よくある質問

データ量が増えたら何から見直すべきですか?

まずパーティショニングとクラスタリングの最適化から始めましょう。これだけでクエリ性能が数倍改善するケースが多いです。次にインクリメンタルモデル化、最後にコールドデータ分離の順が費用対効果の高いアプローチです。

PBスケールにはどのDWHが適していますか?

Databricks(Spark + Delta Lake)またはSnowflakeが実績豊富です。BigQueryもPBスケールに対応していますが、コスト管理がより重要になります。選定時には既存のデータエコシステムとの親和性も考慮してください。

スケーリングでコストを抑えるコツは?

ホットデータ / コールドデータの分離、不要データの定期削除、クエリパターンに合わせたパーティショニングの3つが基本です。BI Engineやマテリアライズドビューを使い、よく使われるクエリをキャッシュすることも効果的です。