본문 바로가기

Django

(Django) 비즈니스 로직을 어디에 모아둘까 비즈니스 로직을 어따모아둘까.. 🤔 루비온레일즈, 장고를 쓸 때마다, 도메인 관리에 대한 프레임이 정해져있지 않은 듯하여 매번 고민이다.  But. Djagno엔 QuerySet, Form Object 개념이 기본으로 포함되어 있어서, 좋다. 레일즈에서는 레이어를 만들거나, 라이브러리를 사용해야한다.  ( 참고 - 레일즈에 Service/Decorator Layer 적용하기 🐜🐜..
2019년 1월 4째주 로그 #Pocket - DjangoA. Where to Put Business Logic in Django이거슨 길어져서 요기에 정리해두었다.B. Python @property루비에서는 get_XXX 메서드를 사용하지 않았다. 파이썬에서는 Property와 get_XXX메서드를 구분해서 써서, 어떤 경우에 Property를 써야하는지 궁금해졌다.요 글을 후르르륵 읽고, 대충 내가 정한 기준은 다음과 같다.property..
(PostgreSQL) JSON VS JSONB RDB에 JSON 포맷을 저장할 때, 평소처럼 텍스트 포맷으로 저장할지, JSON Format을 적용할지 고민하게 된다. 뫼비우스의 띠 같은 삶을 사는 나는 딱 1년전에도 비슷한 고민을 했었다.( 작년에 조사한 글 :  👉 [MariaDB]RDB 속에서 NOSQL 사용하기 👈)작년에는 리서치만 해보고 말았는데, 올해에는 PostgreSQL에 JSON 타입을 실제로 적용해봐야겠다. 🐜🐜🐜고..
(Django) Django ORM에서 Row Lock 잡기 - select_for_update Row Lock과 SELECT * FOR UPDATEUPDATE / DELETE 없이, SELECT 만으로 Row Lock을 잡고 싶을 때는, "SELECT * FOR UPDATE" 쿼리를 사용하면 된다.이렇게 Row Lock을 잡고있는 도중에는 다른 트랜잭션에서 해당 Row를 변경 / 삭제할 수 없다. select_for_updateDjango에서 SELECT * FOR UPDATE 쿼리를 사용할 때는, Django ORM sel..
(PostgreSQL)Idle in transaction 프로세스 자동으로 죽이기 문제 상황postgresql에서 transaction이 잡혀있지만, 아무것도 하지 않으면, 세션의 상태는 idle in transaction이 된다.그런데 얘가 connection은 쥐고 있지만, 아무것도 안한다면 서버 자원을 잘 활용하지 못하게 된다. ( 참고 - (Django)PostgreSQL의 Idle In Transaction Connection )그러면 connection이 무한대로 늘어난다거나, connection이 필..
(Django)데이터베이스 커넥션을 관리하는 방법  Connection 재사용Django는 데이터베이스에 쿼리를 처음 날리기 전에 Connection을 맺는다. 그리고 커넥션을 계속 열어뒀다가, 다음 요청이오면 이걸 재사용한다. Request가 날라올 때마다 Connetion을 새로 맺는건 부담이 큰 작업이다. 그래서 Django에는 CON_MAX_AGE라는 설정값이 있다. 여기에 설정된 기간만큼 Connection을 닫지않고, 보존하겠다는 개념이다. 따로 설정해주지 않..
(PostgreSQL) OOM Killer PostgreSQL 서버에 Out Of Memory가 발생하는 경우, PostgreSQL 자체를 재부팅해야지만 복구할 수 있다. 메모리가 부족해지고, Swap 영역이 증가하게 되면 Linux Kernel의 OOM Killer가 프로세스를 죽이게 된다. 그러면서 부족해진 메모리를 늘리고, Swap 영역을 줄인다. 이러면, 서버에 접속할 수 없는 수준으로 서버가 고장나는 일은 막을 수 있다. 그러나 OOM Killer가 Ses..
(PostgreSQL) work_mem 메모리 설정 postgresql의 work_mem이란? 이 값은 정렬 /  해시 / 조인 등의 동작에 사용될 수 있는 메모리 사용량을 의미한다.   이 메모리는 임시 디스크에 데이터를 쓰기 전에 사용된다.  기본값은 4MB으로 설정된다. 그런데 어떤 아티클에서는 일반적으로 64MB 정도가 적합한 수치라고 한다.  만약 PostgreSQL이 temporary file을 사용하고 있다면, work_mem을 늘리면 좋다..