개발 일지/개인 회고

[Main Project] 서비스 실시간 update

개발하는 동그리 2022. 9. 27. 11:52

<호텔 예약시 잔여 Room 개수 최신화 >

 

CASE 1


# Room예약 기간 (01.26 ~ 01.29)로 예약한다고 가정한다. 

총 잔여 방 갯수 : 10개
예약 1 (01.03 ~ 01.05) : 방 3개 예약 / 잔여방 7개
예약 2 (01.07 ~ 01.09) : 방 4개 예약 / 잔여방 6개
예약 3 (01.10 ~ 01.13) : 방 8개 예약 / 잔여방 2개

-개념- 
(01.26 / 01.27 / 01.28 / 01.29) 반복문을 통해서 예약 기간동안 하루 일 단위로 나누어 데이터베이스에 저장하여 관리

-초기화 방법-
각 데이터베이스에 저장된 날짜별로 조회하여 현재 사용중인 방의 총 개수를 파악해서 현재 예약 가능한 방 수를 계산한다.

- 잔여 방 개수 Counting -
예약 DB에서 해당 날짜 예약건을 모두 조회 후 더하면 끝 

-관리-
관리 측면에서도 필드에 예약번호를 추가해서 기간으로 예약했을 때 기간으로 묶음조회도 가능하고, 일별 조회 관리도 가능하게 된다. 

 

CASE 2


# 위와 동일하게 Room예약 기간 (01.26 ~ 01.29)로 예약한다고 가정한다.

총 잔여 방 갯수 : 10개
예약 1 (01.03 ~ 01.05) : 방 3개 예약 / 잔여방 7개
예약 2 (01.07 ~ 01.09) : 방 4개 예약 / 잔여방 6개
예약 3 (01.10 ~ 01.13) : 방 8개 예약 / 잔여방 2개

- 방법 -
예약은 기간으로 저장한다. 오늘 날짜가 checkIn 날짜와 동일하면 방 개수를 차감하고 오늘 날짜가 checkOut 날짜가 되면 방 갯수를 초기화해서 방 개수를 관리. (단점으로는 checkIn 날짜가 되어야 방 갯수가 줄어들 기 때문에 해당 날짜가 되기 전 미리 파악할 수 없는 헛점이 발생한다. 보완할 수 있는 아이디어가 필요) 

방 조회시 위 방법 수행 

- 잔여 방 개수 Counting -
Query를 사용해서 내 예약 범위 내에 다른 예약을 조회하고 Counting해서 계산했으나, Query문 자체로도 굉장히 복잡하고 로직을 구성하는데 이슈가 많이 발생했다. (원하는대로 계산이 어려움)

-장점- 
오늘 날짜를 기준으로 해서 CheckOut날짜보다 이후가 될 경우 RoomCount를 다시 초기화 시켜준다는 개념이 좋다.

 


따라서 우리는 Case 1 방식으로 선택했다.
예약 관리 측면이나 논리가 명확하다고 판단했다. 다만 아쉬운 것은 예약기간을 하나로 저장할 수 있었던 것을 일 단위로 나누어 저장한다는 측면때문에 데이터가 방대해진다는 단점이 있는데, 사실 이 부분도 숙소 하루 수용량이 기하급수적으로 늘어나는 것이 아니라 정해져있기 때문에 통제가 가능한 범위 내에 있기 때문에 단점이라고 보기는 어려울 것 같다.