web-dev-qa-db-ja.com

Postgres Hstore vs.Redis-パフォーマンス面で

I read about PostgresのHStoresは、Redisによっても提供されています。

私たちのアプリケーションはNodeJSで書かれています。 2つの質問:

  • パフォーマンスに関して、Postgres HStoreはRedisに匹敵しますか?

  • セッションストレージの場合、Redis、または他の種類のデータ型(HStore、あるいは通常のリレーショナルテーブルなど)を使用したPostgresのどちらをお勧めしますか?そして、一方のオプションがもう一方のオプションと比べてどれほど悪いのでしょうか。

もう1つの制約は、すでにPostgreSQLにあるデータを使用し、それをアクティブなセッションと組み合わせる必要があることです(RedisまたはPostgreSQLの場合、この時点でどこに保存するかはわかりません)。

私たちが読んだことから、Redisをセッションマネージャーとして使用することが指摘されていますが、PostgreSQLの制約のため、両方を組み合わせる方法と、発生する可能性のあるパフォーマンスの問題がわかりません。

ありがとう!

25
jribeiro

Pgはデータの信頼性を保証するため(トランザクションがコミットされると、ディスク上にあることが保証されます)、RedisはPostgresよりも高速になりますが、Redisには、ディスクに書き込むという概念があるため、そうすべきではありません。重要なデータに使用されます。

Redisは、セッションデータに適したオプションのようです。あるいは、Cookieやクライアント側のJavascriptに保存することもできます。ただし、リクエストごとにデータベースのデータが必要な場合は、Redisを使用する価値すらありません。それはあなたのアプリケーションに大きく依存します。

28
Matt Sergeant

通常、PostgreSQLをセッションマネージャーとして使用することはお勧めできません。

9.1より古い場合は、永続的なメディアパラメータに基づく1秒あたりのトランザクションの物理的な制限でした。セッション管理の場合、通常はMGAは必要ありません(衝突がないため)。つまり、MGAはオーバーヘッドであり、MGAとACIDのないデータベースは大幅に高速(10または100)である必要があります。

PostgreSQLがセッション管理に使用され、パフォーマンスが本当にひどく不安定だったユースケースを知っています。それは約10000のリビングセッションを持つeshopでした。セッション管理がmemcachedに移行すると、パフォーマンスと安定性が大幅に向上しました。 PostgreSQLはおそらく問題なく100回のリビングセッションに使用できます。数値が大きいほど、より優れたツールがあります。

4
Pavel Stehule