워크숍 초과 예약 방지하기

PostgreSQL 원자적 단체 예약으로 마지막 자리를 보호하고 기존 예약을 유지하며, 확인 기록 저장이 실패하면 자리 차감도 롤백합니다.

프로젝트PostgreSQL데이터베이스

💡 이 튜토리얼은 영어로 번역되었습니다. 원본을 보려면 영어로 전환

소개

워크숍 초과 예약 방지하기는 간단한 테이블을 조회하고 수정할 수 있는 학습자를 위한 PostgreSQL 프로젝트입니다. 실제 워크숍 예약을 만들고, 한 자리에 두 건의 예약 확인이 생기는 상황을 재현한 뒤, 단체 전체를 예약하거나 아무것도 변경하지 않는 재사용 SQL을 완성합니다.

가이드 실습 2개에서 정상 예약 흐름, 실제 잠금 대기, 트랜잭션 복구, 저장한 원자적 예약 구문을 배웁니다. 독립 챌린지 1개에서는 활동, 인원, 창구 처리 순서가 바뀝니다. 각 단원은 별도로 준비된 데이터로 시작하며, 결과물은 작성한 SQL과 실제 예약 장부입니다.

학습 내용

  • 확인된 단체의 정확한 인원과 남은 정원을 연결합니다.
  • 실제 연결 2개로 오래된 잔여 자리 정보에 따른 판단을 재현합니다.
  • 조건부로 자리를 확보하고 RETURNING 행을 이용해 예약 확인을 만듭니다.
  • 한 요청이 대기하는 동안 다른 워크숍은 계속 예약을 받는지 관찰합니다.
  • 자리 부족과 SQL 오류를 구분하고, 확인 기록 저장 실패 시 자리 확보도 롤백되는지 검증합니다.
  • 중단된 트랜잭션을 복구하고 기존 예약, 워크숍 정보, 준비된 도구를 보존합니다.

추천 대상

실제 데이터베이스 작업으로 구체적인 동시성 문제를 이해하려는 SQL 학습자와 초급 애플리케이션 개발자에게 적합합니다.

선수 지식: 기본 터미널 탐색, PostgreSQL 연결, SELECT, WHERE, INSERT, UPDATE. 트랜잭션, 행 잠금, psql 변수, 정수 형 변환, 데이터를 변경하는 공통 테이블 식은 사용 전에 설명합니다.

학습 환경: 브라우저에 PostgreSQL과 합성 워크숍 데이터가 준비되어 있습니다. Workshop Desk는 셸을 제공하고, Desk A와 Desk B는 한 컴퓨터의 같은 데이터베이스에 대한 독립적인 네이티브 psql 연결을 제공합니다. Python 프로그램이나 웹사이트를 만들지 않고 SQL을 작성합니다.

자주 묻는 질문

데이터베이스 잠금을 미리 이해해야 하나요?

아니요. 정상 예약부터 시작해 통제된 초과 예약과 실제 잠금 대기를 관찰한 다음 안전한 방법을 적용합니다. 위에 명시한 SQL 기초는 필요합니다.

무엇을 완성하나요?

재사용 가능한 reserve.sql 파일과 실제 단체 전체 예약 확인을 완성합니다. 워크숍마다 예약 인원과 잔여 자리를 더하면 정원과 같아야 합니다. 기능 검사에서는 기존 기록도 보존하고, 다른 격리 데이터에서 작성한 SQL을 수정 없이 실행합니다.

완전한 운영용 예약 플랫폼을 다루나요?

아니요. 하나의 PostgreSQL 데이터베이스에서 READ COMMITTED 트랜잭션을 연습합니다. 결제, 자동 재시도, 만료되는 임시 자리 확보, 분산 조정은 프로젝트 범위에 포함되지 않습니다. 챌린지에서는 가이드 실습에서 배운 원리를 독립적으로 조합합니다.

강사

labby
Labby
Labby is the LabEx teacher.