タイムスタンププロトコルによるトランザクション・スケジューラのシミュレータ

Data

概要

このリポジトリは、大学のデータベース科目の課題として作られた「タイムスタンププロトコル」によるトランザクション・スケジューラのシミュレータです。Pythonで実装され、仮想環境を有効化して src/main.py を実行することで、トランザクション操作列を解析して読み取り/書き込みの衝突判定を行い、許可・中止などの決定を出力ファイル(TXT)へ記録します。実行ログのサンプルファイルも含まれており、教育的にプロトコルの振る舞いを追いかけるのに適しています。GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 1
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 4
  • メインの言語: Python

主な特徴

  • タイムスタンプ(timestamps)プロトコルを模擬したトランザクション・スケジューラを実装
  • 実行結果をテキストファイルへ出力するログ機能を搭載(実行ログのサンプルあり)
  • Python 製で教育用途・学習用途に適した軽量なコードベース
  • 仮想環境から簡単に実行可能(README に実行手順を記載)

技術的なポイント

本プロジェクトは「タイムスタンプ順序付け(timestamp ordering)」に基づく並行制御アルゴリズムをシミュレートします。基本的な考え方は、各トランザクションに一意のタイムスタンプ TS を割り当て、データアイテムごとに最新の読み取りタイムスタンプ readTS(X) と書き込みタイムスタンプ writeTS(X) を保持しておくことです。トランザクション T の操作が来たとき、読み取り操作 read(X) は T.TS < writeTS(X) ならば古い読み取りで矛盾が生じるため中止(または再実行)を要求し、T.TS >= writeTS(X) であれば読み取りを許可して readTS(X) を更新します。書き込み操作 write(X) は T.TS < readTS(X) の場合、既により新しいトランザクションが X を読んでいるため矛盾を起こすので中止します。一方で T.TS < writeTS(X) だが readTS 条件は満たす場合、Thomas の書き込みルールに従い古い書き込みを「スキップ(効果なし)」として扱う実装方針も取れます。シミュレータはこれらの判定を順に行い、許可・中止・スキップ等の決定をログに記録します。

実装面では、src/main.py がエントリポイントとなり、入力となる操作列(ハードコードまたは外部定義)を逐次処理してタイムスタンプと各データアイテムの read/write タイムスタンプを更新します。出力は execution_log_YYYYMMDD_hhmmss.txt のようなファイルに手続きログを保存する仕組みで、教育的にプロトコルの振る舞い(なぜ中止になったか、どのルールが適用されたか)を追跡できます。小規模リポジトリゆえに拡張性は限定的ですが、アルゴリズムの学習、動作確認、さらなる実験(ランダムワークロード、可視化、競合統計収集)といった派生開発に適した基盤といえます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • README.md: file
  • execution_log_20251112_213917.txt: file
  • src: dir

まとめ

教育用途に適した、タイムスタンプ順序付けを学ぶための小さく分かりやすいシミュレータです。

リポジトリ情報:

READMEの抜粋:

Relatório — Simulador de Escalonamento com Protocolo de Timestamps

Aluno

Nome: Lucas Gressler
Disciplina: Banco de Dados
Trabalho: Escalonamento com Protocolo de Timestamps


Como rodar

  1. Ativar o amb. virtual do python: .venv\Scripts\Activate.ps1
  2. Rode o simulador: python src/main.py
  3. Resultado sairá em um arquivo txt

Objetivo

Implementar, de forma simulada, um escalonador de transações que utilize o protocolo de timestamps (marcadores de tempo), co…