데이터베이스 (Database)
데이터를 체계적으로 저장하고, 필요할 때 빠르게 찾아 쓸 수 있도록 정리해주는 디지털 저장소입니다.
🤔 혹시 이런 경험 있나요?
AI에게 "회원가입 기능 만들어줘"라고 했더니 Supabase, Firebase, Neon 같은 서비스를 연결하라고 합니다. 또는 "데이터베이스 스키마를 설정하세요"라는 안내가 나옵니다. 대체 데이터베이스가 뭐고, 왜 앱을 만들 때마다 필요한 걸까요?
🗄️ 엑셀 스프레드시트의 진화판
가장 쉽게 이해하는 방법은 엑셀 스프레드시트를 떠올리는 것입니다.
엑셀에서 고객 명단을 관리한다고 생각해보세요. 이름, 이메일, 가입일을 열(Column)로 만들고, 한 명씩 행(Row)으로 추가합니다. 데이터베이스도 기본적으로 이와 같은 구조입니다. 다만 엑셀과 다른 점이 있습니다.
- 동시 접속: 수천 명이 동시에 읽고 쓸 수 있습니다.
- 속도: 수백만 건의 데이터에서도 원하는 정보를 빠르게 찾습니다.
- 안정성: 컴퓨터가 꺼져도 데이터가 사라지지 않습니다.
- 규칙 설정: "이메일은 반드시 입력해야 합니다" 같은 제약 조건을 걸 수 있습니다.
📊 SQL vs NoSQL: 두 가지 종류
데이터베이스는 크게 두 가지 종류가 있습니다.
SQL 데이터베이스 (관계형)
엑셀처럼 표(테이블) 형태로 데이터를 저장합니다. 데이터 간의 관계를 정의할 수 있어서 "관계형 데이터베이스"라고 부릅니다.
-- users 테이블
| id | name | email |
|----|--------|--------------------|
| 1 | 홍길동 | hong@example.com |
| 2 | 김철수 | kim@example.com |
-- posts 테이블 (user_id로 users와 연결)
| id | title | user_id |
|----|-------------|---------|
| 1 | 첫 번째 글 | 1 |
| 2 | 두 번째 글 | 1 |"홍길동이 쓴 글 목록"을 찾으려면 user_id = 1인 게시글을 조회하면 됩니다. 대표적인 서비스로 PostgreSQL, MySQL, Supabase, Neon 등이 있습니다.
NoSQL 데이터베이스 (비관계형)
표 대신 JSON과 비슷한 문서(Document) 형태로 데이터를 저장합니다. 구조가 자유로워서 유연하게 사용할 수 있습니다.
{
"name": "홍길동",
"email": "hong@example.com",
"posts": [
{ "title": "첫 번째 글" },
{ "title": "두 번째 글" }
]
}대표적인 서비스로 Firebase, MongoDB 등이 있습니다. 바이브코딩 프로젝트에서는 빠르게 프로토타입을 만들 때 NoSQL을 많이 사용합니다.
🧱 스키마: 데이터의 설계도
스키마(Schema)는 데이터가 어떤 구조로 저장될지 미리 정해놓은 설계도입니다. 집을 짓기 전에 도면을 그리는 것과 같습니다.
users 테이블 스키마:
- id: 숫자 (자동 생성, 고유값)
- name: 문자열 (필수)
- email: 문자열 (필수, 고유값)
- created_at: 날짜 (자동 생성)AI에게 "유저 테이블 만들어줘"라고 하면 이런 스키마를 자동으로 생성해줍니다. 스키마를 잘 설계하면 나중에 데이터가 꼬이는 문제를 예방할 수 있습니다.
🛠️ 바이브코딩에서 자주 만나는 DB 서비스
| 서비스 | 특징 | 적합한 경우 |
|---|---|---|
| Supabase | PostgreSQL 기반, 인증 기능 내장 | 풀스택 앱, 회원 관리 |
| Neon | PostgreSQL, 서버리스 | 가볍고 빠른 프로젝트 |
| Firebase | NoSQL, 실시간 동기화 | 채팅, 실시간 앱 |
| PlanetScale | MySQL 기반, 자동 확장 | 대규모 서비스 |
AI에게 프로젝트를 요청하면 보통 이 중 하나를 추천합니다. 초보자라면 Supabase가 가장 시작하기 쉽습니다. 대시보드에서 테이블을 직접 만들고, 데이터를 눈으로 확인할 수 있기 때문입니다.
⚠️ 바이브코딩할 때 흔한 DB 실수
1. 데이터베이스 연결 정보를 코드에 직접 넣는 실수
데이터베이스 URL, 비밀번호 같은 정보는 반드시 환경 변수(.env)에 저장해야 합니다. GitHub에 올리면 누구나 여러분의 데이터베이스에 접근할 수 있습니다.
2. 백업 없이 데이터를 삭제하는 실수
AI에게 "테이블 다시 만들어줘"라고 했다가 기존 데이터가 모두 사라질 수 있습니다. 변경 전에 항상 "기존 데이터는 유지하면서"라고 명시하세요.
3. 스키마 설계를 건너뛰는 실수
빨리 만들고 싶은 마음에 스키마 설계 없이 시작하면, 나중에 데이터 구조를 바꿔야 할 때 훨씬 복잡해집니다. AI에게 먼저 "이 앱에 필요한 데이터베이스 스키마를 설계해줘"라고 요청하는 것이 좋습니다.
💼 비개발자가 데이터베이스를 만나는 실제 상황
문의 폼으로 들어온 데이터를 확인할 때
AI로 만든 랜딩 페이지에 문의 폼을 붙였다면, 신청자 정보는 데이터베이스에 쌓입니다. Supabase를 쓴다면 대시보드의 Table Editor에서 엑셀처럼 데이터를 확인하고 CSV로 내려받을 수 있습니다. 개발자를 거치지 않고도 "오늘 신청자가 몇 명인지"를 직접 확인할 수 있습니다.
이벤트 대상자를 추려야 할 때
"지난달 가입자 중 마케팅 수신에 동의한 사람"처럼 조건에 맞는 목록이 필요한 순간이 옵니다. 테이블과 열의 구조를 알면 대시보드에서 필터를 걸거나, AI에게 "users 테이블에서 지난달에 가입했고 수신 동의가 true인 행을 뽑아줘"라고 정확히 요청할 수 있습니다. 구조를 모르면 요청 자체가 모호해지고, 잘못된 명단을 받아도 알아차리기 어렵습니다.
AI에게 기능 추가를 요청하기 전
"회원 등급 기능 추가해줘"라고 요청하면 AI는 기존 테이블에 열을 추가하거나 새 테이블을 만듭니다. 이때 기존 데이터가 유지되는지 확인하지 않으면 실제 신청자 데이터가 사라질 수 있습니다. 변경 전에 "기존 데이터는 유지해줘"라고 명시하고, 회원 정보처럼 민감한 데이터라면 인증 설정도 함께 점검하는 것이 안전합니다. 앱과 데이터베이스가 데이터를 주고받는 방식은 REST API 클래스에서 이어집니다.
📋 30초 요약
-
데이터베이스는 앱의 데이터를 저장하는 디지털 저장소입니다. 엑셀과 비슷하지만, 수천 명이 동시에 사용할 수 있고 훨씬 빠릅니다.
-
SQL(표 형태)과 NoSQL(문서 형태) 두 종류가 있으며, 바이브코딩에서는 Supabase, Firebase 같은 클라우드 서비스를 주로 사용합니다.
-
스키마(데이터 설계도)를 먼저 설계하고, 연결 정보는 환경 변수에 보관하세요. AI에게 요청할 때도 스키마 설계부터 시작하는 것이 좋습니다.
이 글이 도움이 되셨다면 공유해 주세요
메신저로 바로 보내거나 링크를 복사할 수 있습니다.
바이브코딩으로 회원가입 기능이 있는 웹 앱을 만들려고 합니다. AI가 Supabase를 추천했는데, Supabase에서 '사용자 정보를 어떤 구조로 저장할지 미리 정의한 것'을 무엇이라고 할까요?
이어서 배우면 좋은 개념
REST API
서로 다른 프로그램이 인터넷을 통해 데이터를 주고받을 수 있도록 정해진 규칙으로 소통하는 방식입니다.
프론트엔드와 백엔드 (Frontend & Backend)
프론트엔드는 사용자가 보고 상호작용하는 화면(브라우저) 부분이고, 백엔드는 데이터 처리와 비즈니스 로직을 담당하는 서버 부분입니다. 이 구분을 이해해야 바이브코딩에서 보안 사고를 방지할 수 있습니다.
JSON과 데이터 구조 (JSON & Data Structures)
JSON은 데이터를 주고받을 때 가장 널리 쓰이는 텍스트 형식이고, 데이터 구조는 정보를 담는 그릇의 모양입니다. AI에게 원하는 결과물의 형태를 알려줄 때 핵심이 되는 개념입니다.
인증과 보안 (Authentication & Security)
사용자가 누구인지 확인하고(인증), 허가된 사람만 데이터에 접근할 수 있도록 보호하는(보안) 시스템입니다.
관련 인사이트
- HTML in Canvas API가 바꾸는 웹사이트 화면의 구조HTML in Canvas는 살아 있는 HTML 요소를 캔버스 안에 직접 그리는 웹 API입니다. 문서의 접근성과 그림판의 표현력 가운데 하나만 골라야 했던 웹사이트 제작의 양자택일이 어떻게 사라지는지, 직접 만든 데모와 함께 정리했습니다.
- OpenWiki 사용법: 코딩 에이전트를 위한 저장소 문서 자동 생성 도구OpenWiki는 코딩 에이전트가 읽을 저장소 문서를 자동으로 만들고 유지하는 랭체인(LangChain)의 오픈소스 CLI 도구입니다. 사람용 문서와 에이전트용 문서의 차이, 설치와 자동 갱신 설정, 초기 벤치마크 결과까지 정리했습니다.
- Qwen3.8 27B 로컬 실행 결과: 24GB 맥에서는 CPU로 떨어집니다Qwen3.8 27B는 알리바바 Qwen 팀이 2026년 8월 공개한 Apache 2.0 오픈 웨이트 모델입니다. 메모리 24GB 맥미니 M4 프로에 직접 설치해 돌려 보니 GPU에 올라가지 못하고 CPU로 실행됐고, 그때 측정한 속도를 그대로 정리했습니다.
- 코덱스 CLI와 클로드 코드 비교 (같은 도구를 만들게 해 봤습니다)코덱스 CLI와 클로드 코드는 터미널에서 파일을 직접 읽고 만드는 코딩 도구입니다. 두 도구에 똑같은 규격서를 주고 같은 도구를 만들게 해서 걸린 시간, 결과물 규모, 안전장치가 어떻게 다른지 측정했습니다.
- 코덱스 CLI 사용법: 초보 블로거를 위한 GEO 인용 검사 도구 만들기 과정코덱스 CLI는 터미널에서 파일을 직접 읽고 만드는 코딩 도구입니다. 빈 폴더에서 시작해 내 글이 AI 답변에 인용되기 쉬운지 확인하는 GEO 점검 도구가 나올 때까지, 시킬 말 전문과 명령을 그대로 정리했습니다.
- Google AI Studio 사용법: Gemini로 앱과 웹 만들기Google AI Studio는 Gemini 모델을 시험하고 자연어로 웹 앱과 Android 앱을 만드는 개발 환경입니다. 처음 접하는 분을 위해 Playground와 Build의 차이, 앱 제작 순서, API 키와 배포 시 주의할 점을 정리했습니다.
