Ce projet explore les défis de la gestion concurrentielle dans une "base de données bancaire". À travers deux implémentations (sécurisée et non sécurisée), nous analysons les problèmes d'accès concurrent et proposons une solution à l'aide de verrous.
Chaque version est documentée et accompagnée de son code source dans des sous-répertoires dédiés.
## 🎯 Objectifs du Projet
- Mettre en évidence les effets néfastes d'une mauvaise gestion des accès concurrents.
- Implémenter une solution robuste en utilisant des verrous pour assurer la cohérence tout en conservant un bon niveau de parallélisme.
## 📁 Données
Le répertoire **Data** contient la base de données `accounts.db`, qui sert de point de départ pour les transactions. Chaque ligne correspond à un compte bancaire avec un nom et un solde initial.
- **[Accéder au répertoire Data](./Data)**
- **Fichiers**:
-`accounts.db`: Fichier texte simulant une base de données avec des comptes.
## 🛠️ Générateur de Données
Le répertoire **DataGenerator** contient un programme pour générer une base de données bancaire. Cela permet de créer des fichiers `.db` personnalisés pour vos tests.
- **[Accéder au répertoire DataGenerator](./DataGenerator)**
- **Fichiers**:
-`README.md`: Documentation sur l'utilisation du générateur.
-`generate_accounts.c`: Code source pour générer `accounts.db`.
## 🔓 Transactions Non Sécurisées
Le répertoire **Unsecured** contient une implémentation basique de gestion de transactions bancaires.
**Problème :** Sans mécanismes de protection, les accès concurrents entraînent des incohérences dans les soldes.
- **[Accéder au répertoire Unsecured](./Unsecured)**
- **Fichiers**:
-`README.md`: Documentation sur l’utilisation du programme ainsi que des tests et observations.
-`unsecured_transaction.c`: Code source.
## 🔒 Transactions Sécurisées
Le répertoire **Secured** contient une version améliorée avec des verrous (fonction lockf) pour résoudre les problèmes d'accès concurrent.
- **[Accéder au répertoire Secured](./Secured)**
- **Fichiers**:
-`README.md`: Documentation sur l'implémentation sécurisée.