<오늘 한 일/>
- 데일리 과제[Django 50문 50답]
- Django ORM에서 queryset과 object의 차이점에 대해서 설명하시오
- QuerySet
- 먼저 QuerySet은 모델을 대상으로 쿼리를 작성하는 데 사용하는 Django ORM의 객체로, 데이터베이스로부터 특정 조건에 맞는 결과를 가져오기 위한 필터링, 정렬, 슬라이싱 등 다양한 쿼리 작성 기능을 제공합니다.
- 데이터베이스로부터 여러 레코드를 조회할 때 QuerySet이 반환되며, QuerySet은 이런 데이터 집합의 타입입니다.
- QuerySet은 "lazy evaluation"이라는 특징이 있어, 값을 실제로 사용할 때 데이터베이스에 쿼리를 실행합니다. 즉, QuerySet의 평가를 연기하여 최적화를 도모하는 메커니즘이 적용되어 있습니다.
- Object
- 다음으로 Object는 데이터베이스의 특정 레코드를 나타내는 모델 클래스의 인스턴스로, 모델의 생성, 저장, 삭제, 업데이트와 같은 작업을 통해 데이터베이스 상의 레코드를 조작하는 데 사용됩니다.
- 데이터베이스로부터 단일 레코드를 조회할 때 모델 인스턴스 (즉, Object)가 반환됩니다. Object는 개별 데이터 항목을 나타냅니다.
- 따라서 QuerySet은 데이터베이스에서 조회된 레코드의 집합을 나타내는 반면, Object는 개별 레코드를 나타내는 모델 클래스의 인스턴스입니다.
- (예상)추가질문: QuerySet의 평가가 무엇이고, 연기를 하지 않으면 어떻게 되나요?
- QuerySet의 평가란 QuerySet이 데이터베이스에서 실제 데이터를 조회하여 메모리에 데이터를 로드하는 과정을 의미합니다. QuerySet의 평가를 연기한다는 것은 QuerySet이 정의될 때 즉, 데이터를 조회할 조건을 생성하는 부분마다 매번 데이터를 조회하는 것이 아니라, 데이터를 실제로 불러오는 all이나 get 메서드를 사용했을 때 데이터가 조회되는 것을 말합니다. 만약 평가 지연없이 조건을 걸 때마다 평가한다면 웹 어플리케이션이 불필요하게 많은 쿼리를 수행하게 되고 이는 성능 저하, 리소스 낭비, 데이터 선택성 저하, 코드 복잡성 증가라는 단점으로 나타납니다.
- (예상)추가질문: QuerySet을 평가하는 메서드는 all, get 말고 또 뭐가 있나요?
- first, last, count, exists 등이 있습니다.
- first는 조회된 데이터 중 첫 번째 데이터만 반환하고, last는 마지막 데이터만 반환합니다. 결과가 없다면 None을 반환합니다.
- count는 조회된 데이터의 개수를 반환하고, exists는 데이터의 존재 유무를 True나 False로 반환합니다.
- QuerySet
- Django ORM에서 정참조와 역참조에 대해서 설명하시오
- Django ORM에서 정참조(Forward Reference)와 역참조(Reverse Reference)는 모델 간의 관계를 나타낼 때 사용되는 용어입니다. 데이터베이스의 관계형 테이블에서 ForeignKey, OneToOneField 및 ManyToManyField를 사용하여 서로 다른 테이블의 레코드를 연결할 수 있습니다.
- 정참조란 한 모델이 다른 모델을 참조하는 방향입니다. 예를 들어, 두 개의 모델이 있고 하나의 모델이 다른 모델을 ForeignKey, OneToOneField 또는 ManyToManyField 등으로 참조할 경우 정참조 관계가 적용됩니다.
- 역참조는 ForeignKey나 OneToOneField, ManyToManyField가 없는 모델이 있는 모델을 반대로 참조하는 것을 말합니다. 역참조를 설정하려면 related_name 매개 변수를 사용하여 역참조 이름을 직접 지정할 수 있습니다.
- 버디 멘토링
- 오늘은 멘토링에서 서로 이력서를 리뷰해줬다
- 완전 이력서 마무리 느낌
- 알고리즘 문제 풀이
- https://guco.tistory.com/297
- 오랜만에 풀었다..!
<느낀 점/>
- 오늘 질문만 엄청 저장해놓고 답변은 많이 못 달았다...
- 휘리릭 찾아서 답변 다는데도 오래 걸린다
- 그래도 오랜만에 알고리즘 문제 풀어서 뿌듯..!!
- 내일부터는 진짜 이력서를 내볼까 한다...
<내일 목표/>
- 3~5군데 지원하기
- 알고리즘 문제 풀이