8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

意外と簡単!?PostgreSQLとSnowflakeの違いを比較してみた!

8
Last updated at Posted at 2025-11-30

はじめに

初めまして、NTTテクノクロスの中村です。この記事は「NTTテクノクロス Advent Calendar 2025(シリーズ2)」の1日目の記事です。

どうぞよろしくお願いします!

本記事では、Snowflake と PostgreSQL を特定の観点で比較していきます。

Snowflake というワードは数年前からよく聞いていたのですが、直接触れる機会がなかったため「なんかよくわからないけど、クラウドの新しいサービス」という認識が強かったです。

ですが、今年になりAWSの資格試験(Data Engineer)の中で Snowflake を扱った内容が出てきたり、さらに Snowflake の研修で実際に触ることができたことで、ある程度自分の中で「Snowflakeはこういうものかも?」というイメージができてきました。

AI や ML(機械学習)を交えた使い方全てを網羅的に理解できたわけではないのですが、基本的な部分については、自分の得意分野である PostgreSQL に寄せて理解することはできたかなと思っています。

そこで今回は、PostgreSQL と Snowflake を比較しつつ、違いを見ていきたいと思います。

PostgreSQLとSnowflakeはどっちもデータベース

Snowflakeは色々なことができますが、PostgreSQL技術者が Snowfalke の理解を深めるための第一歩として、「データベースとしてのSnowflake」という部分にフォーカスします。

利用ケースを想定して、PostgreSQL と Snowflake の違いを見てみましょう。

ここでは、
 (1) 外部に存在するデータを、
 (2) データベース上のテーブルにロードし、
 (3) SQLで分析して、
 (4) 結果を表やグラフで表示する
という使い方を実施する場合を想定します。

PostgreSQL と Snowflake のできることを比較すると以下のようになります。

Snowflake PostgreSQL
データの登録 〇 〇
データの格納 〇 〇
データの分析 〇 〇
分析結果の表示 〇 ×

分析結果の表示以外は PostgreSQL でも実施できることがわかりますね。

PostgreSQLでのデータ登録は、psql上でのCOPYコマンドや pg_bulkload 、アプリケーション経由などで実施可能です。
データの格納はもちろん、DBテーブルへの格納ができます。

PostgreSQLでのデータ分析は、SQLの実行によって可能です。分析というと難しく考えがちですが、大量のデータの中から、欲しい情報だけを抽出して集約・集計・傾向を求めるといったことはSQLの得意とするところです。
また、もう少し複雑なロジックを必要とする場合は、プロシージャを使用することで分析が可能です。

分析結果の表示(BI機能)は PostgreSQL 本体の機能にはありませんので、別途用意する必要があります。

データベース観点でできること、という見方では PostgreSQL と Snowflake がほぼ同じであることがわかりました。
さらにもう少し細かく分類してみると、PostgreSQL と Snowflake の違いが見えてきます。

PostgreSQL と Snowflake のできることの比較(少しブレイクダウン)

大項目 小項目 Snowflake PostgreSQL
データの登録 ファイル(CSV/JSON)から登録 〇 〇
AWSサービスとの連携で登録
(RDSやストリーミング系)
〇 △
データの格納 データベースの概念 〇 〇
スキーマの概念 〇 〇
テーブルの概念 〇 〇
データの格納先 S3 ローカルディスク
テーブル定義ありのデータロード 〇 〇
テーブル定義なしのデータロード 〇 ×
列指向 〇 ×
行指向 △ 〇
データの分析 SQLでの分析 〇 〇
プロシージャでの分析 〇 〇
分析に使うリソース 処理単位に
サーバ割当
1つのサーバを
みんなで共有
分析結果の表示 - 〇 ×(別途用意)

ブレイクダウンすることで、いくつかの違いが見えてきました。

これ以上細かくすると話が発散してしまいそうなので、細分化はここまでにし、大きな違いを見ていきましょう。

データベースとしてみた時の PostgreSQL と Snowflake の違い

①Snowfalkeのテーブルデータの格納先はS3

PostgreSQL はローカルディスク上にファイルを作成してテーブルデータを格納しますが、Snowflakeでは、Amazon S3上にファイルを作成してテーブルデータを格納します。
(この時点でオーバーヘッドとか、管理方法など気になることは山ほどありますが置いておきます)

OracleでもPostgreSQLでも、データを格納するために専用のディスクを用意し、レイテンシを気にしながら使用しますが、Snowflakeは S3に格納することで専用のディスクの作成・管理を必要としません。

また、S3自体に冗長性があるため、ディスク障害を意識する必要もありません。
(そういう意味では、ディスク障害からの復旧を意図したバックアップも不要ということになります。)

②Snowfalkeはテーブル定義なしのデータロードが可能

PostgreSQL でCSVファイルのデータをロードするには、ユーザが明示的に CSV の構成に沿ったテーブルを先に CREATE TABLE しておく必要があります。

Snowfalke では、登録するデータに応じて、適したテーブルを自動作成することが可能です。とりあえずデータを Snowflake 上に溜めていき、後で SQLで処理しやすい形にデータを加工する、という使い方に向いています。
(もちろん、事前に作成したテーブルへのロードも可能です)

③Snowfalkeは列指向データベース

Snowflake では基本的に列指向で格納されます。これは OLAP(分析処理)向きの方式です。
PostgreSQL は行指向です。

Snowflake でも、ハイブリッドテーブル(CREATE HYBRYD TABLE)というものを用いることで、OLTPに適した行指向の格納方法のテーブルも作成できますが、大規模なテーブルなどでの OLTP用途では PostgreSQL のほうが優位性がありそうです。

④分析(SQL実行)のためのリソースの割り当て方式が違う

これが一番大きな違いだと思うのですが、分析(SQL実行)のためのリソースの割り当て方式は大きく異なります。

PostgreSQL では、SQLの実行時に、インスタンスが起動しているサーバ上に専用のバックエンドプロセスを都度起動して、そのバックエンドプロセスでSQLを処理します。同時に10人がSQLを実行したい場合、10個のバックエンドプロセスが1台のサーバ上に起動します。
これは1台のサーバのリソースを、SQLを実行したい全員で共有する、という方式です。

20251124_snow-pg_1.png
図:PostgreSQLのリソースの利用方法

PostgreSQL ではキャッシュメモリを全てのプロセスで共有するため、一度ファイルから読みだされたデータは別のプロセスからも素早くアクセスできます。

一方、Snowflake では、SQLの実行時に、そのSQLを実行ために指定した規模のウェアハウス(仮想のサーバリソース)を割り当てて、そのリソースの範囲内で処理を行います。

20251124_snow-pg_2.png
図:Snowflakeのリソースの利用方法

PostgreSQLでは1台のサーバのリソースを全員で共有するため、誰かが重い処理を実行してリソースを大量に使用してしまうと、他のSQLに影響が発生しますが、Snowflakeでは処理ごとに必要なサーバリソースを割り当てることができるため、他の処理の影響を受けにくくすることができます。

もちろん、1つのウェアハウス上で複数のSQLを同時に処理させることも可能です。
(どちらかというと、1つのウェアハウスではリソースが足りなくなった場合にウェアハウスを増やす、またはウェアハウスの規模を大きくする、という考え方が基本に思います)

処理単位で適切なリソース量を割り当てる必要があるため、サーバ1台でやりくりするほうが楽な場合もあるかもしれません。
このあたりがチューニングのしどころかと思いました。

さいごに

今回確認したよりもさらに細かな部分で、使い方の作法の違いなどはいくつもありますが、いずれも PostgreSQL を使用できる人であればなんとなく理解できそうなものだったため、Snowflake 特有の違いにフォーカスしてみました。

SQL実行計画のための統計情報は取得できるのか(自動的に取得してくれそうな感じでした)とか、メモリの共有はウェアハウス単位までなのか、とか、ウェアハウスをまたぐロックはどうやっているのか、チューニングの勘所はどこか、など気になるところは多々ありますので、今後さらに理解を深めていくつもりです。

これであなたも、”Snowflakeチョットデキル” になれるかも!?

本記事は以上となります。

NTTテクノクロスのWEBサイトでも PostgreSQLの技術記事を掲載しておりますので、あわせてご覧いただければと思います。

引き続き、NTTテクノクロス Advent Calendar 2025 (シリーズ2) をお楽しみください!

8
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?