Node Express APP 1到N(使用MongoDB)

我们正在用express和MongoDB开发一个大型的节点应用程序。 我们正试图获得最佳性能,因为我们将在同一台服务器上运行多个客户端(可能有100多个)。

我们在考虑一对一的APP,一个实例,一个数据库和多个客户端访问他们的域名。

我想知道这个场景(一个服务器,多个客户端)对于性能和开发的最佳设置是什么

  1. 一个实例,一个数据库(客户端数据将由条目上的company ObjectId识别,并且客户端将访问域或子路由)
  2. 一个实例,多个表(或数据库,什么是最好的?)
  3. 多个实例,多个表
  4. 任何其他的想法?

在第一个设置中,开发人员总是会担心当前的公司,这可能会给应用带来局限性

在第二种设置中,关注点将继续,但公司不会干涉数据库条目(更干净的模型)

在第三种情况下(可能是最好的开发方式),只有一家公司会受到对待,并带来很多可能性,但可能会带来性能问题(所有实例都将在一台服务器上运行)

其他设置我没有想到可以更好。

笔记:

我们正在使用mongoose库

我有一些WordPress的经验,我喜欢为它创build主题和插件的方式。 我们正试图达到类似于Wordpress与PHP的性能水平(有效地运行在服务器上的几个Wordpress)

抱歉,坏的英语

您不需要pipe理多个实例,因为您可以创build公司集合,并且可以在该集合中存储每个公司,然后您只需在用户中创build所有这些值的引用。请确保您已经创build了独特的索引公司集合。在RDBMS(mysql)中处理这样的场景确实很容易。

还有一件事,你也可以在同一个实例上运行多个mongod客户端,只需要更改端口,如果你正在寻找这样的解决scheme,那么你也可以做到这一点。

使用mongo之前请注意以下事项: –

只有当你有超过TB的数据时才使用mongo,因为使用mongodb来处理某些MB或GB的数据没有任何意义。

如果你想要最大的性能,使用索引是必须的。

Mongo将所有索引存储在主内存中,如果索引大小超过内存大小,则开始交换索引,这实际上代价很高,因此请确保您的应用程序和数据库具有不同的服务器。

我仍然说,如果你没有TB的数据来处理,最好使用RDBMS。 为什么这样做: –

让我给你一个场景。 您有100家公司,在100家公司中,每家公司有1000名用户。 即你有1Llogging在你的用户collection.Now我想要删除一个用户,或者我想更新一个用户,或者我想从一家公司获取用户,那么我不需要遍历我的完整数据库,因为我可以使用用户ID和公司ID(复合索引)我的用户集合索引,甚至我可以做一个简单的公司IDfilter查询。

索引请阅读https://docs.mongodb.com/manual/core/index-compound/

顺便说一句,我们不是保存公司ID作为一个对象,而是我只保存公司收集_id的价值。