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

回答編集履歴

2

文章を修正

2021/11/10 04:01

投稿

miyabi-sun
miyabi-sun

スコア21461

answer CHANGED
@@ -4,21 +4,26 @@
4
4
  大規模なRDBMSのMySQL本体そのものではなく
5
5
  「MySQL本体に向かって問い合わせを行う小さな[トランシーバー](https://www.jenix.co.jp/best15/)」みたいなものです。
6
6
 
7
- MySQLという大規模RDBMSはC++で書かれたものです。
7
+ MySQLという大規模RDBMSはC++で書かれたものです。
8
8
  MySQLは起動させるとプロセスに常駐し、
9
9
  パソコンの[TCP3306番ポート](https://style.potepan.com/articles/19452.html)で通信を待ち受けます。
10
10
 
11
- この3006番ポートに通信を行う手段(プロトコル)は仕様として公開されており、
11
+ この3306番ポートに通信を行う手段(プロトコル)は仕様として公開されており、
12
- その気になればMySQL純正クライアントでなくて構いません。
12
+ その通信手段を再現出来るのであればMySQL純正クライアントである必要はありません。
13
13
  参考記事: [MySQL道普請便り - 第78回 MySQLプロトコルのハンドシェイクパケットを眺めてみる](https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0078)
14
14
 
15
- だったら、通信部分は純正品使わなくても、Node.jsでエミュレートしてもいいよね?
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
- 基本的に全てのコードがmysqlのものがそのまま使えますし、
48
+ ほぼ全てのコードがmysqlそのまま使えますし、
44
- Promiseという新しいJavaScriptの記述方法にも対応しています。
49
+ Promiseという新しいJavaScriptの記述方法にも対応しています。
45
50
  なので今からmysqlを使う意味はNode.jsのv6系(サポート終了済で使っている人居ない)で動くくらいしかありません。
46
51
 
47
52
  変更点をその記事から挙げると、これだけです。

1

トランシーバーへのリンクを追加

2021/11/10 04:01

投稿

miyabi-sun
miyabi-sun

スコア21461

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は起動させるとプロセスに常駐し、