ワークショップの定員超過を防ぐ

PostgreSQL でグループ全員の予約を原子的に処理し、既存予約を保ちながら、確認の書き込みに失敗した場合は枠の確保も取り消します。

プロジェクトPostgreSQLデータベース

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

ワークショップの定員超過を防ぐは、簡単なテーブルの検索と更新ができる人向けの PostgreSQL プロジェクトです。実際に予約し、残り1枠に2件の予約確認が生まれる状況を再現して、グループ全員を予約するか、何も変更しない再利用可能な SQL を作ります。

2つのガイド付きラボで、通常の予約、実際のロック待ち、トランザクションの復旧、保存した原子的な予約文を学びます。1つの独立したチャレンジでは、活動、人数、窓口の処理順を変えます。各単元には独立した初期データがあり、成果物は自分の SQL と実際の予約台帳です。

学習内容

  • 確認済みグループを正確な人数と残り定員に対応付ける。
  • 2つの実際の接続で、古い空き情報に基づく判断を再現する。
  • 条件付きで枠を確保し、RETURNING の行から予約確認を作る。
  • ある要求の待機中にも、別のワークショップが予約を受け付ける様子を観察する。
  • 枠不足と SQL エラーを区別し、確認の失敗が枠の確保もロールバックすることを確かめる。
  • 中断されたトランザクションを復旧し、既存予約、ワークショップ情報、用意されたツールを保持する。

このコースの対象者

実際のデータベース操作を通じて具体的な同時実行の問題を理解したい SQL 学習者や初級アプリ開発者に適しています。

前提知識:基本的なターミナル操作、PostgreSQL への接続、SELECT、WHERE、INSERT、UPDATE。トランザクション、行ロック、psql 変数、整数への型変換、データを変更する共通テーブル式は、使用前に説明します。

学習環境:ブラウザに PostgreSQL と合成ワークショップデータを用意しています。Workshop Desk はシェル、Desk A と Desk B は同じ1台のマシン上の同じデータベースへの独立したネイティブ psql 接続です。Python プログラムや Web サイトを作らず、SQL を記述します。

よくある質問

データベースのロックを事前に理解している必要はありますか?

ありません。通常の予約から始め、管理された定員超過と実際のロック待ちを観察してから、安全な方法を適用します。上記の SQL の基礎は必要です。

何を提出しますか?

再利用可能な reserve.sql ファイルと、グループ全員分の実際の予約確認です。各ワークショップでは、予約済み人数と残り枠の合計が定員に一致する必要があります。機能チェックは既存レコードも保護し、別の隔離データで SQL を書き換えずに実行します。

本番用の完全な予約プラットフォームを扱いますか?

扱いません。単一の PostgreSQL データベースで READ COMMITTED トランザクションを練習します。決済、自動再試行、期限付きの仮押さえ、分散協調は対象外です。チャレンジではガイド付きラボで学んだ仕組みを自力で組み合わせます。

講師

labby
Labby
Labby is the LabEx teacher.