멘토링
멘토링 내용 정리 database (3회차 정리)
Chansman
2025. 3. 27. 21:58
📌 현업에서 바라본 데이터베이스 학습 방향 및 실무 팁
이번 포스팅에서는 실제 현업에서 데이터베이스가 어떻게 쓰이고 있는지, 학습 시 어떤 부분에 더 중점을 두면 좋은지, 실무에서 겪게 되는 주요 이슈와 해결 방법에 대해서 정리해 보았습니다.
🚦 1. 현재 학습 중인 데이터베이스 기술에서 실무적으로 더 중점을 둘 부분은?
현재 배우고 있는 데이터베이스 기술들:
- MySQL, PyMySQL, MongoDB, ERD
현업에서 가장 많이 쓰이는 기술:
- MySQL, PostgreSQL과 같은 관계형 데이터베이스가 주력으로 사용됩니다.
- NoSQL로는 MongoDB, Redis, Elasticsearch를 많이 활용합니다.
멘토의 조언:
- MySQL은 기본 연결 방법을 정확히 익히는 것이 중요합니다. 복잡한 내용보다는 기본 쿼리 작성, 연결, CRUD 작업만 확실히 이해하면 실무 초반 적응에 충분합니다.
- 데이터베이스 설계 능력(ERD 설계 능력)을 길러놓는 것이 중요합니다. 실제 서비스 운영 중에는 데이터 구조 변경이 어렵기 때문입니다.
🚦 2. Python과 데이터베이스 학습 비율 조정
- Python과 데이터베이스의 학습 비율은 동일하게 (50:50) 가져가는 것이 가장 효율적입니다.
- Python을 통해 데이터베이스와 연결하여 데이터를 조작하는 실습을 자주 해보는 게 효과적입니다.
🚦 3. 추천 교재
- 『SQL 첫걸음』(기본편/심화편)
- 『DATABASE 첫걸음』 (Real MySQL 8.0) 교보문고 링크
백엔드 개발자라면 Django 등의 프레임워크 때문에 SQL의 비중이 줄어들 수 있지만, 실제 현업에서는 SQL 지식이 필수적입니다.
🚦 4. 실무에서 자주 겪는 데이터베이스 관련 문제
가장 흔한 문제:
- 한번 운영이 시작된 서비스는 리팩토링이 매우 어렵습니다.
- 데이터베이스 구조는 한번 정해지면 쉽게 변경할 수 없기 때문에 초반 설계가 매우 중요합니다.
- 컬럼 추가나 변경이 어렵습니다. 이때는 테이블을 새로 생성하고 **외래 키(Foreign Key)**로 연결하여 해결합니다.
예시:
- 기존 사용자 테이블에 주소 컬럼을 추가하려고 하면 서비스에 큰 영향을 주므로, 주소만을 관리하는 별도의 테이블을 만들고 사용자 테이블에 연결(FK)합니다.
🚦 5. 데이터베이스 버전 호환 문제
운영 서버와 로컬 개발 서버의 데이터베이스 버전이 다를 경우, 버전 간 호환성 문제가 발생할 수 있습니다.
- 항상 운영 서버와 개발 서버의 DB 버전을 맞추는 습관이 중요합니다.
예시:
- MySQL 구버전은 **이모티콘(emoji)**을 지원하지 않을 수 있습니다.
- 이런 경우에는 DB의 캐릭터 셋(character set)을 변경하는 작업이 필요합니다. (utf8mb4)
🚦 6. 백엔드 개발자의 데이터베이스 관리 역할
- 백엔드 개발자는 데이터베이스를 직접 운영하고 관리하는 경우가 많습니다.
- 데이터베이스의 구조가 바뀌면 이에 따라 API 코드도 모두 수정해야 합니다.
즉, 데이터베이스 구조 변경 = 코드 변경으로 생각하면 됩니다.
🚦 7. 관계형 데이터베이스 vs NoSQL
관계형 데이터베이스 (RDBMS)
- 관계형 데이터베이스는 데이터를 엑셀 시트처럼 2차원 테이블 형태로 관리합니다.
- 데이터 간 관계를 명확하게 정의하며 데이터가 한층씩 쌓이면서 관리됩니다.
- 주로 사용되는 DB: MySQL, PostgreSQL 등
NoSQL
- 특정 기능에 특화된 데이터베이스를 혼합하여 사용합니다.
- 주요 사용 사례:
- MongoDB: 유연한 데이터 구조로 JSON 형태 데이터를 관리
- Redis: 실시간 랭킹, 캐싱 서비스에 적합
- Elasticsearch: 검색에 최적화된 데이터베이스로, 빠른 검색을 지원
🚦 8. Indexing 주의사항
- Index를 만들 때는 데이터가 빈번하게 변경되거나 자주 삽입되는 경우 성능이 오히려 떨어질 수 있으므로 신중해야 합니다.
- 대표적인 인덱스 구조는 B-tree 인덱스이며, 검색 성능 향상에 크게 기여합니다.
- 너무 많은 컬럼이나 빈번한 데이터 변경이 있는 컬럼에는 인덱스를 피하는 것이 좋습니다.
🚦 9. UUID와 외래 키(Foreign Key)의 개념
- UUID는 고유한 값을 생성하는데 사용되며, 중복을 방지하기 위한 무작위 문자열로 이루어져 있습니다.
- 외래 키(FK)는 하나의 테이블이 다른 테이블의 PK(Primary Key)를 참조할 때 사용하는 방식입니다.
- FK를 사용할 때는 PK의 ID값을 FK 컬럼에 넣는다고 이해하면 쉽습니다.
🚦 10. N:M 관계에서 중간 테이블 활용
- N:M 관계는 양쪽 테이블에서 여러 값을 참조할 때 필요합니다.
- 예를 들어, 인스타그램의 '좋아요' 기능을 생각하면 이해하기 쉽습니다.
- 유저와 게시글 간의 다대다(N:M) 관계를 관리하기 위해서는 반드시 중간 테이블을 만들어야 합니다.
🚦 11. ERD 설계의 중요성
- 데이터베이스 설계 과정에서 **ERD(Entity-Relationship Diagram)**를 그리는 연습이 매우 중요합니다.
- 실제 예시를 자주 만들어보는 것이 좋습니다. 예시로는:
- 스타벅스 메뉴 관리 시스템 (음료, 푸드)
- E-커머스 플랫폼 (상품, 주문, 결제)
- 인스타그램 시스템 (유저, 게시글, 좋아요, 댓글 등)
- ERD를 통해 데이터를 어떤 구조로 저장할지 미리 시각적으로 정의할 수 있습니다.
🚩 현업에서 가장 많이 사용하는 DB
- 대부분의 회사에서는 MySQL과 PostgreSQL을 가장 많이 사용합니다.
- 그 외 DB도 쓸 수 있지만, 기본을 튼튼히 하려면 이 두 가지를 중점적으로 학습하는 것이 좋습니다.
✅ 마무리 과제: 스타벅스 데이터베이스 설계 연습
스타벅스에서 판매하는 음료와 푸드를 데이터베이스에 어떻게 저장할지 생각해보고, 테이블과 컬럼을 직접 설계해 봅시다. 이를 통해 ERD 그리는 연습도 함께하면 좋습니다!
예시 접근법:
- 테이블: 상품(음료, 푸드), 재료, 카테고리, 주문
- 컬럼: 이름, 가격, 칼로리, 성분, 재고 등
이번 정리를 통해 현업에서 실질적으로 필요로 하는 데이터베이스의 지식과 구조 설계의 중요성을 느껴보셨기를 바랍니다!