はじめに
こんにちは、ユーゴです。
今回は、お仕事で使っていたBigQueryや、似たサービスにあるRedshiftについて、私自身が抱いた疑問を解説していきます。
BigQueryやRedshiftは、データベースと非常に似ていますが、思想がやや異なります。そのため、BigQueryで突合(JOIN)やユーザデータの保存などを行うと、ストレージに操作ロックが入ってしまうなど、困ることが出てきます。
BigQuery・Redshiftって、データベースと違うの?
結論から言うと、BigQuery や Redshift も広義ではデータベースです。しかし、RDS や CloudSQL などの「業務用データベース」とは役割が明確に異なります。
一言で言うと
-
RDS / CloudSQL
→ システムを動かすためのデータベース (Online Transaction Processing) -
BigQuery / Redshift
→ 数字を分析・意思決定するためのデータベース (Data Warehouse / Online Analytical Processing)
目的の違い
業務用データベース(RDS / CloudSQL)
- ユーザー登録
- 注文処理
- 状態更新
- 1件ずつ正確に読む・書く
特徴
- 更新が多い
- 正規化が前提
- トランザクション重視
分析用データベース(BigQuery / Redshift)
- 日次売上集計
- 広告効果分析
- KPI ダッシュボード
- 過去データの傾向把握
特徴
- 読み取り中心。上書きは基本しない
- 大量データを一気に集計
- 冗長データを許容
構造と使い方の違い
| 業務DB | BigQuery / Redshift | |
|---|---|---|
| 主用途 | 業務処理 | 分析・集計 |
| データ量 | 少〜中 | 非常に多い |
| クエリ | 軽い・短い | 重い・長い |
| 正規化 | 重視 | 非重視 |
| JOIN | 日常的 | 最小限 |
| BI 直結 | 非推奨 | 前提 |
なぜ分ける必要があるの?
- 分析クエリは重い
- BI ツールは大量にクエリを投げる
- 業務DBに直撃すると、遅延や障害の懸念が出る
そのため、
「業務DBを守るために、分析専用DBを用意する」
という考え方が一般的です。
正しい役割分担の例
RDS / CloudSQL(業務)
- 現在の状態
- 正確さが最優先
Redshift / BigQuery(分析)
- 過去の事実
- 速く集計できることが最優先
まとめ
いかがだったでしょうか?今回は、BigQueryやRedshiftといったデータウェアハウスと、RDSやCloudSQLといったデータベースの違いを紹介しました。
要点は以下となります。
- BigQuery / Redshift は「別の目的のデータベース」
- 業務用と分析用は思想が正反対
- 分けることで、性能・安全性・拡張性が上がる
なので、棲み分けを意識して使い分けましょう!
本記事のように、クラウドコンピューティングサービスの紹介から、Unity, GAS, 量子コンピューティングなど、幅広いジャンルの紹介をしております。
お役に立てましたら、いいね・フォローなどよろしくお願いします!