我正在使用带有mySQL的AngularJS SPApplication制作NodeJS用于后端。事情是我对后端部分不太好,我想知道一件事。是否更好地与数据库建立一个大连接并使用它的所有信息或将连接分成更小的一次并在不同的视图上使用它们。这个例子是这样的。我已经为超级英雄数据库SPAplication说了多个视图。呈现单个超级英雄的视图由4个标签组成 - 传记,历史,权力,敌人。哪个更好:为单个超级英雄视图执行此操作(仅作为示例):
var query = '';
query += 'SELECT s.id, s.nick_name, s.real_name, s.clean_name, s.alignment, s.gender, s.race, s.history, ';
query += 'p.id AS power_id, p.name AS power_name, p.description AS power_description, ';
query += 'b.address, zc.city, zc.state ';
query += 'FROM superhero s ';
query += 'INNER JOIN superhero_powers sp ON s.id=sp.superhero_id ';
query += 'INNER JOIN powers p ON p.id=sp.power_id ';
query += 'INNER JOIN bases b ON s.base_id=b.id ';
query += 'INNER JOIN zip_codes zc ON b.zip_id=zc.id ';
query += 'INNER JOIN superhero_enemies se ON s.id=se.good_sh_id ';
query += 'INNER JOIN superhero sh_enemy ON sh_enemy.id=se.bad_sh_id ';
query += 'WHERE s.clean_name="'+req.params.sh_clean_name+'"';
并获取每个标签的信息或将其划分为多个与数据库和每个标签的连接,当它被点击呼叫连接以获取信息时,让我们说出权力
答案 0 :(得分:0)
数据库连接是一种有限的资源,通常开发人员只会尽可能地打开最少数量的连接。
传统上,应用程序定义一些初始预定义大小的连接池。并且每个请求都将从此池中获得连接。当请求通过连接完成时,它将关闭它,实际上将它返回到池中并使其可供其他人使用它。
在单个请求中,您需要多个连接到同一个数据库。
应用程序视图的外观并不重要,因为在这种情况下,它可能有多个选项卡(如您所说),但最终您必须通过http服务器与数据库服务器进行通信。因此,此请求将被授予池中的连接,并将使用它来访问数据库并最终为您提供一些结果。与此同时,您的Web应用程序可能已经发出了另一个异步请求,它将以相同的方式处理,来自池的另一个连接以及所有相同的故事。