|
Procédural vs langues de requête non procédurale dans le SGBDS
Langage de requête procédurale (PQL)
* focus: Spécifie les étapes exactes et l'ordre des opérations pour récupérer les données.
* comment cela fonctionne:
* Utilise des commandes comme "Open", "Close", "Fetch" et "Loop" pour contrôler l'accès aux données.
* Exige que l'utilisateur définit explicitement le processus de récupération, y compris la manipulation des données et l'itération.
* Exemple:
`` SQL
- Récupérer les noms et salaires des employés, tri par salaire
Open Cursor_Employee;
Fetch Cursor_Employee dans employee_name, salaire;
Pendant (récupérer cursor_employee dans Employee_name, Salaire) Loop
Si salaire> 50000 alors
Imprimer Employee_Name, salaire;
Terminer si;
Boucle de fin;
Fermer Cursor_Employee;
`` '
Langage de requête non procédurale (NPQL)
* focus: Décrit le résultat souhaité sans spécifier les étapes exactes.
* comment cela fonctionne:
* Utilise des déclarations déclaratives qui expriment le résultat souhaité sans détails de procédure.
* Le système détermine le plan d'exécution optimal pour récupérer les données.
* Exemple:
`` SQL
- Récupérer les noms et salaires des employés, tri par salaire
Sélectionnez Employee_Name, salaire
De l'employé
Où le salaire> 50000
Ordre par salaire;
`` '
Différences clés:
| Caractéristique | Langue de requête procédurale | Langue de requête non procédurale |
| --- | --- | --- |
| spécificité | Définit explicitement chaque étape | Décrit le résultat souhaité |
| contrôle | Contrôle de l'utilisateur Accès et manipulation des données | Le système détermine le plan d'exécution |
| complexité | Peut être complexe et difficile à écrire | Plus simple et plus intuitif à utiliser |
| flexibilité | Très flexible, permettant une manipulation de données complexes | Moins flexible, limité à des requêtes spécifiques |
| Performance | Peut être plus lent en raison d'un contrôle explicite | Peut être plus rapide en raison de plans d'exécution optimisés |
| Exemples communs | COBOL, RPG | SQL, XQuery |
Avantages et inconvénients:
Langue de requête procédurale:
* Avantages:
* Flexibilité pour les opérations complexes
* Contrôle à grain fin sur l'accès aux données
* Inconvénients:
* Complexe à écrire et à comprendre
* Moins efficace que les langues non procédurales
Langue de requête non procédurale:
* Avantages:
* Plus facile à écrire et à comprendre
* Plus efficace en raison de plans d'exécution optimisés
* Inconvénients:
* Moins flexible que les langues procédurales
* Limité dans des opérations complexes
En général, les langues de requête non procédurales sont plus largement utilisées dans les SGBD, principalement en raison de leur simplicité et de leur facilité d'utilisation. Cependant, les langues procédurales sont encore précieuses dans des situations spécifiques où une manipulation de données complexes et un contrôle à grain fin sont nécessaires.
|