メインコンテンツへスキップ

Postgresが分析向けデータベースのトップに躍り出た!その理由とは?

·2 分
2025/03 Postgres データベース 分析 性能 テクノロジー

Postgresが分析向けデータベースのトップに躍り出た!その理由とは?

引用元:https://news.ycombinator.com/item?id=43270712

bhouston 2025-03-08T11:33:58

標準的なSQLデータベースは大規模分析には向かないよね。以前の会社でPostgresを使ったけど、データが20億件を超えると、クエリが実行できなくなるほど遅くなった。BigQueryに変えたら、リアルタイムでの集計が簡単で、コストも安かった。もうPostgresには戻れないかな。

atombender 2025-03-08T12:15:23

Postgresは普通のテーブルを使ったの?それともTimescaleやCitusみたいなカラムストレージ拡張を使ったの?普通のPostgresじゃ分析には向かないよね。ClickHouseもいいよね。ただ、BigQueryはデータ量が増えると高くつくと思う。

bhouston 2025-03-08T12:23:04

Google Cloud SQLで普通のPostgresテーブルを使ったよ。確かに、普通のPostgresは分析に苦労するよね。ClickHouseはどこで運用してる?サーバーレスも可能?BigQueryはコストがかかるかもしれないけど、私はあまり感じなかったな。ストレージコストはほとんどかからなかったし、クエリパターンにうまく対応できたよ。

atombender 2025-03-08T14:00:52

君のコメントは記事に関係ないように感じる。Postgresのヒープテーブルに関する話じゃないし。ClickHouseを自社で運用してるけど、今始めるならClickHouse Cloudを選ぶと思う。ClickHouseの利点は、普通のクラウドストレージ(S3やGCS)にテーブルをバックアップできること。BigQueryは高くつくこともあるし、特に大量のデータ処理には気をつけて。

bhouston 2025-03-08T17:49:56

ClickHouseは調べてみるよ!たくさんのデータやクエリがあると、BigQueryよりも優れた解決策になるかも。

atombender 2025-03-08T21:03:11

ClickHouseはすごいよね。Postgresも良いけど、特にClickHouseは特定の用途に強い。新しいPostgresの拡張で競争力が増すかもしれないけど、ClickHouseは分析ワークロードに最適化されてるから、スケーラブルなデータ取り込みが得意なんだ。

dig1 2025-03-08T12:18:32

ビリオンレコードに対してBigQueryは安くないよ。ストレージコストは安くても、クエリやデータ転送で高くつく。最安のPostgresサーバーも通常のPostgresインストールに比べて高いと思う。

sgarland 2025-03-08T15:58:21

うん。個人プロジェクトでGHTorrentを使った時、各クエリが約20ドルかかった。ビジネスには問題ないかもしれないけど、個人ではかなり高い壁だよ。

sgarland 2025-03-08T18:02:40

EDIT: そのサイトはもう存在しないみたい。プロジェクトはGitHubのメタデータを更新していたもので、こちらにアーカイブのスナップショットがあるよ。

bhouston 2025-03-08T17:50:51

ビリオンレコードのクエリコストは一般的に1セント未満だったよ。キーとなるフィールドでクラスタリングとパーティショニングを行ったからね。

chrisldgk 2025-03-08T17:51:51

このサイトがハッキングされたか、売られたかどっちかじゃないかな。どちらにしても、HNにリンクするべきじゃないと思う。

renegade-otter 2025-03-08T13:18:30

RDSとかは、自分でインスタンスを立てるのを除けば高すぎると思うよ。Digital Oceanはけっこう安定してると思う。

eastbound 2025-03-08T14:21:04

DOの価格がかなり上がってて驚いた。もう$5のVMが始められないかもしれない。確認した方がいいよ。

jmholla 2025-03-08T17:46:19

できるけど、対応してる地域にいないとダメみたい。一般的に世界中で一番安いVMは月$6だよ。

michaelmior 2025-03-08T12:59:50

”通常のPostgresインストール”ってどういう意味?

rapfaria 2025-03-08T12:01:02

>2Bのユーザーイベントのレコードがあって、500Mを超えたらリアルタイムでクエリするのがほぼ不可能になった。これは解決済みの問題なのに、向こうの技術者はそのスキルがなかったみたい。インデックスだけじゃ解決できないから、複合インデックスとかパーティショニング、シャーディング、キャッシングを使うべきだよ。

bhouston 2025-03-08T12:10:37

>この問題は解決済みで、向こうの技術者はスキルがなかったみたい。簡単な解決策が好みだけど、BigQueryを使えば安くて済むし、ジュニア開発者でもできるよ。Kubernetesが嫌いでこのブログを紹介してる。

majkinetor 2025-03-08T13:34:56

50列のテーブルに10Bレコードがあるんだけど、すべての列にインデックスがあって、クエリは1~2分かかる。突然パフォーマンスが落ちたのも困ってる。次にどう改善すればいいのか分からない。

moonikakiss 2025-03-08T16:31:20

これは興味深いワークロードだね。大きな列のテーブルの高速フィルタリングの問題を聞いたことがある。これにはカラムストアのバージョンが役立つよ。手伝えるからDMしてね。

zhousun 2025-03-08T16:34:12

やっぱり多くの列でフィルターかけたいって要望はよくあるよね。pg_mooncakeで解決しようとしてるから、興味あったらmooncake-devs.slack.comに参加して使い方を話そうぜ。

もっとコメントを表示(1)
DrFalkyn 2025-03-08T12:54:41

インデックスはちゃんとしたDB講座で習う基本だから、博士号なくても大丈夫。でもBigTableが解決するならそれもいいかも。Postgresが人気なのはACIDのおかげなんだよね、BigTableはそれがないかも。後で問題が出るかもしれないし、出ないかもしれない。

furstenheim 2025-03-08T15:02:38

ACIDは良いけど、その分コストもかかる(例えばvacuumとか)。分析する時にはACIDは気にしないよね。

bhouston 2025-03-08T14:39:34

Postgres大好きでよく使ってるけど、分析には使ってない。

Isn0gud 2025-03-08T12:10:50

4つ以上の対策が必要ってことは、まだ解決してない問題って感じだね。

TuringNYC 2025-03-08T12:14:25

>>「標準」SQLって何を指してるの?OLTPかOLAPのDBを使ってたときに問題があったの?あと、BigQueryはなぜ「標準SQL」DBでないの?GoogleSQL使ってるけど、多くのDBも微妙にSQLは違うから。

bhouston 2025-03-08T12:27:27

>「標準」SQLってどういう意味?Google CloudのデフォルトのPostgres Cloud SQLをそのまま使ってる。>BigQueryが「標準SQLデータベース」でない理由は何?GoogleSQL使ってるけど、たくさんのDBには微妙なSQLのバリエーションがある。BigQueryはトランザクションやロールバック、外部キー制約、インデックス、ストアドプロシージャなどがないから、SQLの便宜上だけの非SQLデータベースだと思ってる。

gbin 2025-03-08T12:42:52

関係データベースのことを言いたいんじゃない?

layer8 2025-03-08T12:58:08

挙げられた全ての機能はSQLの一部だよ。

jandrewrogers 2025-03-08T14:13:38

SQL(DML)はただのクエリ言語で、どんなものにも実装できる。SQLのDDLの一部は実装特有で、SQL標準は(現代的な基準で)小規模なシステムを前提にしているから、大規模システムでは大きく異なる。そのため、「標準」を作るのは現実的ではないし、実装を理解しなければならない。

nom 2025-03-08T13:21:26

SQLはリレーショナルデータベースとやりとりするための言語ってことだよね。言語の問題じゃないよ。

braiamp 2025-03-08T12:25:21

その人の言ってる標準って、デフォルトの状態を指すんだろうね。

zhousun 2025-03-08T16:07:12

コメントありがとね。でも用語を混同してるっぽいよ。mooncakeの核心はオープンなカラム形式と交換可能なベクトルエンジンの上に構築して、Postgresとネイティブに統合することなんだ。だからBigQueryに近いんだよ。特に新しいBigQueryとicebergテーブルには。その特徴は素晴らしいし、スケーリングも不可能ではないよ。

Simon_O_Rourke 2025-03-08T13:25:12

>それは基本的にとても遅かったから手が付けられなかったよね。
5B行のテーブルでSnowflakeを使ったことがあるけど、インデックスがなくても、少し遅いけど一分か二分で合理的なクエリを実行できたよ。

bhouston 2025-03-08T14:57:48

BigQueryの便利さが好きだった。大きなデータセットで数秒でクエリができるのは、ユーザーが解析ダッシュボードを使う時にリアルタイムでクエリができるから、設計と実装の複雑さが大幅に簡素化されるんだ。

Galanwe 2025-03-08T12:13:40

>セッション中のユーザーイベントの約2Bレコードの急速に成長しているテーブルについて。500Mレコードを超えた時、リアルタイムでクエリするのは不可能だった。
リアルタイムって何を指してるのか分からないけど、20B行のテーブルでPostgresを使ってリクエストを処理できてるよ。インデックスとパーティションを少し調整すれば、だけどね。あんまりDBAじゃないけど。

jandrewrogers 2025-03-08T14:29:39

OPは分析ワークロードを混ぜてるけど、Postgresは小規模でもすごく苦手だよ。ほんの少しの調整じゃどうにもならない。アーキテクチャに内在する問題なんだ。100BレコードをPostgresに入れても、トリビアルなワークロードだったら機能するけど、うまくはいかない。Postgresの内部構造はそんなに大きなデータには向いてない。

Eikon 2025-03-08T12:28:36

同じことがhttps://www.merklemap.com/にも言えるよ。最大のテーブルには30Bレコードが入ってて、B-treeインデックスを使ったクエリは数マイクロ秒で完了するんだ。

tomnipotent 2025-03-08T15:38:50

インデックスを使ったポイントルックアップは分析クエリの問題じゃなくて、大きなスキャンで高いカラム選択性や述語選択性を最小限にすることなんだ。タイムスタンプやプライマリーキーに対するフィルタを最適化したら、フィルタリングされたパーティション内の全てのページに触れるクエリを実行する必要が出てくる。これらの問題はPostgresである程度解決できるけど、今度は非SIMD集計を行うためにページ内でランダムI/Oしなきゃいけなくなる。

jodrellblank 2025-03-08T12:54:14

最初のコメントがコスト削減とGoogle Cloudでの実行について言っているなら、彼らは仮想マシンやHDDを使ってんのかも。あなたや親がいい速度を話してるのに対して、物理サーバーとSSDを使ってるかもしれないから。

saisrirampur 2025-03-08T07:20:58

PeerDBとClickHouseのSaiだよ。このプロジェクトの進展を見るのは嬉しいね。いくつか気づいたことを残しておくよ。トランザクションデータの分析には、やっぱり論理レプリケーションが必要みたい。管理が難しいのが課題だけど、PeerDBはその辺の性能や管理の問題を解決するために使われてるよ。Postgresとの互換性の価値は大きいけど、カラムテーブルでのSQLの網羅性には疑問があるな。全ての機能をサポートするのは難しいし、Citusの時もそのジレンマに苦しんだ。目的に特化したデータベースを使うのがいいのか、より一般的なアプローチを取るのがいいのか迷うところだ。自分は、適材適所が大事だと思うけど、進化するPostgresコミュニティの成果にはワクワクするよ。

もっとコメントを表示(2)
zhousun 2025-03-08T15:35:22

Mooncake LabsのZhouだよ。PeerDBの仕事は素晴らしくて、pg_mooncakeの進化に影響を与えてるね!mooncakeの核となるアイデアは、オープンなカラムフォーマットと置き換え可能なベクトルエンジンを基に、Postgresとネイティブに統合することなんだ。小規模開発者のためには、使いやすくするためにPostgres拡張としてスタック全体を埋め込むことができるし、企業向けにはPeerDBやClickHouseに似た特化型スタックとして提供してるんだ。徐々に1から2への移行も可能にしているよ。

saisrirampur 2025-03-08T17:22:01

ありがたい言葉ありがとう!仮に目的に特化した設計だとしても、分析データベースをトランザクションデータベースにレトロフィットするのはかなり難しいと思う。そうすると、双方のベストな部分をユーザーが得られない可能性が高い。PeerDBはPostgresとClickHouseを別々に保ってデータをきちんと移動させてるんだ。お互いの特性を生かした利用ができるよ。これからも頑張ってね!analytics拡張を作る上でのCitusでのチャレンジも参考になったよ。

zhousun 2025-03-08T18:36:10

デザインの境界は確かに曖昧になってきているよね。Mooncakeの論理レプリケーションは、Postgresのヒープテーブルのカラム版を作ろうとしているんだ。これをpg_mooncakeを通じてPostgres内外で読み取れるようにしているよ。特に従来のOLAPシステムが遅れをとるようなリアルタイムの更新や削除も行えるから、データ管理が楽になるよね。

saisrirampur 2025-03-08T19:54:53

なるほど。そうなると、なんでそのクエリエンジンを直接使わないのかという疑問が出てくるね。DuckDBを含めた拡張の中でその能力を存分に発揮できないかもしれないし、Postgresの制約の中で操作してるからね。

zhousun 2025-03-08T20:43:36

その通り!次のバージョンに期待してね!Mooncakeの焦点は、pgとネイティブに統合されたカラムストレージエンジンとして、pgからの書き込み、レプリケーション、pg_mooncakeを使った読み込みを可能にすることだよ。他のエンジンもmooncakeからデータを読む操作をしてもらうし、それはステートレスエンジンだから管理が楽でETLの問題も避けられるんだ。

saisrirampur 2025-03-08T20:51:34

いい感じ!まだ少し混乱してるけど、次のバージョンを待ってるよ!ETLの問題は解決されていないと思うよ、Postgresソースからの論理レプリケーションはまだETLにあたるし、論理レプリケーションの問題に対処するために会社を作った経験があるから、注意が必要だね。

theLiminator 2025-03-08T09:30:51

cedardbみたいなものが、OLAPとOLTPデータベースの違いをなくす日が来ると思う?

zhousun 2025-03-08T15:46:31

面白いね!mooncakeチームはSingleStoreを作ってたけど、これまでで最も生産準備が整ったHTAPシステムだと思う。人々はOLTPシステムを変更したがらないことを学んだよ。ネタバレ:mooncakeはこれからHTAPユースケースをサポート予定で、OLTPのPostgresテーブルをそのままに、分析機能を追加するんだ。

dleeftink 2025-03-08T05:47:20

DuckDBをカラムストアクエリの実行エンジンとして組み込んで、クエリの実行速度を向上させているっていうけど、解析のトップに立ったのはPostgresなの?それともDuckDBなの?

moonikakiss 2025-03-08T07:05:21

pg_mooncakeはPostgresの拡張だし、Postgresとpg_mooncakeを合わせてもPostgresでしかないよ。ユーザーはpg_mooncakeをPostgresの拡張としてデプロイして、psqlを通じてテーブルの作成やクエリを行ってる。高速な分析データベースには、カラムストレージとベクトル化実行エンジンが必要だ。Postgresにカラムストアテーブルアクセス方式を追加して、データをParquetで保存し、DuckDBを使ってそのテーブルにクエリを実行してる。これでベクトル化クエリ実行の再発明を避けながら、全部Postgresで管理できるんだ。
詳しくはこちら:
https://www.mooncake.dev/blog/how-we-built-pgmooncake

moonikakiss 2025-03-08T07:19:08

忘れてたけど、実はParquetではDuckDBより速いんだ。Parquetメタデータに基づいてセグメント排除を実装したんだ。
ブログでも触れてるよ:
https://www.mooncake.dev/blog/duckdb-parquet

porker 2025-03-08T09:27:56

DuckDBへの変更は反映させたの?

fmbb 2025-03-08T12:01:45

リンク先のブログ読むと、スピードアップはPostgresテーブルへの一部のルックアップをオフロードしたからみたいだけど、それはDuckDBには合わない気がする。
>pg_mooncakeはPostgresを使ってテーブルメタデータを保存するから、外部カタログをクエリする必要がないんだ。Parquetファイルをスキャンするためにどのファイルを調べるか、直接Postgresテーブルをクエリして特定して、オーバーヘッドを減らしてるんだ。
さらに、pg_mooncakeは各ファイルの詳細なParquetメタデータをPostgresに保存していて、各行グループの列統計値も含まれているんだ。この統計は、スキャンを最適化するために集計されるんだ。

jbergens 2025-03-08T13:11:25

自分はpgとxを組み合わせたらpgじゃないって思う派なんだ。ホスティングされたpgサーバーにはxをインストールできないこともあるし、pgを拡張できるのは素晴らしいけど、組み込みソリューションほどの評価はできないな。

gavinray 2025-03-08T12:05:19

この文をREADMEの冒頭に入れることを提案したいな。
>高速な分析データベースには、カラムストレージとベクトル化実行エンジンの二つの要素が必要だ。Postgresにカラムストアテーブルアクセス方式を追加し、データをParquetで保存して、それに対してDuckDBを使ってクエリを実行している。

fifilura 2025-03-08T07:52:38

並列処理のためにCPUを増やすコストはどれくらい?AWS/AthenaやBigQueryと比べてそれがいつも問題だった。彼らは分析ワークロードでも100CPUに計算を並列化できるのに、あんまり追加料金がかからないから安いよ。PostgresだとCPUを増やすのに線形コストがかかるから、全体的に遅くなるんだ。

zhousun 2025-03-08T15:56:30

mooncake labsのzhouです。いい指摘だね!通常はPostgres拡張だと解決が難しいけど、mooncakeの場合は実はそうじゃないんだ!mooncakeの基本アイデアはオープンカラム形式と交換可能なベクトル化エンジンをもとに、Postgresとネイティブに統合することだからね。今はPostgres内でDuckDBを使ってクエリを実行してるけど、AthenaやStarRocks、Sparkなど、他の’静的エンジン’を使って大きなクエリを実行することもサポートする予定なんだ。

nextn 2025-03-08T13:42:56

高速分析データベースには他に重要な技術が必要だと思うけど、何か分かってないみたい。

tonyhart7 2025-03-08T06:59:48

両方ってこと?彼らのホームページを見た感じ、これが明らかに彼らのビジネスモデルだと思うけど。

rubenvanwyk 2025-03-08T07:01:47

DuckDBって名前だね。

もっとコメントを表示(3)
nikita 2025-03-08T05:42:44

すごくワクワクするプロジェクトだね。主なポイントは、Query processorはDuckDBで、PGの型システムをDuckDBの型システムにうまく変換できれば、かなり速くなるってこと。データはS3にParquetで、DeltaやIcebergのメタデータと共に保存されるんだって。だから、分析データをWALに通す必要がなくて、メタデータだけがWALに入る。理論的には、素早いロードが可能になるし、Delta/Icebergのエコシステムとも互換性があるんだ。リアルタイムの取り込み機能ができたら、時系列データをこのシステムにプッシュできて、Clickhouseみたいな別のシステムは不要になるよ。

tarun_anand 2025-03-08T05:51:13

ローカルファイルシステムにもデータが保存されるんだね。これって普通のPGやS3に基づくストレージと比べてどうなの?

dsiegel2275 2025-03-08T13:29:36

少し前から疑問に思ってることがあるんだけど、OLTP用のPostgresインスタンスとOLAP用のカラムストア拡張を同じインスタンスで使ってるチームっているのかな?それとも別のPostgresインスタンスを立ててるのかな?一緒にするとOLTPのパフォーマンスに影響が出るのか知りたいんだ。

bach4ants 2025-03-08T13:52:49

pg_mooncake拡張を使うとS3にデータを保存できるけど、PostgresはただDuckDBを動かすための計算を提供してるだけなんだろうか。標準化されたインターフェースと”データカタログ”も提供しているのかな?

zhousun 2025-03-08T15:48:17

トランザクションはPostgresによってネイティブテーブルとして管理されるから、PostgresとS3データ間のコミットを調整する必要がないよ。

owenthejumper 2025-03-08T11:44:24

ビジネスモデルは何なんだろう?MITライセンスの拡張だけど、会社とVCが背後にいるんだよね。なんか詐欺になりそうで心配だな。

tesch1 2025-03-08T14:56:39

反論:こういうスタートは実に賢いと思うよ。 viableなビジネスモデルを持つためには、ユーザーに価値を提供する必要があるからね。ユーザーは賢いから、会社が消えたときに出口がないものを試そうとは思わない。どの会社も望むのは、提供する価値に満足した顧客に広めてもらうことだよ。そうじゃない場合は、最終的に誰もが不満を持つ状況になるんだ。大きなカラムDBの価格が高いから、この空間には多くの機会があると思うし、ベンチマークの変化も早いし、メモリ価格の低下も見えそうだし、AIの影響も気になるな。10年後に1TBのRAMを持った電話を手に入れても、99%の人はカラムストアがいらなくなるんじゃないかな。

zhousun 2025-03-08T15:41:22

mooncake labsのZhouだよ。Mooncakeはオープンテーブルフォーマットと置換可能なクエリエンジンに基づいていて、単なるPostgres拡張ではないんだ。pg_mooncakeはMITの下でオープンソースのまま、小規模開発者向けにPostgresに収まるプロジェクトとして楽しんでもらえることを願ってる。そして、Postgresから次世代スタック、Postgres + mooncakeに移行する手助けをしたいと思ってるよ。

spapas82 2025-03-08T09:04:00

他の人も言ってるけど、結果は拡張からのものであって、Postgresの一部じゃないから残念だね。実際、pg_stat_statementsみたいに、”外部”の拡張を使うのは、技術的な問題も法的な問題もあって、ほとんどの人にとっては平易なことではないからね。

moonikakiss 2025-03-08T16:13:19

Neon Postgres試してみて!
https://neon.tech/docs/extensions/pg_mooncake
始めるのはすごく簡単だよ。

kyrra 2025-03-08T14:18:40

法的な問題って何?

kbolino 2025-03-08T16:28:38

TimescaleDBのような拡張機能には、競合に使うことを禁止するライセンスがあるんだ。具体的には、主要なクラウドプロバイダーの管理データベースでは使えない。例えば、CitusのAGPLライセンスでは、サービスをホスティングする際にはその変更を公開する必要があるから、負担になりそうだね。企業の弁護士はこのAGPLに疑念を抱くことが多いみたい。

eska 2025-03-14T06:42:07

2年前に彼らのチャットで聞いたことがあるんだけど、CEOはDirectに返事をくれた。その話では、Timescaleは管理サーバーで使うことはできるが、他の人のためにTimescaleをホスティングしてはいけないって。

spapas82 2025-03-08T16:28:36

Postgresは有名なオープンソースライセンスがあって使いやすいんだ。でも、一部の拡張機能はそうじゃないから、使いづらいんだよね。例えば、ライセンスがApacheやMITでも、将来的に変わる可能性があるから気をつけて!

xkgt 2025-03-08T09:31:55

タイトルを何回も読んだけど、やっぱり誤解を招くかも。ベンチマークはPostgresじゃなくてMooncake拡張付きPostgresのものだし、他の拡張でも結果があるからね。最速ではないし、トップ10にも入ってないよ。

bigtones 2025-03-08T06:29:08

現在、Clickbenchベンチマークでは12位のようだから、3週間後にはトップ10にはいないみたい。

moonikakiss 2025-03-08T07:07:13

分かる!この分野はみんなすごく早く動いてるよね。今、最適化に取り組んでる低いハンギングフルーツがある(
https://github.com/Mooncake-Labs/pg_mooncake/issues/82
)から、またトップ10に戻りたいな。

dcreater 2025-03-08T07:18:00

必要なのはPostgresだけだ:パート73

menaerus 2025-03-08T09:25:29

簡単にプラグインを書けるデータベースさえあれば、誰でも難しい部分をスキップできるよ。

antonmks 2025-03-08T06:39:22

確かにPostgresじゃないよね、クエリはDuckDBで実行されてるし。DuckDBは解析クエリにマジで速いんだよ。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。