데이터베이스란 무엇인가
이 토픽을 마치면
데이터베이스가 왜 필요한지 설명할 수 있고, CRUD의 의미와 SQL/NoSQL의 차이를 알게 됩니다.
파일로는 부족한 이유
프로그램이 데이터를 저장해야 한다면, 가장 단순한 방법은 파일입니다. JSON 파일에 사용자 목록을 저장하는 식이죠.
[
{"id": 1, "name": "김훈", "email": "hoon@example.com"},
{"id": 2, "name": "이수", "email": "su@example.com"}
]이 방식은 처음엔 괜찮지만, 곧 문제가 생깁니다:
- 사용자가 1만 명이 되면 검색이 느려집니다 — 전체 파일을 읽어야 하니까
- 두 명이 동시에 수정하면 데이터가 덮어써집니다
- "이메일이 'naver.com'인 사용자만 찾아줘" 같은 복잡한 질문에 직접 코드를 짜야 합니다
**데이터베이스(DB)**는 이런 문제를 해결하기 위해 만들어진 전문 데이터 저장·검색 시스템입니다.
CRUD — 데이터의 네 가지 동작
데이터베이스에서 하는 일은 결국 네 가지입니다:
| 동작 | 의미 | SQL 키워드 |
|---|---|---|
| Create | 새 데이터 만들기 | INSERT |
| Read | 데이터 읽기/검색 | SELECT |
| Update | 기존 데이터 수정 | UPDATE |
| Delete | 데이터 삭제 | DELETE |
웹 애플리케이션의 거의 모든 기능은 CRUD의 조합입니다. 회원가입(C), 게시판 목록(R), 프로필 수정(U), 계정 탈퇴(D).
관계형 데이터베이스 — 표(Table)로 정리
가장 오래되고 널리 쓰이는 방식은 **관계형 데이터베이스(RDBMS)**입니다. 데이터를 표 형태로 저장합니다.
users 테이블:
+----+--------+---------------------+
| id | name | email |
+----+--------+---------------------+
| 1 | 김훈 | hoon@example.com |
| 2 | 이수 | su@example.com |
+----+--------+---------------------+각 행(row)이 하나의 데이터, 각 열(column)이 속성입니다. 이 표에 질문하는 언어가 SQL입니다.
-- 이메일이 naver.com인 사용자 찾기
SELECT name, email FROM users WHERE email LIKE '%@naver.com';대표적인 RDBMS: MySQL, PostgreSQL, SQLite, Oracle.
NoSQL — 표 형식이 아닌 데이터베이스
모든 데이터가 깔끔한 표에 들어맞지는 않습니다. 사용자마다 가진 속성이 다르거나, 데이터 구조가 자주 바뀌는 경우 NoSQL을 사용합니다.
// MongoDB 문서 (document) 예시
{
"_id": "abc123",
"name": "김훈",
"skills": ["Python", "JavaScript"],
"address": {
"city": "서울",
"district": "강남"
}
}SQL 없이 JSON과 비슷한 구조로 저장합니다. 유연하지만, 복잡한 관계(JOIN)는 불편합니다.
대표적인 NoSQL: MongoDB, Redis, Firebase, Supabase(PostgreSQL 기반이지만 BaaS).
어떤 걸 배워야 할까?
| 상황 | 추천 |
|---|---|
| 웹 개발 기초 | MySQL 또는 PostgreSQL (SQL 필수) |
| 빠른 프로토타입 | Supabase, Firebase (설정 최소) |
| 대규모 비정형 데이터 | MongoDB |
처음에는 SQL을 먼저 배우는 것이 좋습니다. SQL은 어떤 데이터베이스를 쓰더라도 기초가 되고, 데이터를 다루는 사고방식 자체를 훈련해줍니다.
→ 바이오에 적용: DevBench — Supabase 셋업