Skip to content

Refactor: 예약 요청 저장 로직 수정#33

Merged
daeyoung0726 merged 6 commits intomainfrom
refact/reservation-check
Aug 21, 2025
Merged

Refactor: 예약 요청 저장 로직 수정#33
daeyoung0726 merged 6 commits intomainfrom
refact/reservation-check

Conversation

@daeyoung0726
Copy link
Copy Markdown
Member

개요

  • 예약 요청 과정에서 예약 내역이 있는지 확인 로직 존재 (이중 구조로, Redis에 없으면 DB에서 존재 여부 파악)
    → 클라이언트측에서 예약자는 예약 요청을 막아 예약을 한 인원이 요청을 보낼 확률이 적음 → 불필요 조회 로직 발생 많아짐
  • DB 유니크 속성을 통해서 중복 예약 요청을 제거
  • ++ 시간대 예약 락 범위 수정이 필요 (기존에는 특정 시간대에도 가게 전체가 락이 걸려 동시 요청 처리 효율성이 떨어짐)

구현사항

  1. 중복 예약 방지를 위한 필드 추가 (유니크 속성에 사용) (6c339e1)

    • DB에 아래와 같이 사용자 정보, 가게 정보, 날짜, 예약 활성화 여부를 통해 Unique 설정
       CREATE UNIQUE INDEX uq_active_reservation
       ON queue_reservation(user_id, restaurant_id, date, active_flag);      // timeslot(시간대)도 똑같이 설정
      
      동작 과정 :
      1. 가게 예약 성공 → 예약 활성화 여부(active_flag)가 true로 설정 → 유니크 속성으로 중복 예약 방지
      2. 가게 예약 취소 및 입장 → 예약 활성화 여부(active_flag)가 null로 설정 → DB에서 null은 unknown이기에 유니크 속성 동작 x → 다시 예약 가능
  2. 예약 중복 저장시, 예외 발생 (dfefee2)

    • 기존 예약 확인을 위한 조회 로직 삭제
    • 예약 정보 존재 시, 예외를 발생시키며 이전에 처리된 예약 번호 증가를 원상복구
  3. 시간대 예약 락 범위 축소 (가게 + 예약 날짜 + 시간대) (8bcb4f3)

    • 기존에는 시간대 예약에서 가게 단위로 락을 설정 → 다른 날짜 및 시간대라도 가게에 락이 걸려 동시 처리가 떨어짐
    • 가게 + 예약 날짜 + 시간대를 통해 락을 설정하여 동시 처리 효율성 증가

@daeyoung0726 daeyoung0726 self-assigned this Aug 21, 2025
@daeyoung0726 daeyoung0726 merged commit 33bbfe9 into main Aug 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant