Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Node Express应用程序1至N(带MongoDB)_Node.js_Mongodb_Express_Mongoose_Database - Fatal编程技术网

Node.js Node Express应用程序1至N(带MongoDB)

Node.js Node Express应用程序1至N(带MongoDB),node.js,mongodb,express,mongoose,database,Node.js,Mongodb,Express,Mongoose,Database,我们正在用express和MongoDB开发一个大节点应用程序。我们正在努力获得最佳性能,因为我们将在同一台服务器上运行多个客户端(可能是100多个) 我们考虑的是一对n应用程序、一个实例、一个数据库和多个访问其域的客户端 我想知道这个场景(一台服务器,多个客户端)的最佳性能和开发设置是什么 一个实例,一个数据库(客户端数据将由条目上的公司ObjectId标识,客户端将访问域或子例程) 一个实例,多个表(或数据库,最好是什么?) 多个实例、多个表 还有其他想法吗 在第一种情况下,开发者总是担心当

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

我们考虑的是一对n应用程序、一个实例、一个数据库和多个访问其域的客户端

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

  • 一个实例,一个数据库(客户端数据将由条目上的
    公司
    ObjectId标识,客户端将访问域或子例程)
  • 一个实例,多个表(或数据库,最好是什么?)
  • 多个实例、多个表
  • 还有其他想法吗
  • 在第一种情况下,开发者总是担心当前的公司,这会给应用程序带来限制

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

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

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

    注:

    我们正在使用猫鼬图书馆

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


    抱歉,英语不好

    您不需要管理多个实例,因为您可以创建一个公司集合,在该集合中,您可以存储每个公司,然后您只需要在用户中创建所有这些值的引用。请确保您对公司集合创建了唯一索引。处理此类索引非常简单RDBMS(mysql)中的场景

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

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

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

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

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

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

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

    有关索引,请阅读此


    顺便说一句,我们不是将公司id保存为对象,而是仅保存公司集合中的\u id的值。

    我们在这里处理大约多少客户?你试过负载平衡吗?我用客户号更新了问题。不,我怎么做?这完全取决于你如何设计应用程序。您可以将应用程序设计为最小化对服务器的请求,并在客户端执行可能的逻辑。对负载平衡进行研究。我个人建议您使用多个数据库运行多个应用程序实例以实现故障保护应用程序,您可以使用负载平衡器将请求重定向到不同的服务器。但是多个节点实例可能会导致性能损失?有没有其他公司如何做的基准测试或示例?我不是说在一台服务器上运行多个节点实例。在不同的服务器中运行多个节点实例。然后,如果一台服务器出现故障,其他服务器可以承担负载并继续为客户端提供服务。同时,这将提高性能。您要说的是正确使用第一个设置?一个数据库,数据由公司ID标识。但是这样,我总是需要在每次查询中担心公司ID,我如何解决这个问题?我们已经用这种方法开发了一年,有时会带来一些限制。这只是一个字符串,它可以是最大到最大1000、10000或100000。但是对于如此小的数据使用NoSQL db是没有意义的。现在我们将继续使用MongoDB(现在不可能更改),但我们将考虑更改为SQL db。关于公司标识符,它是一个字符串,但仍然是要传递给查询并进行测试的字段。但我仍然不知道为什么这是我提到的三种方法中最好的一种。我不知道如何以这种方式使用它而不影响application@Maxwells.c答案被修改了为什么这是最好的方法如果你还有任何疑问,那就让我们来聊聊吧