멘토링

멘토링 내용 정리 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

  • 대부분의 회사에서는 MySQLPostgreSQL을 가장 많이 사용합니다.
  • 그 외 DB도 쓸 수 있지만, 기본을 튼튼히 하려면 이 두 가지를 중점적으로 학습하는 것이 좋습니다.

마무리 과제: 스타벅스 데이터베이스 설계 연습
스타벅스에서 판매하는 음료와 푸드를 데이터베이스에 어떻게 저장할지 생각해보고, 테이블과 컬럼을 직접 설계해 봅시다. 이를 통해 ERD 그리는 연습도 함께하면 좋습니다!

예시 접근법:

  • 테이블: 상품(음료, 푸드), 재료, 카테고리, 주문
  • 컬럼: 이름, 가격, 칼로리, 성분, 재고 등

이번 정리를 통해 현업에서 실질적으로 필요로 하는 데이터베이스의 지식과 구조 설계의 중요성을 느껴보셨기를 바랍니다!