假设我有一个用户模式,它有大约30个字段,还有其他3个模式。
UserSchema.js
user_schema = new Schema({
user_id: { type: String},
.........//30 properties
});
ctrs_schema = new Schema({
.........10 properties
});
ids_schema = new Schema({
.........5 properties
});
comments_schema = new Schema({
.........10 properties
});现在,我正在编写一条将改变用户性别的路由,为了做到这一点,我可以使用UserSchema.js,但这将将所有模式加载到我的路由中,而如果我创建了一个只有一个带有两个字段的模式的新文件,那么所有模式都不会加载到该路由的内存中。
UserGenderSchema.js
gender_schema = new Schema({
user_id: { type: String},
gender: { type: String}
});我知道这两种方法各有优缺点。
Pros -
如果要对任何字段进行更改,我只能在单个文件中进行编辑。
Cons -
所有模式都在加载所有不必要的路由。记忆浪费。
线程上的这两种方式之间是否会有更少的内存使用呢?
谁能告诉我哪种架构会更好,或者你在你的项目中正在实现什么?为什么?
谢谢
发布于 2018-09-04 05:08:44
最好是将与用户相关的字段保留在一个模式中,因为mongo是因为它的非关系结构而存在的,并且它通过保持关系结构而获得了性能,所以如果您为每个字段创建一个模式,然后在每个字段中创建一个引用来指出与其相关的用户,您就会使用mongo来构建一个严重的关系结构,而mongo并不像在这种情况下那样好,因此,如果以后在应用程序中,您希望以某种方式显示用户的所有信息,或者尝试更新多个用户字段,或者尝试在某个路由或其他位置显示更多的用户信息,则最终会出现一些严重的性能问题。总之,加载所有模式以只触及一个字段的成本并不像分解数据结构的成本那样大。
https://stackoverflow.com/questions/52155447
复制相似问题