我正在使用" express-session"使用来自" connect-mongo"的MongoStore。根据我的理解,会话以某种方式存储在mongodb中。假设我已将用户名存储在会话中。
现在,让我说我经常需要用户喜欢的颜色。我有两种方法可以做到这一点。在会话中存储喜欢的颜色,或使用会话中的用户名来查询数据库。
现在我的问题是,由于会话存储在db中,因此从会话查询最终会查询db。那么,这两种方法之间的区别是什么。如果它们不同,哪一个更好?
答案 0 :(得分:3)
检索会话数据需要数据库查询。如果您要在会话中存储喜欢的颜色,那么获取该首选项将需要一个查询。
如果您不在会话中存储颜色,则需要两个数据库查询:一个用于会话,一个用于保存颜色首选项的用户数据。
因此,如果您知道在会话期间您将需要大量的颜色信息,那么将该信息复制到会话中会更好(尽管不要期望大幅提升性能,MongoDB和您的操作系统会尝试并保持经常使用的数据库记录尽可能在内存中。)
可能的缺点是,如果更改首选项,则需要更新多个文档(如果用户更改自己喜欢的颜色,则需要更新会话文档和数据库中的用户文档。)