teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

軽く修正

2020/10/08 04:42

投稿

miyabi-sun
miyabi-sun

スコア21461

answer CHANGED
@@ -15,10 +15,12 @@
15
15
  解説しますと、Webサーバは同時に何百人というユーザがWebサービスを利用しようと訪れる可能性があります。
16
16
  その何百人が一斉に`router.get("/*", fn)`に押し寄せたとすると、
17
17
  MongooDBサーバにその何百人分のコネクションよこせが来るので最初の3人だけ受け付けて、残り数百人はエラーという結果になりかねません。
18
+ (MongoDBというアプリもそこまでヤワな作りでは無いでしょうし、実際にはそれなりに上手くやるでしょうけどね)
18
19
 
19
20
  その対策としてコネクションプールという機能が存在します。
20
21
  プールは学校とかにある水が張っていて泳げるプールを指します。
21
22
  水面にビート板のように接続状態のコネクションを投げ入れておき、利用者が取れるような仕組みになっています。
23
+ (MySQL等の他のデータベースにもある、わりとよくある作戦です)
22
24
 
23
25
  コネクションプールを使いNode.jsとMongoDBを接続させますと、
24
26
  予め3本の接続を予約しておいてすぐ使える状態にします。
@@ -31,7 +33,8 @@
31
33
  接続がコネクションプールに帰ってきたら4人目、5人目という風に
32
34
  順番待ちしている人たちに接続を使わせるという仕組みになります。
33
35
 
34
- コードに関してはドキュメントの下にありますが、軽くコメントで注釈入れます
36
+ コードに関してはドキュメントの下にあります
37
+ 軽くコメントで注釈入れつつ、一緒に見ていきましょう。
35
38
 
36
39
  ```js
37
40
  var express = require('express');
@@ -49,7 +52,7 @@
49
52
  // MongoDBとの接続が完了したらコネクションプール用の変数へ代入
50
53
  db = database;
51
54
 
52
- // MongoDBとの接続が完了してからExpressを立ち上げるのだ
55
+ // MongoDBとの接続が完了してからExpress.jsを立ち上げるのだ
53
56
  app.listen(3000);
54
57
  console.log("Listening on port 3000");
55
58
  });