Question Différence entre les pilotes de base de données et les dialectes de base de données


Quelle est la différence entre les pilotes de base de données et les dialectes de base de données?


15
2018-01-18 10:40


origine


Réponses:


Un pilote de base de données est un programme qui implémente un protocole (ODBC, JDBC) pour la connexion à une base de données. C'est un adaptateur qui connecte une interface générique à une implémentation de fournisseurs spécifique, tout comme les pilotes d'imprimante, etc.

Un dialecte de base de données est un paramètre de configuration pour un logiciel indépendant de la plate-forme (JPA, Hibernate, etc.) qui permet à un tel logiciel de traduire ses instructions SQL génériques en DDL, DML spécifique au fournisseur.

Il semble que le "dialecte de base de données" puisse être utilisé par d’autres types de programmes de base de données pour désigner quelque chose de légèrement différent mais largement similaire à ce que je viens d’écrire. En d'autres termes, "pilote de base de données" est un terme reconnu dans l'industrie avec une seule signification concrète, tandis que "dialecte de base de données" n'est pas reconnu de la même manière et renvoie à différents concepts dans différents contextes.


8
2018-01-18 11:01



Question originale:

Quelle est la différence entre les pilotes de base de données et les dialectes de base de données?

La question est ambiguë; voici ma prise

UNE driver est un logiciel permettant d'accéder à une base de données.

UNE dialect est une variante d'un langage de requête (c'est-à-dire un protocole) utilisé pour accéder à une base de données. Selon le logiciel de base de données, il peut prendre en charge plusieurs dialects.

C'est à dire. pas tout sql sont créés égaux ;-)


7
2018-01-18 10:42



Cette question n'est pas ambiguë, je pense qu'il faut y répondre correctement.

Nous utilisons souvent Dialect et Drivers pour connecter une certaine application à un certain système de gestion de base de données.

Par exemple: dans grails / java

Nous définissons une propriété Dialect pour se connecter à mysql avec l'un de ces les types

MySQL5Dialect, MySQLInnoDBDialect, MySQLMyISAMDialect

Dialect est un mot anglais qui signifie variante d'une langue. Par exemple, il existe plusieurs dialectes de l'anglais. Par exemple, l'anglais britannique et l'anglais américain.

Dans le contexte des bases de données, les gens parlent de dialectes de SQL. SQL est la langue principale, tout comme l'anglais. Ensuite, il existe des dialectes avec une syntaxe spécifique à la base de données. Par exemple, Oracle a le mot-clé rownum.Refe

Et, le dialecte de la base de données est simplement un terme qui définit les fonctionnalités spécifiques du langage SQL disponibles lors de l'accès à cette base de données.

Example of usage in application side

dataSource {
    pooled = true
    jmxExport = true
    driverClassName = "com.mysql.jdbc.Driver"
    dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
    username = "root"
    password = "root"
}

N.B. Dialect est obligatoire pour se connecter à une base de données.

Un autre côté, pilote de base de données est un programme installé sur un poste de travail ou un serveur pour permettre aux programmes sur ce système d'interagir avec un SGBD.[Référer]

En Java, nous avons quelque chose appelé JDBC / ODBC driver spécification pour se connecter à une base de données relationnelle.

Chauffeur est quelque chose comme un fichier ou un fichier de classe écrit pour gérer la communication entre la base de données réelle et l'application consommatrice (application MySQL et Java).

MySQL offre une connectivité de pilote de base de données standard pour utiliser MySQL avec des applications et des outils compatibles avec les normes industrielles ODBC et JDBC.Après avoir le fichier de pilote, vous le placez dans le dossier lib, puis vous devez l'appeler spécifiez URL, DATABASENAME, PORT, PASSWORD .. pour vous connecter à la base de données.

dataSource {

     //url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT
              =10000;DB_CLOSE_ON_EXIT=FALSE"
      databasename = "libdoc"
      url = "jdbc:mysql://localhost:3306/"+databasename
   }

Aloha, bonne journée d'apprentissage!


5
2018-04-16 13:38