728x90
728x90
mysql, mysql2, mysql2/promise는 모두 Node.js에서 MySQL 및 MariaDB와 통신하기 위해 사용되는 라이브러리입니다. 각 패키지와 모듈의 차이점을 정리하겠습니다.
1. mysql 패키지
- 설명: MySQL 데이터베이스에 연결하기 위한 초기 라이브러리입니다.
- 특징:
- 비동기 방식이지만 콜백(callback) 기반으로 동작합니다.
- 오래된 라이브러리로 현재는 더 이상 유지보수가 이루어지지 않습니다.
- 장점:
- 간단하고 가벼운 패키지.
- 단점:
- 프로미스(Promise)나 async/await을 지원하지 않아 현대적인 비동기 패턴과 호환성이 낮음.
- 일부 최신 기능 부족.
예제 코드:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});
connection.query('SELECT * FROM users', (error, results) => {
if (error) throw error;
console.log(results);
});
connection.end();
728x90
2. mysql2 패키지
- 설명: mysql 패키지의 향상된 버전으로, 더 빠르고 기능이 풍부합니다.
- 특징:
- 기존 mysql과 호환성을 유지하면서 성능이 더 개선됨.
- Prepared Statements(프리페어드 스테이트먼트)를 기본적으로 지원.
- 콜백 기반 API와 함께 Promise 기반 API도 지원.
- 장점:
- 더 나은 성능.
- 현대적인 JavaScript 패턴과 호환 가능 (Promise 지원).
- 더 많은 MySQL 최신 기능 지원.
- 단점:
- 약간 더 복잡한 설정.
예제 코드:
const mysql = require('mysql2');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});
connection.query('SELECT * FROM users', (error, results) => {
if (error) throw error;
console.log(results);
});
connection.end();
728x90
3. mysql2/promise
- 설명: mysql2 패키지에서 Promise 기반 API만을 사용하기 위한 모듈입니다.
- 특징:
- async/await 패턴을 완벽히 지원.
- 콜백 기반 API가 아니라 Promise 객체를 반환.
- 현대적인 비동기 프로그래밍 방식에 적합.
- 장점:
- 비동기 코드를 깔끔하게 작성 가능.
- 콜백 대신 try...catch로 에러 처리.
- 단점:
- 오래된 Node.js 버전에서는 사용 불가(Node.js 10 이상 권장).
예제 코드:
const mysql = require('mysql2/promise');
async function main() {
const connection = await mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});
try {
const [rows] = await connection.execute('SELECT * FROM users');
console.log(rows);
} catch (error) {
console.error('Query Error:', error);
} finally {
await connection.end();
}
}
main();
주요 차이점 비교
특징 | mysql | mysql2 | mysql2/promise |
콜백 지원 | O | O | X |
Promise 지원 | X | O | O |
async/await 지원 | X | O | O |
성능 | 보통 | 빠름 | 빠름 |
Prepared Statements | 제한적 지원 | O | O |
유지보수 상태 | 비활성화 | 활성화 | 활성화 |
추천
- 새로운 프로젝트: mysql2/promise 사용을 권장합니다. async/await을 활용하면 코드가 더 깔끔하고 유지보수가 쉬워집니다.
- 기존 프로젝트: mysql에서 mysql2로 업그레이드하거나, 가능하면 mysql2/promise로 마이그레이션하세요.
728x90
728x90
'Node.js 를 배워보자' 카테고리의 다른 글
Node.js 개발의 필수 도구: Nodemon을 활용한 효율적인 개발 환경 구축 (0) | 2025.01.24 |
---|---|
Node.js Express 환경에서 Swagger와 Redoc을 활용한 API 문서화 (0) | 2025.01.22 |
JavaScript의 핵심 비동기 처리: async/await, Promise 심층 분석 (0) | 2024.12.14 |
Node.js와 Puppeteer를 활용한 웹 크롤링: 자세한 가이드 (0) | 2024.12.13 |
npm 사용을 위한 방화벽 해제: Node.js 개발 환경 구축 가이드 (0) | 2024.12.07 |