Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PostgreSQL Database Engine - Implémentation en Go

🎯 Aperçu du projet

Ce projet implémente un database engine compatible PostgreSQL développé en Go. Il fournit un RDBMS (Relational Database Management System) complet avec SQL parser, stockage, transactions, indexation et contraintes d'intégrité référentielle.


🗂️ Navigation rapide du code

Fonctionnalité / Démo Fichier Lignes clés Description rapide
Entrée principale CLI main.go main, runDemo Point d'entrée, gestion des flags, exécution SQL, affichage résultats
Démo complète (features) demo.go runComprehensiveDemo, demoCRUDOperations, demoSQLParser, demoConstraints, demoIndexes, demoViews, demoJoins, demoAggregates, demoTransactions, demoPerformance, demoAdvancedFeatures Démo guidée de toutes les fonctionnalités
Démo SQL Parser examples/sql-demo/main.go main, printTableResult Démonstration parser SQL, DDL/DML, index, types, requêtes complexes
Démo Fonctions d'Agrégat examples/aggregate-demo/main.go main, testAggregateParsing, testAggregateOperator Parsing et exécution d'agrégats, tests GROUP BY/HAVING, opérateurs
Engine principal internal/engine/engine.go NewPostgresEngine, Insert, Select, Update, Delete, CreateDatabase, CreateTable, CreateIndex, BeginTransaction, ExecuteSQL Initialisation, gestion des bases, exécution requêtes
Parser SQL internal/parser/parser.go NewParser, Parse, parseCreateTable, parseSelectStatement, parseInsertStatement, parseUpdateStatement, parseDeleteStatement Parsing SQL, AST, gestion erreurs
Lexer SQL internal/parser/lexer.go NewLexer, NextToken, GetAllTokens Découpage lexical SQL
Types SQL internal/types/types.go DataType, Column, Schema, Table, GetTypeInfo, IsNumericType Système de types, définitions
Stockage internal/storage/storage.go NewStorageManager, CreateTable, InsertTuple, SelectTuple, UpdateTuple, DeleteTuple Interface stockage
Stockage binaire internal/storage/binary_storage.go ... Implémentation stockage binaire
Index B-Tree internal/index/btree.go NewBTree, Insert, Search, Delete, RangeScan Indexation B-Tree
Transactions internal/transaction/transaction.go NewTransactionManager, Begin, Commit, Rollback Gestion transactions, isolation
Tests parser SQL tests/sql_parser_test.go ... Tests lexer, parser, intégration
Tests vues tests/views_test.go ... TDD sur les vues
Tests agrégats tests/aggregate_functions_test.go ... Tests fonctions d'agrégat

Astuce navigation : Utilisez la recherche par nom de fichier et ligne pour accéder rapidement à la logique souhaitée.

Liens directs importants


✨ Fonctionnalités principales

🔤 SQL Parser

  • Lexer complet avec tokenisation SQL ([internal/parser/lexer.go])
  • Parser supportant DDL et DML ([internal/parser/parser.go])
  • AST (Abstract Syntax Tree) ([internal/parser/ast.go])
  • Gestion d'erreurs détaillée

🗄️ Database Management

  • Création/suppression de bases ([internal/engine/engine.go])
  • Gestion des schemas ([internal/types/types.go])
  • Support multi-database

📊 PostgreSQL Data Types

  • Types supportés : voir [internal/types/types.go]

🔧 SQL Operations

  • DDL/DML : CREATE, INSERT, SELECT, UPDATE, DELETE ([main.go], [demo.go])
  • Vues, contraintes, agrégats, jointures, sous-requêtes ([demo.go], [examples/sql-demo/main.go])

🚀 Performance Optimizations

  • Stockage binaire ([internal/storage/binary_storage.go])
  • Index B-Tree ([internal/index/btree.go])
  • Transactions ([internal/transaction/transaction.go])

🔒 Data Integrity

  • Contraintes référentielles, validation types, ACID ([demo.go])

🏗️ Architecture du projet

PostgresInGo/
├── main.go                    # Entrée CLI principale (voir lignes 1-180)
├── demo.go                    # Démo guidée de toutes les features (voir lignes 1-900)
├── internal/
│   ├── engine/               # Moteur principal
│   │   └── engine.go         # Initialisation, gestion bases
│   ├── parser/               # Sous-système SQL Parser
│   │   ├── tokens.go         # Définition tokens SQL
│   │   ├── lexer.go          # Analyseur lexical
│   │   ├── ast.go            # AST
│   │   └── parser.go         # Parser SQL
│   ├── execution/            # Exécution requêtes
│   │   └── execution.go      # Opérateurs, plans
│   ├── storage/              # Stockage
│   │   ├── storage.go        # Interface stockage
│   │   └── binary_storage.go # Stockage binaire
│   ├── index/                # Indexation
│   │   └── btree.go          # B-Tree
│   ├── transaction/          # Transactions
│   │   └── transaction.go    # Isolation, contrôle
│   └── types/                # Système de types
│       ├── types.go          # Types SQL
│       └── types_test.go     # Tests types
├── tests/                    # Tests
│   ├── sql_parser_test.go    # Tests parser SQL
│   ├── views_test.go         # Tests vues
│   ├── aggregate_functions_test.go # Tests agrégats
│   └── ...
├── examples/
│   ├── sql-demo/main.go      # Démo parser SQL
│   └── aggregate-demo/main.go # Démo agrégats
├── data/                     # Données
└── demo_data/                # Données démo

🚀 Installation et utilisation

Prérequis

  • Go 1.24.1 ou supérieur

Installation

git clone <repository-url>
cd PostgresInGo
go mod tidy

Exécution

go run main.go

Exemples d'utilisation

  • Démo complète : go run demo.go ([demo.go])
  • Démo SQL Parser : go run examples/sql-demo/main.go ([examples/sql-demo/main.go])
  • Démo Agrégats : go run examples/aggregate-demo/main.go ([examples/aggregate-demo/main.go])

🧪 Tests

  • Tests parser SQL : go test ./tests/sql_parser_test.go -v
  • Tests vues : go test ./tests/views_test.go -v
  • Tests agrégats : go test ./tests/aggregate_functions_test.go -v
  • Tous les tests : go test ./...

📖 Pour aller plus loin

  • Consultez les fichiers référencés dans le tableau ci-dessus pour explorer chaque fonctionnalité.
  • Les démos (demo.go, examples/sql-demo/main.go, examples/aggregate-demo/main.go) montrent l'utilisation réelle du moteur, du parser, des contraintes, des index, des vues, etc.
  • Les tests dans tests/ couvrent tous les cas d'usage et edge cases.

📊 Statistiques du projet

  • Modules : 7 modules principaux (+ SQL Parser)
  • Types supportés : 50+ types PostgreSQL
  • Tokens SQL : 100+ tokens supportés
  • Commandes SQL : Support complet DDL/DML avec parser + Views
  • Tests : 800+ lignes de tests pour le SQL parser et Views
  • Fonctionnalités SQL : CREATE, INSERT, SELECT, UPDATE, DELETE, WHERE, INDEX, CREATE VIEW, DROP VIEW

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages