본문 바로가기

django3

[Database] N + 1 1. N + 1 Database에서 Query 1번으로 N건의 자료를 가져오고 각 건에 대하여 데이터를 조회하려고 할 때, 각 건마다 Query가 추가로 발생하는 현상 이는, 주로 Lazy Loading의 특성을 가진 ORM에서 많이 발생하고 아래 예시를 통해 보게 되면, * Lazy Loading : ORM의 객체를 통해 데이터가 처리되는 순간 Query가 발생 Ex : 과일 테이블에서 가격이 1만원 미만인 과일의 이름들의 배열을 얻고자 할 때, SQL문을 이용하면 Query 1회로 데이터를 얻을 수 있다. 하지만 ORM을 통하면 Code에 for문이 필요하고, 그로 인하여 N + 1 현상이 발생한다. 이는 DB에 불필요한 Query를 많이 발생시켜, 성능을 저하시키는 큰 요인이 된다. 하지만 대부분의.. 2023. 4. 12.
[Django] Django란? 최근에 개발을 시작한 사람들 중 많은 사람들이 Python을 사용해 봤을 것이다. 또한, 대중적인 Python을 이용하여 웹 개발을 시작하는 사람들도 많이 생겨났다. [사진 : Stackoverflow의 프로그래밍 언어 질문 수의 동향 그래프] 최근에 인기를 끌고있는 Python에서는 가장 대중적인 웹 개발 프레임워크가 3개 존재하는데, Flask / Django / Fast-api가 있다. 해당 글에서는 이 중 Django에 대하여 알아볼 것이다. Django의 홈페이지에서 소개하는 글이다. Django는 소개에서 보는 것처럼 보다 적은 코드로 웹앱을 빠르게 개발하는 것을 지향하고 있다. 또한, 다른 프레임워크들과는 다르게 Django는 Front-End, Back-End를 모두 개발할 수 있는 Ful.. 2023. 2. 6.
[Database] ORM(Object-Relational Mapping) ORM (Object-Relational Mapping) : 객체와 관계형 데이터 베이스의 데이터를 자동으로 매핑해주는 것을 의미 Java와 같은 객체 지향 프로그래밍 언어들은 클래스를 선언하여 인스턴스에 정보를 저장하는 것처럼 관계형 데이터 베이스는 테이블을 생성하고 스키마를 기반으로 인스턴스에 정보를 저장한다. 여기서 클래스와 테이블은 모델 간의 불일치가 존재하고, 이를 ORM을 통해 객체 간의 관계를 바탕으로 Query문을 자동으로 생성하여 불일치를 해결한다. ORM의 간단한 예시로 SQL query문과 Python의 웹 프레임워크인 Django의 queryset을 비교해볼 수 있다. Example : # SQL SELECT ID FROM USER WHERE AGE = 50; 이는 SQL query.. 2022. 12. 23.