2016-05-08 10 views
3

"connect-mongo"のMongoStoreで "express-session"を使用しています。今私の理解から、セッションは何とかmongodbに保存されています。私はセッションでユーザ名を保存したと言います。node.jsセッションからの情報の取得とデータベースからの取得の比較

今、私は頻繁にユーザーの好みの色が必要と言うことができます。私はそれを行う2つの方法があります。セッションにお気に入りの色を保存するか、またはセッションのユーザー名を使用してDBに問い合わせます。

私の質問は、セッションがdbに格納されているので、セッションからのクエリは最終的にdbをクエリすることです。では、2つの方法の違いは何ですか?彼らが違うなら、どちらが良いですか?

答えて

3

セッションデータを取得するにはデータベースクエリが必要です。セッションでお気に入りの色を保存する場合は、その設定を取得するには1つのクエリが必要です。

セッションに色を保存しない場合は、セッション用と色設定を保持するユーザーデータの2つのデータベースクエリが必要です。

セッション中に色情報がたくさん必要になることが分かっている場合は、その情報をセッションにコピーすることをお勧めします(ただし、大量のパフォーマンスの向上は期待しませんが、MongoDBとOSは可能な限り頻繁に使用されるデータベースレコードをメモリに保持する)。

環境設定が変更された場合は、複数のドキュメントを更新する必要があります(ユーザーが好きな色を変更した場合は、データベース内のセッションドキュメントとユーザードキュメントの両方を更新する必要があります)。

+0

私は、セッションがdbクエリより速いいくつかの魔法かどうか疑問に思っていましたが、そうは思いません。つまり、バックグラウンドに関する別のdbクエリです。それをクリアしていただきありがとうございます。 – forthright48

+0

セッションデータは他のMongoDBドキュメントと同様に格納されます:-) – robertklep

関連する問題