2010-06-11 8 views
3

Dans mon expérience, j'ai utilisé plusieurs requêtes telles que sélectionner, commande par, clause etc .. dans mysql, sql-server, oracle etc Pour un instant je pensé,mise en œuvre interne de la base de données Requêtes

1) comment est-ce en interne écrit pour mettre en œuvre les requêtes ci-dessus

2) quelle langue utilisent-ils?

3) est ce langage de programmation? si oui quelle langue?

4) quel type d'environnement nécessaire pour mettre en œuvre ce type de base de données complexe

Répondre

6

1) sous forme schématique vous procédez comme suit:

a) diviser la requête dans ses composants et créer un arbre de syntaxe abstraite (AST) de la requête. Il y a des outils pour le faire, autrefois lex et yacc étaient utilisés pour cela, maintenant il y a beaucoup plus de choix. B) Dans un premier temps, un optimiseur réorganisera l'arbre en appliquant des transformations égales connues afin que la requête soit la plus performante en utilisant des index, en faisant des requêtes qui retournent d'abord peu de résultats.

c) Vous pouvez parcourir cette arborescence pour implémenter les petites opérations sur la base de données et les données renvoyées. Typiquement, cela se traduit dans les tableaux « temporaires virtuels » dans les noeuds de votre AST

d) Recueillir les choses à partir de votre nœud supérieur et le retourner au client

2-3) Je ne pense pas qu'il ya des langues spéciales . Beaucoup sont en C, mais Java et d'autres langues sont aussi utilisées

4) Je pense que le meilleur environnement est un environnement silencieux pour ce genre de travail. ;-)

Le vrai travail n'est pas dans l'interpréteur/compilateur SQL, mais dans les structures de données détaillées et dans la simplicité de tout organiser de manière efficace et de régler dynamiquement la situation afin de maintenir la base de données performante.

2

Je crois que le SGBD Oracle a été tout d'abord écrit en C, et est probablement encore.

1

Dans plusieurs bases de données (toutes?), Vous pouvez afficher un plan d'explication/d'exécution. Cela vous donnera une approximation approximative de ce qui se passe dans la base de données. Dans les SGBDR commerciaux, c'est ce qui vous rapproche le plus de la compréhension du fonctionnement des optimisations. Les algorithmes dans les analyseurs de requêtes sont des secrets étroitement gardés.

Joe Chang a écrit un excellent article about how SQL Server's cost based optimizer works

De même, vous pouvez trouver des informations similaires sur les PostgreSQL et MySQL

Questions connexes