ORM과 Raw SQL을 활용한 데이터베이스 최적화 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상자: Python 개발자, SQLAlchemy 사용자, 데이터베이스 최적화를 위한 중급~고급 개발자
- 난이도: 중급 (ORM 및 SQL 기초 지식 필요)
핵심 요약
- ORM의 장점:
SQLAlchemy ORM
은Python 객체
를 사용해 SQL 쿼리 추상화,자동 파라미터 바인딩
으로 SQL 인젝션 방지,모델 관계 처리
편의성 제공 - Raw SQL의 장점:
직접 SQL 쿼리 작성
으로 복잡한 쿼리 최적화 가능,데이터베이스 전용 기능
활용 가능 - 혼합 접근 방식: ORM으로 대부분의 작업 처리, 복잡한 성능 최적화 시
Raw SQL
사용
섹션별 세부 요약
1. ORM 모델 정의
- SQLAlchemy
를 사용해 데이터베이스 스키마를 Python 클래스
로 정의
- declarative_base()
로 베이스 클래스 생성, Column
및 Table
정의
- engine = create_engine()
으로 데이터베이스 연결 설정, Session
객체 생성
2. ORM 기반 레포지토리 구현
- get_job_descriptions_by_company_orm()
함수에서 session.query()
로 ORM 객체 조회
- filter()
메서드로 조건 적용, all()
로 결과 반환
- try-finally
블록으로 세션 정리
3. ORM의 장단점
- 장점:
Python 객체
사용으로 SQL 구문 추상화, 유지보수성 향상자동 파라미터 바인딩
으로 SQL 인젝션 방지
- 단점:
- 복잡한 쿼리 최적화 시
성능 저하
가능성 고급 쿼리
처리 시 ORM 한계 존재
4. Raw SQL 기반 레포지토리 구현
- engine.connect()
로 직접 SQL 쿼리 실행, connection.execute()
사용
- :company_id
파라미터 바인딩으로 SQL 인젝션 방지
- fetchall()
로 결과 반환, row['company_name']
형식으로 데이터 접근
5. Raw SQL의 장단점
- 장점:
직접 SQL 작성
으로 성능 최적화 및 데이터베이스 기능 활용 가능쿼리 투명성
제공
- 단점:
수동 매핑
필요, 유지보수 어려움중복된 CRUD
작업 시 코드 비효율
6. 혼합 접근 방식
- 대부분의 작업은 ORM으로 처리, 복잡한 성능 최적화 시 Raw SQL
사용
- ORM의 고수준 추상화
와 Raw SQL의 정밀 조절
을 결합해 효율성 극대화
결론
- ORM을 사용해 대부분의 데이터베이스 작업을 처리하고, 복잡한 쿼리 최적화 시 Raw SQL을 사용하는 혼합 접근 방식이 실무에서 효과적
- SQLAlchemy ORM
과 Raw SQL
의 장단점을 이해하고 상황에 따라 적절히 선택해야 함