ORM
-
Django ORM 잘 알고 쓰자! 특히 JOIN 할때!💻 프로그래밍/Django 2022. 8. 3. 16:54
안녕하세요! 개발자 Jay입니다~! 최근에 신규 서비스에 소셜 기능 피쳐를 개발했습니다. 플랜에 좋아요, 댓글을 붙이는 기능이었는데 좋아요 개수와, 댓글 개수를 함께 노출해야 하는 요구사항이 있었습니다. 위 이미지처럼 인스타그램의 좋아요 개수를 표시하는 것과 동일한데요, 추가로 댓글의 개수도 노출되는 기능입니다. 자 그러면 모델링과 ORM을 보면서 문제를 설명드리겠습니다. 1. django ORM 간단히 모델 관계를 보여드리면 이렇습니다 (세부 필드 제거) 되게 간단합니다. Plan, Account가 PlanComment(댓글), PlanLike(좋아요)에 manyTomany로 연결되어 있는 형태입니다. 요구사항에 맞게 쿼리셋을 가져올 때 댓글, 좋아요 개수를 가져오도록 ORM을 작성했습니다. annot..
-
update_or_create()하는데 갑자기 Dead Lock 너는 왜나오냐?! (feat. transaction)💻 프로그래밍/Django 2020. 10. 26. 20:01
안녕하세요! 운동하는 개발자 제이입니다! 오늘은 Dead Lock과 Transaction에 대해서 알아보려고 합니다! 회사에서 종종 위 이미지와 같은 센트리 리포팅을 볼 수 있었는데, Deadlock (교착상태)에 대해서 개념은 알고 있었지만 실제로 코드상에서 왜 Deadlock이 나는지 정확한 이유를 알진 못했습니다. 시니어 개발자분께서 transacion log를 보여주시면서 설명은 해주셨는데, 그냥 그렇구나 하고 넘어갔던 것 같아요(이러면 안 됩니다 여러분 ㅎㅎ) 최근에 DB에 대해서 좀 더 관심이 생겨서 이 Deadlock에 대해서 실제 django orm을 보면서 알아보려고 해요. 1. Dead-lock 그리고 Transaction 일단 간단히 Deadlock이 뭔지 transaction이 뭔지..
-
쿼리를 줄이자! select_related vs prefetch_related💻 프로그래밍/Django 2019. 7. 21. 22:48
안녕하세요:D! 운동하는 개발자 Jay입니다. 회사에서 코딩을 하면서 가장 많이 했던 실수(지금도 하지만..) 중 하나가 불필요한 쿼리를 보내는 것이었습니다. 사실 SQL문에 대해 잘 알지도 못한 상태이기도 했고, 쿼리 보내는 코드를 잘 못 사용할 경우 서버가 다운될 수 도 있다는 생각 조차 하지 못했기 때문에...ㅎㅎ(로컬에서만 테스트하면 그럴 일이 없기 때문에..) 무튼 쿼리를 잘못 짜면, 반복적인 쿼리로 인하여 서버가 다운이 될 수 도 있습니다. 오늘은 Django ORM 사용할 때 Query 개수를 줄일 수 있는 방법 중 select_relaed, prefetch_related에 대해서 간단히 알아보도록 하겠습니다. * 쿼리셋과 캐싱 (알고 가야 할 내용) 각각의 쿼리셋은 DB에 Access 할 ..