回答編集履歴
1
軽く修正
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
|
});
|