웹 서비스의 심장, 데이터베이스(DB) 완벽 해부
[ 오늘 배운 핵심 인사이트 ]
웹 서비스는 프론트엔드(화면), 백엔드(처리), 데이터베이스(저장)라는 3대 핵심 요소로 만들어집니다. 이 중 데이터베이스는 웹 서비스가 사용하는 정보를 지속적으로 저장하고 관리하는 핵심 저장소입니다. DB는 단순히 데이터를 보관하는 것을 넘어, CRUD(Create, Read, Update, Delete)라는 4가지 기능을 통해 데이터를 조작하는 역할을 수행하며, 이 원리를 이해하는 것이 웹 서비스의 작동 방식을 파악하는 핵심입니다.

📘 배운 내용
1️⃣ 데이터베이스(DB)의 정의와 웹 서비스에서의 역할
- 정의 및 역할
* DB는 웹 페이지나 데이터를 저장해 놓는 컴퓨터로, 애플리케이션에서 사용하는 데이터를 지속적으로 저장하는 저장소입니다.
* 웹 서비스의 3대 요소 중 하나이며, 식당 비유에서는 식재료 창고 및 주문 기록장 역할을 합니다.
* 회원정보, 게시물, 상품정보 등 구조화된 데이터를 보관합니다.
- 실무 활용
* 쇼핑몰 기획자는 인기 상품을 조회하고, 마케터는 타깃 고객을 분석하며, 상담사는 주문 상태를 확인하는 등 모든 직군이 데이터베이스를 확인합니다.
2️⃣ DB의 핵심 조작 기능: CRUD
- DB가 데이터를 다룰 때 하는 일은 딱 4가지로 요약됩니다. 마치 식당 주인이 재료를 관리하는 것과 같습니다.
* Create(삽입) : 데이터를 새로 만듭니다. ex.회원가입, 새 게시물 작성
* Read(조회) : 저장된 데이터를 읽어옵니다. ex.로그인 후 내 정보 보기, 상품 목록 보기
* Update(수정) : 저장된 데이터를 바꿉니다. ex.비밀번호 변경, 댓글 내용 수정
* Delete(삭제) : 저장된 데이터를 지웁니다. ex.회원 탈퇴, 게시물 삭제
💡SQL(에스큐엘)이란? DB에 "이거 조회해줘!"," 저거 새로 넣어 줘!"라고 명령하는 언어입니다.
3️⃣ 데이터 저장 형태: '정확한 표'와 '자유로운 구조'
- DB는 데이터를 저장하는 방식에 따라 크게 두 가지 종류로 나뉩니다.
| 유형 | 관계형 DB(RDB) | NoSQL (비관계형 DB) |
| 저장 형태 | 테이블(표) 형태로 정리 | 표가 아닌 다양한 형태로 정리(더 자유로움) |
| 가장 중요한 점 | 정확성과 일관성 | 속도와 유연성 |
| 주요 사용처 | 은행 시스템, 병원 기록 등 데이터가 틀리면 안 되는 곳 | 실시간 댓글, 유연한 구조가 필요한 곳 |
4️⃣ 테이블과 테이블을 연결하는 끈: 기본키(PK)와 외래키(FK)
- 관계형 DB(RDB)에서는 여러 개의 테이블(표)이 서로 연결되어 정보를 주고받습니다.
* PK(Primary Key, 기본키): 테이블에서 각 행(레코드)을 고유하게 구별하는 신분증입니다.
* FK(Foreign Key, 외래키): 다른 테이블의 신분증(PK)을 가져와서 테이블과 테이블을 연결하는 끈 역할을 합니다.
Ex. 회원번호 1번, 2번... → PK
대여 기록표에 '책 번호'와 '회원 번호'를 적어, 누가 어떤 책을 빌렸는지 연결함 → FK
5️⃣ 관계형 데이터베이스의 해결책: ACID
- 관계형 데이터베이스는 데이터를 안전하고 정확하게 저장하겠다고 사용자에게 4가지 약속(ACID 원칙)을 하고, 이 원칙은 아무리 복잡한 상황이 발생해도 DB가 흔들리지 않게 지켜주는 뼈대입니다.
* Atomicity(원자성): 전부 성공 or 전부 실패 → 중간 상태 없이, 완전히 성공 혹은 실패(처음 상태로 돌아감)
* Consistency(일관성): 규칙 항상 준수 → 규칙 위반 거래는 아예 허용되지 않음
* Isolation(독립성): 동시 작업 안전 → 서로에게 영향을 주지 않고 독립적으로 처리됨
* Durability(지속성): 한번 저장하면 영원히 보존 → 성공적으로 저장된 데이터는 시스템 오류가 발생해도 영구적 보존
- DB가 위 4가지 약속을 완벽하게 지키지 못하고 여러 작업이 동시에 데이터를 건드릴 때, 아래와 같은 예측 불가능한 5가지 문제가 발생할 수 있습니다.
* 데이터 중복: 같은 정보를 수십, 수백 번 반복해서 적어놓습니다. → 쓰레기가 쌓임
* 갱신 이상: 지점 주소가 바뀌었는데, 반복해서 적힌 모든 곳을 찾아서 고쳐야 하는 상황입니다. → 수정할 때 사고
* 삽입 이상: '새 지점 정보'만 미리 등록하고 싶은데, 아직 그 지점에 등록된 고객이 없어서 등록 못하는 상황입니다. → 새 정보 등록 불가
* 삭제 이상: 하나의 정보를 지우려다 엉뚱한 중요한 정보까지 삭제된 상황입니다. → 중요한 정보가 함께 삭제
* 지점 정보 변경의 어려움: 지점 주소 한 번 바꾸려면, 수천 건의 고객 데이터 행을 전부 수정해야 해서 일이 너무 많고 위험합니다. → 일이 너무 많음
💡 문제 해결을 위해 '고객 정보표'와 '지점 정보표'를 따로따로 만들어서 분리하고, 두 표를 'PK/FK'로 연결해야 합니다.
이 작업이 바로 DB 설계의 가장 중요한 기술인 '정규화'입니다.
📍 오늘의 정리 포인트
1. DB 역할: 데이터베이스는 웹 서비스의 3대 요소 중 하나이며, 정보를 지속적으로 저장하고 관리하는 핵심 저장소입니다.
2. CRUD 마스터: 모든 데이터 조작은 CRUD(생성, 조회, 수정, 삭제) 4가지 기본 기능으로 이루어지며, SQL은 이를 수행하는 언어이다.
3. 데이터의 정확성 vs 유연성: RDB는 은행처럼 정확한 표 구조에 사용하고, NoSQL은 자유로운 구조가 필요할 때 사용합니다.
4. PK와 FK: PK는 각 데이터의 고유 번호이며, FK는 이 번호를 이용해 여러 정보를 연결하는 역할을 합니다.
5. 데이터의 안전성과 정확성을 약속하는 ACID 원칙과 발생할 수 있는 문제 대표적인 5가지가 있습니다.
💭 오늘의 적용 아이디어
- 실무에서 다양한 직군이 DB를 어떻게 활용하는지(기획자: 인기 상품 조회, 마케터: 타깃 고객 분석 등)를 떠올리고, 내 직무에서 필요한 DB 정보는 무엇일지 정리해 보기
✏️ 오늘의 한 줄 정리
"데이터베이스는 정보를 구조화하고 CRUD로 생명력을 불어넣어 웹 서비스를 지속시키는 심장이다."
🙏🏻 오늘의 과제 - 내가 만들고 싶은 서비스 데이터 베이스 간단하게 만들어보기
실제 서비스를 만들 때 prd를 만들기 전 데이터 베이스의 구조를 미리 파악하고 내용에 추가할 수 있다.