데이터베이스 연결 (MySQL, PostgreSQL)
게시글, 회원정보, 상품목록 등 영구적으로 보존해야 할 데이터는 메모리가 아니라 데이터베이스(DB)라는 거대한 엑셀 창고에 안전하게 보관해야 합니다. Node.js는 비동기로 DB와 소통하는 데 특화되어 있어 엄청난 성능을 자랑합니다.
🗄️ 연결 풀(Connection Pool)의 마법
DB 연결은 매우 느린 작업입니다. 미리 10개의 연결(웨이터)을 만들어두고 요청이 올 때마다 즉시 할당하는 풀(Pool) 방식은 서버 성능을 수십 배 이상 올려줍니다!
🤵🤵🤵...상시대기...🗄️
const mysql = require("mysql2/promise");
// DB 연결풀(Pool) 생성 (접속자 폭주 대비)
const pool = mysql.createPool({
host: "localhost",
user: "root",
password: "password123",
database: "my_shop_db",
waitForConnections: true,
connectionLimit: 10 // 웨이터(연결) 10명 상시대기
});
app.get("/products", async (req, res) => {
try {
// 비동기로 DB에 쿼리 날리기!
const [rows] = await pool.query("SELECT * FROM products WHERE price > ?", [50000]);
res.json(rows);
} catch (err) {
res.status(500).send("DB 에러");
}
});