본문 바로가기

RDS

(2)
동기와 비동기 그 미묘함에 관하여 데이터베이스가 있고 REST API 서버의 ORM 을 사용해서 CRUD 를 하는 서버가 있다고 가정하자 (사실 대부분이 그렇다.) Read 를 제외한 나머지 Create , Update , Delete 는 왠만하면 트랜잭션을 걸고 에러가 나면 롤백을 하고 모든 에러가 없다고 판단이 되면 커밋을 하는 방식일거다. 위의 로직을 유저 테이블로 예제로 예를 들면 회원가입 API 에서는 유저 생성 -> ( 참조테이블 핸들링 , 뭐 어떤거, 뭐 어떤거 Update , 뭐시기 ) -> 유저테이블 쿼리 -> 반환 이런 로직일텐데 동기 코드로 짯다고 하면 (문법적 에러가 없고 데이터베이스 , ORM 모두 연결이 잘 설정 되어 있다고 가정) 분명 동기코드로 커밋을 했는데 유저테이블 쿼리를 할때 record not foun..
사용자 차단 쿼리를 어떻게 짤까? (RDS) REST API 서버에 거의 모든 기능을 다 짯을 무렵, 사용자 차단에 대한 이슈가 올라왔다. ( 사실 까먹고 있었음 ) 사용자 차단은 회원탈퇴에 대한 소프트 딜리트로 처리해주는 것과 별반 다를거 없다고 생각했다. 여기서 소프트 딜리트란? 데이터베이스에서 완전 삭제하는게 아닌 DeletedAt 이라는 컬럼에 트랜잭션을 실행한 시간을 표기하는 것으로 DeletedAt 컬럼이 NULL 이 아닐경우 일반 쿼리를 했을때 유저입장에서 조회가 되지 않는 기능을 말한다. 소프트딜리트는 상당히 편한기능이다. 예를들어 Join 한 테이블을 가지고 조회만 안되게 하려면 WHERE 절에서 deleted_at is null 이라고만 적어두면 반환되는 리스트에서 제거되게 된다. 그럼 사용자 차단도 소프트딜리트와 비슷한 로직으로..