[nodejs] 비동기 처리와 데이터베이스 연동

Node.js는 비동기 이벤트 기반 아키텍처를 기반으로 하며, 데이터베이스와의 연동은 중요한 측면입니다. 이 블로그 글에서는 Node.js에서의 비동기 처리와 데이터베이스 연동에 대해 다룰 것입니다.

비동기 처리란?

비동기 처리(asynchronous processing)란 작업을 동시에 처리하여 시간을 절약하는 방식입니다. Node.js는 비동기 이벤트 기반 아키텍처를 기반으로 하며, 이는 작업을 순차적으로 처리하는 대신 작업을 요청하고 결과를 기다리지 않고 다른 작업을 처리하는 방식을 의미합니다.

콜백(callback) 함수

Node.js에서는 콜백 함수(callback function)를 이용하여 비동기 처리를 합니다. 이는 작업이 완료되면 해당 작업을 처리하기 위해 정의된 함수를 호출하는 방식입니다. 콜백 함수는 비동기 처리 로직에서 매우 중요한 부분이며, 잘못 사용할 경우 콜백 지옥(callback hell)이라 불리는 어려움을 겪을 수 있습니다.

fs.readFile('/파일경로', function(err, data) {
  if (err) throw err;
  console.log(data);
});

위의 예시는 Node.js에서 파일을 읽는 동작을 보여줍니다. 파일을 읽고 나서 작업이 완료되면 콜백 함수가 호출되어 데이터를 다루거나 에러를 처리합니다.

데이터베이스 연동

Node.js에서 가장 많이 사용되는 데이터베이스 모듈은 MongoDBMySQL입니다. 이들과의 연동은 비동기 방식으로 처리됩니다.

MongoDB 연동

MongoDB와의 연동을 위해서는 npm을 이용하여 mongodb 모듈을 설치한 후, 아래와 같이 코드를 작성할 수 있습니다.

const { MongoClient } = require('mongodb');

const uri = 'mongodb://localhost:27017';
const client = new MongoClient(uri, { useNewUrlParser: true });

client.connect(err => {
  const collection = client.db('test').collection('devices');
  // 작업 수행
  client.close();
});

MySQL 연동

MySQL과의 연동을 위해서는 npm을 이용하여 mysql 모듈을 설치한 후, 아래와 같이 코드를 작성할 수 있습니다.

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'test'
});

connection.connect();

connection.query('SELECT * FROM users', (error, results, fields) => {
  if (error) throw error;
  console.log(results);
});

connection.end();

마치며

Node.js에서의 비동기 처리와 데이터베이스 연동은 중요한 주제이며, 적절한 활용을 위해서는 비동기 처리에 대한 이해와 데이터베이스 모듈에 대한 숙지가 필요합니다. 비동기 처리와 데이터베이스 연동은 Node.js 어플리케이션의 성능과 안정성을 결정짓는 중요한 부분이기 때문에, 신중한 고려가 필요합니다.

참고 자료: