특강

Database - 파머 강사님 강의(250321)

Chansman 2025. 3. 21. 18:27

 

💾 Database의 개념과 중요성

✅ 1. 데이터베이스의 존재 이유

데이터베이스(Database)는 단순히 데이터를 저장하는 공간이 아닙니다. 실제 서비스와 시스템에서는 다음과 같은 이유로 반드시 데이터베이스가 필요합니다.

이유 설명

🔐 보안 접근 권한, 사용자별 제한, 민감정보 암호화 등으로 데이터를 안전하게 보호
⚡ 빠른 데이터 처리 인덱스, 쿼리 최적화를 통해 수많은 데이터를 빠르게 조회/처리
✅ 신뢰성 재고, 주문, 결제 정보 등을 정확하고 일관되게 관리함으로써 서비스 신뢰도 향상

예시: "쇼핑몰에서 결제가 완료된 상품의 재고가 실시간으로 줄지 않는다면?" → 데이터 신뢰 붕괴 ⚠️


📌 2. 데이터베이스의 중요성 (특히 개발자에게)

  • 데이터베이스는 백엔드 개발자에게는 생명선처럼 중요합니다.
  • 신입 개발자 채용 시 데이터베이스만으로 합격이 좌우되지는 않지만,
  • 실무에서의 영향력은 150% 이상!

면접에서 자주 나오는 Database 주제

  • 관계형 데이터베이스(RDBMS)
  • 정형 / 비정형 데이터 차이
  • 스키마란 무엇인가?
  • 인덱스의 원리와 장단점
  • 조인 종류 및 활용
  • 쿼리 최적화 경험이 있는가?

💡 실전 팁: 효율적인 쿼리문과 인덱스 설계만으로도 서비스 속도는 2배 이상 차이날 수 있습니다!


🧠 3. 쿼리문(Query)이란?

데이터베이스에 명령을 내리는 "질의문"입니다. 사용자는 SQL 언어를 통해 데이터베이스에 요청합니다.

SELECT * FROM users;
INSERT INTO orders VALUES (...);

✅ 쿼리문 특징

  • SQL(Structured Query Language)을 사용
  • 문법이 정형화되어 있어 배우기 쉽고, 표준화되어 있음
  • 명령어 유형: SELECT / INSERT / UPDATE / DELETE / JOIN / GROUP BY 등

🐍 ORM(Object Relational Mapping)이란?

ORM은 SQL을 직접 작성하지 않고, **프로그래밍 언어 코드(Python 등)**로 데이터베이스와 상호작용할 수 있게 해주는 기술입니다.

ORM의 장점

장점 설명

✅ 생산성 향상 SQL 없이도 코드만으로 데이터 조작 가능 → 초보자도 빠르게 개발 가능
🧩 유지보수 용이 DB 구조 변경 시, 코드 기반 매핑이 더 안전하게 적용됨
🌎 DB 독립성 다양한 DB(MySQL, PostgreSQL 등)에 쉽게 이식 가능

ORM의 단점

단점 설명

⚠️ 성능 저하 내부적으로 SQL로 변환되기 때문에 직접 작성한 SQL보다 느릴 수 있음
❌ 복잡한 쿼리 작성 불편 복잡한 JOIN, GROUP BY, 윈도우 함수 등의 쿼리는 ORM이 처리하기 어려움

예시 (Python + SQLAlchemy)

user = session.query(User).filter_by(name="Alice").first()

→ 실제 SQL: SELECT * FROM users WHERE name='Alice' LIMIT 1;

✨결론: 간단한 DB 조작은 ORM으로, 복잡한 분석 쿼리는 SQL로 직접 작성하는 하이브리드 접근이 가장 이상적입니다!


🧱 4. 테이블 관련 용어 정리

용어 설명

테이블(Table) 데이터가 저장되는 구조화된 공간 (예: users, orders)
속성(Attribute) 테이블의 열(Column), 각 데이터 항목의 종류 (예: 이름, 나이)
튜플(Tuple) 테이블의 행(Row), 각 데이터의 한 묶음 (예: 1명 사용자 정보)
테이블명(Table Name) 테이블의 고유한 이름 (예: products, reviews)

✅ "테이블은 엑셀의 시트, 속성은 열, 튜플은 행" 으로 이해하면 쉽게 접근할 수 있습니다.


🛠️ PyMySQL을 알아야 하는 이유

Python과 MySQL을 연동하여 직접 쿼리문을 실행할 수 있게 해주는 라이브러리입니다.

  • SQL을 Python 코드로 자동 실행 가능
  • 데이터 삽입, 조회, 수정, 삭제 등의 모든 DB 작업을 Python으로 처리 가능

✅ PyMySQL은 Python 기반 백엔드 개발자라면 꼭 다뤄봐야 할 필수 기술입니다!


📌 마무리 정리

항목 핵심 요약

데이터베이스 데이터를 안전하게 저장, 빠르게 처리, 정확하게 관리
쿼리문 데이터베이스에 명령을 내리는 SQL 문장
ORM SQL 없이 Python 코드로 DB를 조작하는 기술 (장단점 존재)
PyMySQL Python에서 MySQL을 직접 다룰 수 있게 해주는 라이브러리

🎯 실무에서는 SQL과 ORM을 유연하게 조합하는 능력이 가장 중요합니다!