Node.js 를 배워보자/5. 데이터베이스 연동

데이터베이스 모델링 및 CRUD 작업

_Blue_Sky_ 2024. 10. 1. 08:01
728x90
728x90

 

Node.js 데이터베이스 모델링 및 CRUD 작업: 상세 가이드

서론

Node.js는 비동기 I/O 모델을 기반으로 하여 실시간 웹 애플리케이션 개발에 강점을 보이는 런타임 환경입니다. 이러한 Node.js를 활용하여 데이터베이스와 상호작용하고, 효율적인 데이터 관리를 위해서는 데이터베이스 모델링과 CRUD(Create, Read, Update, Delete) 작업에 대한 이해가 필수적입니다. 본 글에서는 Node.js에서 데이터베이스 모델링과 CRUD 작업을 수행하는 방법에 대해 자세히 알아보고, 실제 예시를 통해 학습 효과를 높이고자 합니다.

1. 데이터베이스 모델링

데이터베이스 모델링은 현실 세계의 데이터를 추상화하여 논리적인 구조로 표현하는 과정입니다. Node.js에서 주로 사용되는 데이터베이스 종류에 따라 모델링 방식이 달라질 수 있습니다.

  • 관계형 데이터베이스 (RDBMS): MySQL, PostgreSQL 등
    • 테이블, 컬럼, 관계를 정의하여 데이터를 저장
    • Entity-Relationship(ER) 다이어그램을 통해 모델링
    • Node.js에서는 Sequelize, TypeORM 등의 ORM(Object-Relational Mapper) 라이브러리를 사용하여 객체 지향적인 방식으로 데이터베이스를 관리
  • NoSQL 데이터베이스: MongoDB, CouchDB 등
    • JSON 형식의 문서를 저장
    • 스키마가 유연하여 다양한 형태의 데이터를 저장 가능
    • Node.js에서는 Mongoose 등의 ODM(Object Document Mapper) 라이브러리를 사용하여 문서를 모델링

모델링 시 고려해야 할 사항:

  • 데이터의 특성: 저장할 데이터의 종류, 양, 관계 등을 분석
  • 데이터베이스 종류: RDBMS, NoSQL 중 적합한 종류 선택
  • 성능: 데이터 조회, 수정, 삭제 등의 성능 고려
  • 확장성: 데이터 증가에 따른 시스템 확장 가능성 고려

2. CRUD 작업

CRUD 작업은 데이터베이스에서 가장 기본적인 작업으로, 데이터를 생성(Create), 읽기(Read), 수정(Update), 삭제(Delete)하는 것을 의미합니다. Node.js에서 CRUD 작업을 수행하기 위해서는 데이터베이스에 연결하고, SQL 쿼리 또는 ODM/ORM을 활용하여 데이터를 조작해야 합니다.

728x90

CRUD 작업 예시 (Sequelize 사용):

const Sequelize = require('sequelize');
const sequelize = new Sequelize('mydatabase', 'user', 'password', {
  dialect: 'mysql'
});

// User 모델 정의
const User = sequelize.define('user', {
  username: {
    type: Sequelize.STRING
  },
  email: {
    type: Sequelize.STRING
  }
});

// 사용자 생성
User.create({
  username: 'johnDoe',
  email: 'johndoe@example.com'
})
.then(user => {
  console.log('User created:', user.get({ plain: true }));
})
.catch(err => {
  console.error('Error creating user:', err);
});

// 모든 사용자 조회
User.findAll()
.then(users => {
  console.log('All users:', JSON.stringify(users, null, 2));
})
.catch(err => {
  console.error('Error fetching users:', err);
});
 

3. 실제 예시: Node.js + Express + MongoDB를 이용한 간단한 블로그 만들기

  • 준비: Node.js, Express, MongoDB 설치
  • 모델 정의: Mongoose를 사용하여 Post 모델 정의 (title, content, createdAt 필드)
  • CRUD 라우터 작성: Express 라우터를 이용하여 게시글 생성, 조회, 수정, 삭제 기능 구현
  • 템플릿 엔진: EJS, Pug 등을 사용하여 동적인 웹 페이지 생성

4. 추가적인 고려 사항

  • 데이터베이스 성능 최적화: 인덱싱, 쿼리 최적화, 캐싱 등을 통해 성능 향상
  • 데이터 유효성 검증: 입력 데이터 검증을 통해 데이터 무결성 확보
  • 트랜잭션: 여러 개의 작업을 하나의 논리적인 단위로 처리하여 데이터 일관성 유지
  • 보안: SQL 인젝션, XSS 등의 보안 취약점 방지

결론

Node.js를 이용한 데이터베이스 모델링 및 CRUD 작업은 웹 애플리케이션 개발에 필수적인 부분입니다. 본 글에서는 데이터베이스 모델링 개념, CRUD 작업 방법, 실제 예시 등을 통해 Node.js를 활용한 데이터베이스 활용 방법에 대해 상세하게 설명했습니다. 이를 바탕으로 더욱 효율적이고 안정적인 Node.js 애플리케이션을 개발할 수 있을 것입니다.
 

728x90
728x90