SQLite는 경량화된 데이터베이스 관리 시스템(DBMS)으로, 로컬 환경에서 간단히 사용할 수 있는 강력한 도구입니다.
Node.js와 SQLite를 통합하면 서버나 클라우드 기반 데이터베이스 없이 로컬에서 데이터를 저장하고 관리할 수 있습니다.
1. SQLite
- SQLite는 파일 기반의 경량화된 관계형 데이터베이스 관리 시스템
- 간단한 프로젝트나 로컬 데이터 관리에 적합
[주요 특징]
- 경량성: 설치가 간단하며 별도의 서버 없이 작동 가능
- 독립성: 데이터베이스가 하나의 파일로 관리
- 빠른 처리 속도: 소규모 애플리케이션이나 로컬 데이터 저장에 최적화
- SQL 지원: 대부분의 표준 SQL 구문 지원
- 로컬 개발에 적합: 테스트 환경이나 간단한 애플리케이션 개발에 적합
2. Node.js와 SQLite의 통합
1) Node.js 프로젝트 초기화
mkdir sqlite-node-project
cd sqlite-node-project
npm init -y
2) SQLite3 패키지 설치
npm install sqlite3
3) 프로젝트 디렉토리 구조
sqlite-node-project/
├── database.js # SQLite 데이터베이스 설정 파일
├── app.js # 애플리케이션 메인 파일
├── package.json # Node.js 설정 파일
3. SQLite 데이터베이스 생성 및 초기화
데이터베이스 생성
SQLite는 데이터베이스 파일이 자동으로 생성되므로 별도의 초기화 과정이 필요 없음.
const sqlite3 = require('sqlite3').verbose();
// 데이터베이스 연결
const db = new sqlite3.Database('./mydatabase.db', (err) => {
if (err) {
console.error('데이터베이스 연결 오류:', err.message);
} else {
console.log('SQLite 데이터베이스 연결 성공');
}
});
// 테이블 생성
db.serialize(() => {
db.run(`
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
age INTEGER
)
`, (err) => {
if (err) {
console.error('테이블 생성 오류:', err.message);
} else {
console.log('테이블 생성 성공');
}
});
});
// 데이터베이스 연결 닫기
db.close((err) => {
if (err) {
console.error('데이터베이스 연결 닫기 오류:', err.message);
} else {
console.log('SQLite 데이터베이스 연결 닫기 성공');
}
});
module.exports = db;
4. Node.js에서 데이터 삽입 및 조회
1) 데이터 삽입
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('./mydatabase.db');
const insertUser = (name, email, age) => {
const query = `INSERT INTO users (name, email, age) VALUES (?, ?, ?)`;
db.run(query, [name, email, age], function (err) {
if (err) {
console.error('데이터 삽입 오류:', err.message);
} else {
console.log(`데이터 삽입 성공: ${this.lastID}`);
}
});
};
insertUser('John Doe', 'john@example.com', 30);
insertUser('Jane Doe', 'jane@example.com', 25);
db.close();
2) 데이터 조회
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('./mydatabase.db');
db.all(`SELECT * FROM users`, [], (err, rows) => {
if (err) {
console.error('데이터 조회 오류:', err.message);
} else {
console.log('사용자 목록:');
rows.forEach((row) => {
console.log(row);
});
}
});
db.close();
5. Node.js와 SQLite 실행 및 테스트
1) 데이터베이스 초기화
먼저 database.js 파일을 실행하여 데이터베이스를 생성하고 users 테이블을 준비
node database.js
결과 확인: mydatabase.db라는 파일이 프로젝트 디렉토리에 생성
SQLite 데이터베이스 연결 성공
테이블 생성 성공
SQLite 데이터베이스 연결 닫기 성공
2) 데이터 삽입
app.js 파일을 실행하면 사용자 데이터를 데이터베이스에 삽입
node app.js
결과 확인: 삽입된 데이터의 ID가 출력
데이터 삽입 성공: 1
데이터 삽입 성공: 2
3) 데이터 조회
같은 app.js 파일에 데이터 조회 코드도 추가되어 있으므로, 실행 후 삽입된 데이터 확인 가능
node app.js
결과 확인: 터미널에 저장된 사용자 목록이 출력됩니다.
사용자 목록:
{ id: 1, name: 'John Doe', email: 'john@example.com', age: 30 }
{ id: 2, name: 'Jane Doe', email: 'jane@example.com', age: 25 }
6. SQLite 사용 시 주의사항 및 팁
주의사항
- 동시성 문제: SQLite는 단일 쓰레드 환경에 적합하므로 대규모 동시 요청이 많은 애플리케이션에서는 부적합
- 데이터 크기 제한: SQLite는 소규모 데이터베이스에 적합하며, 테라바이트 단위의 데이터를 처리할 경우 다른 DBMS(MySQL, PostgreSQL 등)를 사용하는 것을 추천.
팁
- SQL 인젝션 방지: 사용자 입력값은 반드시 바인딩(?)을 사용하여 안전하게 처리 가능
- 트랜잭션 활용: 여러 쿼리를 실행할 때 트랜잭션을 사용하여 데이터의 무결성 유지 가능
SQLite는 경량화된 로컬 데이터베이스로, 간단한 Node.js 애플리케이션이나 테스트 환경에 매우 적합합니다. 이 포스팅에서는 SQLite 데이터베이스를 설정하고 데이터를 삽입하고 조회하는 방법을 다뤘습니다. SQLite의 단순함과 Node.js의 강력함을 결합하여 경량화된 애플리케이션을 설계해 보세요.
반응형
'개발정리 (nodeJS)' 카테고리의 다른 글
[nodeJS] Node.js에서 이벤트 기반 아키텍처 구현하기 (0) | 2025.01.24 |
---|---|
[nodeJS] Node.js에서 DB 프로시저 활용하기 (0) | 2024.12.31 |
[nodeJS] Node.js와 Apache Kafka를 사용한 스트리밍 데이터 처리 (1) | 2024.12.03 |
[nodeJS] Node.js에서 Bcrypt를 사용한 비밀번호 해싱 및 검증하기 (0) | 2024.11.21 |
[nodeJS] Node.js에서 Worker Threads 사용하기 (0) | 2024.11.13 |