1

私は非常に大きなカウンターシステムを構築しています。明確にするために、システムはデータ ストリーム内でドメインが発生する回数をカウントしています (約 5,000 万から 1 億の要素のサイズです)。

システムは各要素を個別に処理し、そのドメインのカウンターとそれが処理された日付をインクリメントするデータベース要求を行います。構造は次のとおりです。

stats_table (or collection)
-----------
id
domain (string)
date   (date, YYYY-MM-DD)
count  (integer)

私が最初に思いついたのは、MongoDB のアトミック カウンター機能があるため、MongoDB を使用することでした。しかし、よく考えてみると、Postgres の更新はすでにアトミックに行われていることがわかりました (少なくとも、この質問でそう確信しました)。

私の質問は次のとおりです。ここで、あるデータベースを他のデータベースよりも使用する利点はありますか? 1 日に約 500 万のドメインを処理すると仮定すると、ここで考慮する必要がある重要な点は何ですか?

4

1 に答える 1

4

Postgres のすべての単一操作は自動的にトランザクションにラップされ、MongoDB の単一ドキュメントに対するすべての操作はアトミックです。この場合、原子性は実際には、あるデータベースを他のデータベースよりも優先する理由にはなりません。

個々のカウントは非常に高くなる可能性がありますが、カウントの各インスタンスではなく、集計カウントのみを保存する場合、レコードの合計数はそれほど重要ではありません。何百万ものドメインを追跡している場合でも、Mongo と Postgres のどちらでも同じように機能します。

MongoDB はイベントのログを記録するための優れたソリューションですが、収集している分析データに対して多くの興味深いリレーショナル分析を行いたい場合は、Postgres が望ましいと思います。Mongo でこれを効率的に行うには、多くの場合、高度な非正規化が必要になるため、将来的にデータをどのように使用する予定かについてもっと考えたいと思います。

于 2012-12-04T19:25:57.130 に答える