TIL 021 DB接続について...


個人的なプロジェクトを行う際、サーバとデータベースを接続する際に疑問が発生しました.
「DBへの接続はいつ終了しますか?:
connection = mysql.createConnection(dbInfo);
connection.connect()
// 쿼리 //
connection.end()
調べてみましたが、dbとの接続は自動的に管理されていますが、問題になる可能性があるので、意識的にオフにしたほうがいいです.
では、サーバは常に開いているはずですが、いつ閉じますか?
apiリクエストを受信するたびにdb接続を確立する必要がありますか?

複数の接続について...


まず、接続はネットワークやセキュリティに関連する高コストの作業です.接続オブジェクトを引き続き使用するのは正しいです.
ただし、マルチスレッドなどは複数の接続が必要になる場合があるため、poolを使用して一度に複数の接続を確立することができます.内部操作は、データベースにキューを作成するようです.(満タン時待機)
For efficiency, we're going to create a MySQL pool, which allows us to use multiple connections at once instead of having to manually open and close multiple connections.
モジュールにエクスポートし、他のルーティングJavaScriptファイルからインポートし、クエリーをここに送信します.
// DBconfig.js
const pool = mysql.createPool(config);
// Export the pool
module.exports = pool;
// ohterRoutes.js
const pool = require('../data/config');
https://code.tutsplus.com/tutorials/code-your-first-api-with-nodejs-and-express-connect-a-database--cms-31699

ORM, ODM


以前のプロジェクトを見てみると、サーバーが開いている間にDBとconnectを接続させたに違いない・・・単独で閉じていないし、apiルーティングも単独で接続されていない部分!
まさにイタチが自分で見てやったのだ.当時mongodyを使っていたときは、アーキテクチャコンポーネントの欠点を補うだけで、sql文の代わりに機能していました.
当時はMongodb、MongodbはMongoose、mysqlはSequelize、Prismaなどが使われていました.ORMとODMは、オブジェクトとデータベースデータとの間でマッピングすることができる.
ORMとODMのメリット
1.コードを使用しないでください.
2.直感的なコードを作成し、ビジネスロジックに集中することができます.
3.SQL文はほとんど使用できません.
4.dbエンジン抽象.
5.自動的に多くのことを完成する.(接続管理とかかな)
短所
1.複雑なクエリ文が遅くなる可能性があります.
2.付加的な学習曲線
3.柔軟性が悪く、長期的に不利になる可能性がある.
https://www.youtube.com/watch?v=qsDvJrGMSUY
https://okky.kr/article/460583?note=1420530https://okky.kr/article/460583?note=1420530
またsequelizeはnodeJSに特化した非同期処理の大きな利点を有する.試してみるべきだと思います.
でも、SQLの練習のために本も買いました...また、処理するデータは株であり、複雑なクエリーが必要になる可能性があるので、ormやodmがない場合に挑戦してみましょう.