특강
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을 유연하게 조합하는 능력이 가장 중요합니다!