gpt4 book ai didi

node.js - Node Express APP 1 到 N(带 MongoDB)

转载 作者:可可西里 更新时间:2023-11-01 09:13:59 24 4
gpt4 key购买 nike

我们正在使用 express 和 MongoDB 开发一个大 Node 应用程序。我们正在努力获得最佳性能,因为我们将在同一台服务器上运行多个客户端(可能超过 100 个)。

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

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

  1. 一个实例,一个数据库(客户端数据将由条目上的 company ObjectId 标识,客户端将访问域或子路径)
  2. 一个实例,多个表(或者数据库,哪个最好?)
  3. 多个实例,多个表
  4. 还有其他想法吗?

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

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

第三种设置(可能最适合开发)只处理一家公司,带来很多可能性,但可能会带来性能问题(所有实例都将在一台服务器上运行)

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

注意事项:

我们正在使用 Mongoose 库

我有一些使用 WordPress 的经验,我喜欢为它创建主题和插件的方式。我们正在尝试使用 PHP 实现类似于 Wordpress 的性能水平(几个 Wordpress 在服务器上高效运行)

抱歉英语不好

最佳答案

您不需要管理多个实例,因为您可以创建一个公司集合,在该集合中您可以存储每个公司,然后您只需要在用户中创建所有这些值的引用。请确保您在公司集合上做了唯一索引。在RDBMS(mysql)中处理这种情况真的很容易。

还有一件事,您还可以通过更改端口在同一个实例上运行多个 mongod 客户端,如果您正在寻找那种解决方案,那么您也可以这样做。

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

请仅在您拥有超过 TB 的数据时才使用 mongo,因为将 mongodb 用于某些 mb 或 gb 的数据没有任何意义。

如果您想获得最佳性能,则必须在 mongo 中使用索引。

Mongo 将所有索引存储在主内存中,如果索引大小大于内存,它会开始交换索引,这非常昂贵,因此请确保您的应用程序和数据库有不同的服务器。

我仍然说,如果您没有 TB 的数据要处理,那么使用 RDBMS 会更好。为什么采用这种方法:-

让我给你一个场景。您有 100 家公司,在 100 家公司中,每家公司有 1000 个用户。即你的用户集合中有 1L 记录。现在我想删除一个用户或者我想更新一个用户或者我想从一家公司获取一个用户然后我不需要遍历我的完整数据库使用用户 ID 和公司 ID(复合索引)在我的用户集合上建立索引,甚至我可以对公司 ID 进行简单的过滤查询。

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

顺便说一句,我们没有将公司 ID 保存为对象,而是我仅从公司集合中保存 _id 的值。

关于node.js - Node Express APP 1 到 N(带 MongoDB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44905788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com