2022 10기 방학 백엔드 세션 #1

HufsGlobal·2022년 9월 21일
1
post-thumbnail

2022년 하계 방학 첫 백엔드 세션은 간단하게 Django의 ORM을 세션으로 진행하게 되었습니다!

ORM이란 Object Relational Mapping의 약어로 SQL문을 다음과 파이썬 언어에서 사용할 수 있도록 해주는 기술입니다.

Django의 ORM이 쿼리셋(Queryset)이라는 자료형을 사용함에 따라 가지는 세가지 특징을 중심으로 알아보았습니다!

1. Lazy loading

: 쿼리셋은 필요한 시점에만 SQL문을 호출한다는 특징 입니다.

users = User.ojbect.all()

user_1 = users[0]
users_list = list(users)

Django의 Lazy loading이라는 특징 때문에 이런 경우에는 user_1에서 users의 첫번째 요소를 호출, users_list에서 users에 담긴 User 모델을 리스트화하면서 users의 첫번째 요소가 두 번 호출되는 문제점이 생깁니다.

Caching

: 위의 이런 문제점은 쿼리셋의 Caching이라는 특징을 통해 해결가능합니다. 쿼리셋에서 SQL을 호출하면 그 데이터 결과 값은 캐시 메모리에 저장되고 이후 동일한 쿼리셋을 사용할 경우 추가적인 Query는 발생하지 않고 캐시에서 꺼내 사용하는 특징인데요, 위의 코드 같은 경우

users = User.ojbect.all()

users_list = list(users)
user_1 = users[0]

로 순서만 바꿔줘도 간단하게 SQL의 중복 호출을 방지할 수 있습니다!

Eager Loading

: 쿼리셋은 기본적으로 Lazy loading이라는 특징을 갖지만 SQL로 한번에 많은 데이터를 끌어오고 싶을 때 사용되는 특징입니다.

Django에서 지원하는 Eager loading의 메소드는 크게 두 가지가 있는데요,

  • Selected_related는 SQL의 JOIN을 사용하여 쿼리셋을 불러올 때 related objects까지 불러와 Cache에 저장하는 방식을 사용합니다.
  • prefetch_related는 데이터베이스 내에서 JOIN이 발생하지 않고, 2개의 테이블을 각각 불러들여 ORM에서 결합하는 방식을 사용합니다.

이번 세션을 통해 한단계 더 발전한 백엔드 개발자가 될 거라도 생각합니다!🤩
다들 고생하셨습니다~~. 다음 세션때 뵈어요. 🙌

profile
한국외국어대학교 글로벌캠퍼스 멋쟁이 사자처럼

0개의 댓글