목록 보기
두숟갈 스터디 - 5
기타

두숟갈 스터디 - 5

8퍼센트
8퍼센트
2017년 7월 25일

무엇을 공부했나요? Two scoops of Django 7장은 Django의 쿼리 및 데이터베이스 레이어에 대해 공부하였습니다. 현주님께서 7장의 자료를 요약 및 설명해주셨고, 호성님께서 관련 심화 자료를 준비해 발표해주셨습니다. 스터디중 다루었던 이야기들은 아래와 같습니다. 7장 쿼리와 데이터베이스 레이어 장고에서는 여러 종류의 데이터를 데이터베이스 종류와는 독립적인 형태로 객체화 한다(ORM). 그리고 생성된 객체에는 상호 작용할 수 있는 메서드 세트를 제공한다(Model Manager). 상세 페이지 view에서는 get() 대신에 get_object_or_404()를 이용하자 단, get_object_or_404()는 뷰에서만 사용하자! 예외를 일으킬 수 있는 쿼리는 try-except문을 통해 ObjectDoesNotExist 또는 DoesNotExist MultipleObjectsReturned 쿼리를 좀 더 명확하게 하기 위해 지연 연산 이용하기 - 데이터가 정말로 필요하기 전 까지는 장고가 SQL을 호출하지 않는 특징을 활용하여, 한 줄에 길게 쓰는 대신에 여러줄에 나눠서 쓰면 가독성을 엄청나게 향상시키며, 유지보수를 쉽게 해준다. 고급 쿼리 도구 이용하기 - 쿼리 표현식: 프로젝트의 안전성과 성능을 향상 Query Expressions (공식문서) - 데이터베이스 함수들: 쉽고 간결하며 성능이 향상 Database Functions (공식문서) 필수 불가결한 상황이 아니라면 로우 SQL은 지양하자 필요에 따라 인덱스를 이용하자 트랜젝션 (Transactions) 각각의 HTTP 요청을 트랜잭션으로 처리하라 명시적인 트랜잭션 선언 django.http.StreamingHttpResponse와 트랜잭션 해당 뷰를 django.db.transaction.non_atomic_requests 데코레이터로 감싸기 심화학습 ObjectDoesNotExist vs DoesNotExist - 특정 모델이 없을때를 except로 처리 할지 아닐지 iterator() vs all() - caching 의 여부, client side cusor or server side cusor db index의 원리 Explain 을 활용한 쿼리 예상시간 및 수행시간 Transaction ACID ipython notebook과 Django ORM을 통해 값 검증 및 데이터 추출 등을 자주하고 있어 낯설지는 않은 부분이었습니다. 막연하게 알고 있었던 db_index나 Transaction ACID 부분을 정확하게 짚고 넘어 갈 수 있어서 좋았습니다. 어땠나요? 지난 1년 8개월동안 아무것도 모르는 상태에서 개발을 공부해가면서 서비스에 기여해 왔습니다. 초기에는 업무만 하면서도 저의 지식이 늘고 있음을 느낄수 있었습니다. 하지만 시간이 흐를수록 저의 성장속도보다 회사의 성장속도가 더 빨라졌습니다. 점점 회사에 기여할수 있는 부분이 적어졌고, 고객분들에게 그리고 동료분들에게 가치를 제공하면서 받는 즐거움도 작아지고 있었습니다. 이번 스터디를 통해 저의 성장곡선의 기울기를 증가시키는 계기로 삼으려고 합니다.

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...