데이터베이스
Database
데이터베이스란?
- 데이터를 체계적으로 저장·검색·관리
- 회원·주문·글이 여기 담김
- 앱의 기억장치
DB를 붙이는 순간 실제로 달라지는 건 '여러 명이 동시에 손대도 값이 깨지지 않는다'는 점입니다. 엑셀 파일은 김 대리가 열어둔 사이 박 과장이 고치면 둘 중 하나가 통째로 덮어씌워지지만, DB는 한 건의 변경을 끝까지 처리하거나 아예 없던 일로 되돌립니다. 결제는 빠져나갔는데 주문 기록은 없는 상황을 막아주는 성질이고, 개발자들은 이걸 트랜잭션이라 부릅니다. 앱이 커져도 숫자가 흔들리지 않는 근거가 바로 여기에 있습니다.
저장 방식은 크게 둘로 나뉩니다. 관계형 DB(MySQL·PostgreSQL)는 표 구조와 열 타입을 미리 정해두고 회원 표와 주문 표를 회원번호로 이어 붙이며, NoSQL(MongoDB·Firebase)은 문서 단위로 자유롭게 담아 구조가 자주 바뀌는 로그·채팅에 맞습니다. 사내 업무 앱은 관계형으로 시작하는 편이 대체로 안전합니다. 규모가 커졌을 때 속도를 가르는 건 서버 사양이 아니라 인덱스입니다. 10만 행에서 이메일로 회원을 찾을 때 인덱스가 없으면 전부 훑느라 몇 초가 걸리고, 있으면 수 밀리초에 끝납니다. 분석용 데이터 웨어하우스와는 용도가 다릅니다 — 실시간 주문·로그인 처리는 DB, 지난 3년 매출 집계는 웨어하우스 쪽입니다.
현장에서 가장 많이 깨지는 지점은 백업과 권한입니다. 바이브 코딩으로 만들면 DB가 자동으로 생성되니 '알아서 보관되겠지' 하고 넘어가는데, 조건절 하나 빠진 삭제 명령에 회원 8천 건이 한 번에 사라지는 사고는 드물지 않습니다. 하루 1회 자동 백업과 복구 테스트는 오픈 전에 눈으로 확인하십시오. 또 하나, 비밀번호나 주민번호를 그대로 저장해두면 유출 시 즉시 노출이고 개인정보보호법 위반입니다. DB는 만드는 값보다 지키는 값이 큽니다.
관계형 데이터베이스의 이론적 토대는 IBM의 에드거 커드(Edgar F. Codd)가 1970년에 제시한 관계형 모델이며, 이후 SQL 언어와 함께 표준으로 자리잡았습니다.
가상의 사례로 살펴보겠습니다. 임직원 180명 규모의 산업안전 교육 전문기업 A사는 연 700회 과정을 구글폼과 엑셀로 받아왔습니다. 월 신청이 900건을 넘기면서 중복 신청과 취소 반영 누락이 쌓였고, 교육운영팀 3명이 매일 2시간씩 명단을 대조하는 데 매달렸습니다. 2024년 상반기에는 수료증 발급이 평균 6일 걸린다는 고객사 항의까지 들어왔습니다.
- 교육운영팀 이 팀장이 엑셀 파일 12개를 펼쳐놓고 "같은 사람인데 이름 표기가 세 가지"라고 지적하면서, 신청자·과정·수강이력 세 개 표로 구조를 다시 짰습니다.
- 외주 개발사와 PostgreSQL을 올리고 회원은 이메일로만 구분하도록 중복 방지 제약을 걸었습니다. 2주간 과거 3년치 2만 4천 건을 옮기며 중복 1,900건을 걸러냈습니다.
- 영업팀의 "이번 달 전기안전 과정 미수료자만 뽑아주세요" 요청이 엑셀 필터 30분에서 조회 3초로 바뀌자, 재수강 안내 메일을 그 자리에서 발송하기 시작했습니다.
- 개발사 대표가 "취소 건은 지우지 말고 표시만 남기시죠"라고 제안해 삭제 대신 이력으로 보관했고, 새벽 3시 자동 백업과 월 1회 복구 훈련을 운영 규칙에 넣었습니다.
- 6개월 뒤 수료증 발급은 평균 6일에서 당일로, 명단 대조 업무는 하루 2시간에서 10분으로 줄었고, 중복 신청 관련 문의는 월 40건에서 3건으로 떨어졌습니다.