データベース ドライバとデータベース ダイアレクトの違いは何ですか?
3 に答える
この質問は曖昧ではありません。正しく答える必要があると思います。
特定のアプリケーションを特定のデータベース管理システムに接続するために、Dialect と Drivers をよく使用します。
例: grails / Java
mysql に接続する Dialect プロパティを、このタイプのいずれかを持つものとして定義します。
MySQL5Dialect, MySQLInnoDBDialect, MySQLMyISAMDialect
方言は、言語のバリアントを意味する英語の単語です。たとえば、英語には複数の方言があります。たとえば、イギリス英語とアメリカ英語です。
データベースのコンテキストでは、人々は SQL の方言について話します。SQL は、英語と同様に主要な言語です。次に、データベース固有の構文を持つ方言があります。たとえば、Oracle には rownum キーワードがあります。参照
データベースの方言は、そのデータベースにアクセスするときに使用できる SQL 言語の特定の機能を定義する用語です。
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"
}
注意。データベースに接続するには方言が必須です。
データベース ドライバーは、ワークステーションまたはサーバーにインストールされ、そのシステム上のプログラムが DBMS とやり取りできるようにするプログラムです。[参照]
Java では、リレーショナル データベースに接続するための JDBC/ODBC ドライバー仕様と呼ばれるものがあります。
ドライバーは、実際のデータベースと消費アプリケーション (Mysql および Java アプリケーション) との間の通信を処理するために作成されたファイルまたはクラス ファイルのようなものです。
MySQLは、業界標準の ODBC および JDBC と互換性のあるアプリケーションおよびツールで MySQL を使用するための標準データベース ドライバー接続を提供します。 URL 、DATABASENAME 、PORT 、PASSWORD .. を指定してデータベースに接続します。
dataSource {
//url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT
=10000;DB_CLOSE_ON_EXIT=FALSE"
databasename = "libdoc"
url = "jdbc:mysql://localhost:3306/"+databasename
}
アロハ、ハッピーラーニングデー!
データベース ドライバは、データベースに接続するためのプロトコル (ODBC、JDBC) を実装するプログラムです。プリンタードライバーなどと同じように、汎用インターフェースを特定のベンダーの実装に接続するアダプターです。
データベースダイアレクトは、プラットフォームに依存しないソフトウェア (JPA、Hibernate など) の構成設定であり、そのようなソフトウェアが汎用 SQL ステートメントをベンダー固有の DDL、DML に変換できるようにします。
「データベースの方言」は、他の種類のデータベース プログラムで、私が今書いたものと少し異なるが、おおむね同様の意味で使用されているようです。つまり、「データベース ドライバー」は 1 つの具体的な意味を持つ広く認知されている業界用語ですが、「データベースの方言」は同様に認識されておらず、異なるコンテキストで異なる概念を指します。
元の質問:
データベース ドライバとデータベースの方言の違いは何ですか?
質問があいまいです。これが私の見解です。
driver
は、データベースにアクセスするためのソフトウェアです。
Adialect
は、データベースへのアクセスに使用されるクエリ言語 (つまり、プロトコル) のバリアントです。データベース ソフトウェアによっては、複数の異なるdialects
.
つまり、すべてsql
が同じように作られているわけではありません;-)