2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[백엔드] 기술 면접 Top30 - #14 ORM이란?

2023. 9. 19. 10:04ㆍ[백엔드] 기술면접
반응형

ORM

 

ORM이란?

  • ORM은 "Object-Relational Mapping"의 약자로, 객체 지향 프로그래밍 언어와
    관계형 데이터 베이스 간의 데이터 변환을 자동화하는 기술이다.

  • ORM은 데이터베이스 테이블을 객체로 매핑하고, 객체 간의 관계를 유지하면서
    데이터를 검색, 삽입, 업데이트 및 삭제할 수 있도록 도와준다.

  • 대표적인 ORM 프레임워크로는 Django ORM, SQLAlchemy, Hibernate 등이 있다.

장점

1. 간편한 사용

  • ORM은 SQL 쿼리 대신 객체 지향 코드를 사용하여 데이터베이스와 상호 작용할 수 있어,
    데이터베이스 작업을 더 쉽게 할 수 있다.

2. 객체 지향 프로그래밍과의 호환성

  • ORM은 객체 지향 언어와의 호환성을 제공하기 때문에 데이터베이스와 객체를
    일치시킬 수 있으며, 코드의 가독성과 유지 보수성을 향상시킬 수 있다.

3. 데이터베이스 종속성 감소

  • ORM은 데이터베이스에 대한 구체적인 SQL코드를 숨기고, 데이터베이스 변경에 대한 비용을 줄일 수 있다.

단점

1. 성능 문제

  • 복잡한 쿼리나 대량 데이터 조작 작업을 수행할 때 ORM은 종종 SQL 쿼리에 비해 성능이 떨어질 수 있다.
  • 일부 ORM 라이브러리는 효율적인 SQL쿼리를 생성하지 못할 수 있다.

2. 학습 곡선

  • ORM을 사용하려면 ORM 라이브러리 및 개념을 배워야 하며, 초기 학습 곡석인 존재한다.

3. 제약 사항

  • ORM은 데이터베이스의 특정 기능을 모델링하기 어려울 수 있으며, 일부 고급 데이터베이스 작업이 어려울 수 있다.

ORM을 사용하며 쿼리가 복잡해지는 경우 해결 방법

1. Native SQL 사용

  • ORM을 사용하면서 복잡한 쿼리를 수행해야 하는 경우 ORM이 제공하는 SQL을 직접 작성하는 방법이다.
    이를 통해 최적화된 쿼리를 사용할 수 있다.

2. 인덱스 및 성능 최적화

  • ORM은 종종 성능 최적화를 자동으로 수행하지 않기 때문에, 데이터베이스 인덱스를 적절히 설계하고,
    쿼리 실행 계획을 분석하여 성능을 향상시켜야 한다.

3. ORM 기능 활용

  • ORM 라이브러리는 복잡한 쿼리를 작성하는 데 도움이 되는 다양한 기능을 제공해준다.
    예를 들어 ORM의 집계 함수나 서브쿼리 기능을 활용하면 복잡한 데이터 검색을 단순화할 수 있다.

4. 캐싱 활용

  • ORM은 데이터베이스 쿼리 결과를 캐시하여 성능을 향상시키는 기능을 제공하며, 반복적인 쿼리를 최소화할 수 있다.

 

반응형