분류 전체보기

    [Django]Django ORM, 실수하기 쉬운 Queryset의 특징

    Django ORM을 작성하다보면 종종 당연히 '이렇게 수행 될거야' 라고 생각하지만 실제로는 그렇지 않은 부분들이 꽤 많이 존재한다. 이번 포스팅에서는 놓치기 쉽고 실수하기 쉬운 queryset의 특징들에 대해 다루어보려고 한다. 다음과 같은 순서로 설명을 진행하려고 한다. queryset 캐시를 재활용하지 못하는 queryset 호출 prefetch_related() 와 filter()의 올바른 사용법 서브쿼리가 발생하는 조건 values(), values_list() 사용시 주의점 Queryset 캐시를 재활용하지 못하는 queryset 호출 >>> blog_list = list(Blog.objects.prefetch_related('category').all()) SELECT "mysite2_bl..

    [Django]예제를 통해 알아보는 Django ORM이 호출하는 SQL의 구조 (feat. select_related, prefetch_related)

    이번 포스팅에서는 다양한 예시 ORM을 통해 실제로 생성되는 SQL에 대해 알아볼 것이다. 지난 포스팅에 이어 select_related(), prefetch_related() 를 중점으로 다룰 것이다. 또한, ORM이 생성하는 SQL 구조는 어떻게 되는지, 추천하는 ORM 옵션 작성 순서는 무엇인지에 대해서도 같이 알아보려고 한다. models.py from django.db import models class Blog(models.Model): name = models.CharField(max_length=50) class Category(models.Model): blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='categ..

    [Django]Django select_related() 와 prefetch_related()

    이번 포스팅에서는 Queryset의 심화 부분인 select_related() 와 prefetch_related()에 대하여 알아볼 것이다. 먼저 장고에서는 Queryset이 어떻게 구현 되어있는지 알아볼 필요가 있다. Queryset은 크게 1개의 메인 쿼리와 0~N 개의 서브 쿼리들로 구성이 되어있다. django.db.models.query.py class QuerySet: """Represent a lazy database lookup for a set of objects.""" def __init__(self, model=None, query=None, using=None, hints=None): self.model = model self._db = using self._hints = hints..

    [Django]Django ORM과 QuerySet의 특징 (LazyLoading, Caching, EagerLoading)

    이번 포스팅에서는 장고를 사용하게되면 필연적으로 접할 수 밖에 없는 Django의 ORM과 QuerySet의 특징에 대해 알아보려고 한다. 그 중에서도 LazyLoading, Caching, EagerLoading에 대해 알아볼 것이다. 이를 위해서 ORM이 무엇이고 왜 사용하는지에 대해 간략하게 알아보고 넘어갈 것이다. ORM 이란? Object Relational Mapping (객체-관계 매핑) 객체와 관계형 데이터베이스를 자동으로 매핑(연결) 해줌 데이터베이스 ↔ Object (객체를 통해 데이터베이스의 필드를 다룸) ORM을 사용하는 이유 ORM은 위에서 설명한 것과 같이 객체를 통해 데이터 베이스를 다룰 수 있는 기술을 의미한다. ORM을 사용함으로써 얻을 수 있는 장점과 단점들은 아래와 같다..

    [HAProxy]HAProxy 란?

    HAProxy 란? HAProxy는 기존의 하드웨어 스위치를 대체하는 소프트웨어 로드 밸런서로, 네트워크 스위치에서 제공하는 L4, L7 기능 및 로드 밸런서 기능을 제공한다. 설치가 쉽고 빠르기에 서비스 이중화(HA- High Availability)를 구성하는데 주로 사용한다. 로드 밸런싱이란? HAProxy 기술을 알기전에 먼저 Load Balancing 이라는 기술을 알아야 한다. Load Balancing 이란 부하 분산을 위해서 가상 IP를 통해 여러 대의 서버에 접속을 분배하는 기능을 말한다. 로드 밸런서를 사용해야 하는 이유 클라이언트의 수가 많아짐에 따라 요청의 수가 늘어나게 되면 서버에는 부하가 걸리게 된다. 이를 해결하기 위해선 크게 두가지의 방법이 존재한다. Scale-up : 서버..

    [Django]Django REST Framework 튜토리얼 6 (ViewSets & Routers)

    이번 포스팅에서는 DRF의 ViewSets & Routers 공식 문서를 공부하면서 번역해보려고 한다. 해석에 틀린 내용이 있을 수 있으니 이해가 안가는 부분은 아래의 공식문서를 참조하기 바란다. DRF ViewSets & Routers 공식 Documentation 6 - Viewsets and routers - Django REST framework REST framework includes an abstraction for dealing with ViewSets, that allows the developer to concentrate on modeling the state and interactions of the API, and leave the URL construction to be hand..

    [Vue]라이프 사이클 알아보기

    Vue 에서는 인스턴스나 컴포넌트가 생성될 때 라이프사이클(lifecycle) 이라고 정의된 몇 단계의 과정을 거친다. 즉, 인스턴스가 생성되면서 보여지고 사라지는 일련의 과정을 일컫는 말이다. 라이프 사이클은 Vue 공식 문서 에서 확인할 수 있다. Vue 인스턴스는 다음과 같은 4가지의 과정을 거치면서 진행된다. Create(생성) Mount(부착) Update(업데이트) Destroy(제거) 이 각각의 단계에서 Vue는 Hook(훅)을 할 수 있도록 여러 개의 API를 제공한다. 아래와 같은 Hook이 존재한다. beforeCreate, created beforeMount, mounted beforeUpdate, updated beforeDestroy, destroyed beforeCreate va..

    [Django]Django REST Framework 튜토리얼 5 (Relationships & Hyperlinked APIs)

    이번 포스팅에서는 DRF의 Authentication & PermissionsRelationships & Hyperlinked APIs 공식 문서를 공부하면서 번역해보려고 한다. 해석에 틀린 내용이 있을 수 있으니 이해가 안가는 부분은 아래의 공식문서를 참조하기 바란다. DRF Relationships & Hyperlinked APIs 공식 Documentation 5 - Relationships and hyperlinked APIs - Django REST framework At the moment relationships within our API are represented by using primary keys. In this part of the tutorial we'll improve the ..

    [Django]Django REST Framework 튜토리얼 4 (Authentication & Permissions)

    이번 포스팅에서는 DRF의 Authentication & Permissions 공식 문서를 공부하면서 번역해보려고 한다. 해석에 틀린 내용이 있을 수 있으니 이해가 안가는 부분은 아래의 공식문서를 참조하기 바란다. DRF Authentication & Permissions tutorial 공식 Documentation 4 - Authentication and permissions - Django REST framework Currently our API doesn't have any restrictions on who can edit or delete code snippets. We'd like to have some more advanced behavior in order to make sure tha..

    [Django]Django REST Framework 튜토리얼 3 (Class-based Views)

    이번 포스팅에서는 DRF의 Class-based Views 공식 문서를 공부하면서 번역해보려고 한다. 해석에 틀린 내용이 있을 수 있으니 이해가 안가는 부분은 아래의 공식문서를 참조하기 바란다. DRF Class-based Views tutorial 공식 Documentation 3 - Class based views - Django REST framework We can also write our API views using class-based views, rather than function based views. As we'll see this is a powerful pattern that allows us to reuse common functionality, and helps us keep ..