데이터 저장소 — 변수에서 데이터베이스까지
변수→파일→데이터베이스 — 데이터를 어디에 저장할지 결정하는 기준.
앱을 만들면 반드시 데이터를 저장해야 한다. 사용자 정보, 게시글, 설정값… Claude Code에게 '데이터 저장해줘'라고 할 때, 변수/파일/DB 중 어디에 저장할지 판단하는 건 바이브코더의 몫이다.
데이터 저장소는 3계층 피라미드로 이해하면 쉽습니다. 1. 변수(Variable) — 프로그램이 실행 중일 때만 존재하는 임시 저장소. 프로그램을 끄면 사라집니다. 2. 파일(File) — 디스크에 저장되어 프로그램을 꺼도 유지됩니다. JSON, CSV, 텍스트 파일 등. 3. 데이터베이스(Database) — 대량의 데이터를 구조화하여 저장하고, 빠르게 검색·수정·삭제할 수 있는 전문 시스템.
| 저장소 | 지속성 | 용량 | 검색 속도 | 사용 예시 |
|---|---|---|---|---|
| 변수 | 프로그램 종료 시 소멸 | 매우 작음 (RAM) | 즉시 | 계산 중간값, 임시 상태 |
| 파일 (JSON/CSV) | 디스크에 영구 저장 | 중간 | 느림 (전체 읽기) | 설정 파일, 소규모 데이터 |
| 데이터베이스 | 디스크에 영구 저장 | 매우 큼 | 빠름 (인덱스) | 사용자 정보, 주문 내역 |
// 1단계: 변수 — 프로그램 꺼지면 사라짐
let userName = "짓친";
// 2단계: 파일 (JSON) — 디스크에 저장
const fs = require("fs");
fs.writeFileSync("user.json", JSON.stringify({ name: "짓친" }));
// 3단계: 데이터베이스 — 구조화된 저장 + 빠른 검색
// SQL 예시: 사용자 테이블에서 이름이 "짓친"인 행 조회
// SELECT * FROM users WHERE name = '짓친';같은 데이터를 변수, 파일, DB에 저장하는 3가지 방법. 규모가 커질수록 DB가 필수.
관계형 DB vs NoSQL — 데이터베이스도 두 종류로 나뉩니다. 관계형 DB(SQL) — 엑셀 표처럼 행과 열로 데이터를 저장합니다. PostgreSQL, MySQL이 대표적입니다. 데이터 간의 관계(예: 사용자 ↔ 주문)를 다루는 데 강합니다. NoSQL — JSON 문서 형태로 저장합니다. MongoDB, Firebase가 대표적입니다. 구조가 유연해서 빠르게 프로토타입을 만들 때 유리합니다. 바이브코더라면? Supabase(PostgreSQL 기반)처럼 SQL도 쓸 수 있고 API도 자동 생성되는 서비스를 추천합니다.
왜 DB를 쓸까? JSON 파일로도 데이터를 저장할 수 있는데, 왜 굳이 데이터베이스를 쓸까요? 1. 동시 접속 — 100명이 동시에 데이터를 수정해도 충돌 없이 처리 2. 검색 속도 — 100만 건의 데이터에서 0.001초 만에 원하는 행을 찾음 3. 안전성 — 서버가 꺼져도 데이터가 날아가지 않음 (트랜잭션) 4. 권한 관리 — 누가 어떤 데이터를 볼 수 있는지 제어
프로그램이 종료되면 사라지는 임시 저장소를 무엇이라 하는가?
NoSQL 데이터베이스는 엑셀 표처럼 행과 열로 데이터를 저장한다.