回答編集履歴
2
文章を修正
answer
CHANGED
@@ -4,21 +4,26 @@
|
|
4
4
|
大規模なRDBMSのMySQL本体そのものではなく
|
5
5
|
「MySQL本体に向かって問い合わせを行う小さな[トランシーバー](https://www.jenix.co.jp/best15/)」みたいなものです。
|
6
6
|
|
7
|
-
MySQLという
|
7
|
+
MySQLという大規模RDBMSはC++で書かれたものです。
|
8
8
|
MySQLは起動させるとプロセスに常駐し、
|
9
9
|
パソコンの[TCP3306番ポート](https://style.potepan.com/articles/19452.html)で通信を待ち受けます。
|
10
10
|
|
11
|
-
この
|
11
|
+
この3306番ポートに通信を行う手段(プロトコル)は仕様として公開されており、
|
12
|
-
その
|
12
|
+
その通信手段を再現出来るのであればMySQL純正クライアントである必要はありません。
|
13
13
|
参考記事: [MySQL道普請便り - 第78回 MySQLプロトコルのハンドシェイクパケットを眺めてみる](https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0078)
|
14
14
|
|
15
|
-
だったら、
|
15
|
+
だったら、Node.jsで通信手段をエミュレートしてもいいよね?
|
16
|
+
そしたら得られた文字列を必死に解析せずに、ダイレクトに配列で扱えるし!
|
16
17
|
こういう思想で作られた、MySQLと対話するモジュールがnpmのmysqlです。
|
17
18
|
|
19
|
+
この考え方はNode.jsに限りません。
|
20
|
+
PHPやRuby、Python、Java……という感じで多くの流行っている言語がこの手法を採用しています。
|
21
|
+
これらの言語のMySQLモジュールもトランシーバーですので、結局の所、本体が別途必要です。
|
22
|
+
|
18
23
|
---
|
19
24
|
|
20
25
|
なのでNode.js用の小さな通信モジュールはnpmからインストール出来ますが
|
21
|
-
別途正規のMySQLをインストールしなければなりません。
|
26
|
+
別途正規のMySQL本体をインストールしなければなりません。
|
22
27
|
|
23
28
|
手段は2通りです。
|
24
29
|
|
@@ -40,8 +45,8 @@
|
|
40
45
|
当時乱立していたMySQLクライアントをNode.jsで実現しているチーム同士が手を取り合って、
|
41
46
|
内部ロジックを共通したものに書き換えつつmysql2として再出発したという感じです。
|
42
47
|
|
43
|
-
|
48
|
+
ほぼ全てのコードがmysqlそのまま使えますし、
|
44
|
-
Promiseという新しいJavaScriptの記述方法にも対応しています。
|
49
|
+
Promise版という新しいJavaScriptの記述方法にも対応しています。
|
45
50
|
なので今からmysqlを使う意味はNode.jsのv6系(サポート終了済で使っている人居ない)で動くくらいしかありません。
|
46
51
|
|
47
52
|
変更点をその記事から挙げると、これだけです。
|
1
トランシーバーへのリンクを追加
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
npmで提供されるmysqlというのは
|
4
4
|
大規模なRDBMSのMySQL本体そのものではなく
|
5
|
-
「MySQL本体に向かって問い合わせを行う小さなトランシーバー」みたいなものです。
|
5
|
+
「MySQL本体に向かって問い合わせを行う小さな[トランシーバー](https://www.jenix.co.jp/best15/)」みたいなものです。
|
6
6
|
|
7
7
|
MySQLという超大規模なRDBMSはC++で書かれたものです。
|
8
8
|
MySQLは起動させるとプロセスに常駐し、
|