Bagikan melalui


Solusi ODBC

Pertanyaannya, bagaimana ODBC menstandarkan akses database? Ada dua persyaratan arsitektur:

  • Aplikasi harus dapat mengakses beberapa DBMS menggunakan kode sumber yang sama tanpa mengolah ulang atau menautkan ulang.

  • Aplikasi harus dapat mengakses beberapa DBMS secara bersamaan.

Dan ada satu pertanyaan lagi, karena realitas marketplace:

  • Fitur DBMS mana yang harus diekspos ODBC? Hanya fitur yang umum untuk semua DBMS atau fitur apa pun yang tersedia di DBMS apa pun?

ODBC memecahkan masalah ini dengan cara berikut:

  • ODBC adalah antarmuka tingkat panggilan. Untuk mengatasi masalah bagaimana aplikasi mengakses beberapa DBMS menggunakan kode sumber yang sama, ODBC mendefinisikan CLI standar. Ini berisi semua fungsi dalam spesifikasi CLI dari Open Group dan ISO/IEC dan menyediakan fungsi tambahan yang umumnya diperlukan oleh aplikasi.

    Pustaka atau driver yang berbeda, diperlukan untuk setiap DBMS yang mendukung ODBC. Driver mengimplementasikan fungsi dalam ODBC API. Untuk menggunakan driver yang berbeda, aplikasi tidak perlu dikompresi ulang atau ditautkan ulang. Sebaliknya, aplikasi hanya memuat driver baru dan memanggil fungsi di dalamnya. Untuk mengakses beberapa DBMS secara bersamaan, aplikasi memuat beberapa driver. Bagaimana driver didukung khusus sistem operasi. Misalnya, pada sistem operasi Microsoft Windows, driver adalah pustaka tautan dinamis (DLL).

  • ODBC mendefinisikan tata bahasa SQL standar. Selain antarmuka tingkat panggilan standar, ODBC mendefinisikan tata bahasa SQL standar. Tata bahasa ini didasarkan pada spesifikasi OPEN Group SQL CAE. Perbedaan antara dua tata bahasa kecil dan terutama karena perbedaan antara tata bahasa SQL yang diperlukan oleh SQL tersemat (Grup Terbuka) dan CLI (ODBC). Ada juga beberapa ekstensi tata bahasa untuk mengekspos fitur bahasa yang umum tersedia yang tidak dicakup oleh tata bahasa Grup Terbuka.

    Aplikasi dapat mengirimkan pernyataan menggunakan tata bahasa khusus ODBC atau DBMS. Jika pernyataan menggunakan tata bahasa ODBC yang berbeda dari tata bahasa khusus DBMS, driver mengonversinya sebelum mengirimkannya ke sumber data. Namun, konversi tersebut jarang terjadi karena sebagian besar DBMS sudah menggunakan tata bahasa SQL standar.

  • ODBC menyediakan Driver Manager untuk mengelola akses simultan ke beberapa DBMS. Meskipun penggunaan driver memecahkan masalah akses beberapa DBMS secara bersamaan, kode untuk melakukan ini bisa rumit. Aplikasi yang dirancang untuk bekerja dengan semua driver tidak dapat ditautkan secara statis ke driver apa pun. Sebagai gantinya, mereka harus memuat driver pada waktu proses dan memanggil fungsi di dalamnya melalui tabel penunjuk fungsi. Situasi menjadi lebih kompleks jika aplikasi menggunakan beberapa driver secara bersamaan.

    Daripada memaksa setiap aplikasi untuk melakukan ini, ODBC menyediakan Driver Manager. Driver Manager mengimplementasikan semua fungsi ODBC - sebagian besar sebagai panggilan pass-through ke fungsi ODBC dalam driver - dan secara statis ditautkan ke aplikasi atau dimuat oleh aplikasi pada waktu proses. Dengan demikian, aplikasi memanggil fungsi ODBC berdasarkan nama di Driver Manager, bukan dengan pointer di setiap driver.

    Ketika aplikasi membutuhkan driver tertentu, aplikasi pertama-tama meminta handel koneksi untuk mengidentifikasi driver dan kemudian meminta Agar Manajer Driver memuat driver. Driver Manager memuat driver dan menyimpan alamat setiap fungsi dalam driver. Untuk memanggil fungsi ODBC di driver, aplikasi memanggil yang berfungsi di Driver Manager dan meneruskan handel koneksi untuk driver. Driver Manager kemudian memanggil fungsi dengan menggunakan alamat yang disimpan sebelumnya.

  • ODBC mengekspos sejumlah besar fitur DBMS tetapi tidak memerlukan driver untuk mendukung semuanya. Jika ODBC hanya mengekspos fitur yang umum untuk semua DBMS, itu akan sedikit digunakan; setelah semua, alasan begitu banyak DBMS yang berbeda ada saat ini adalah bahwa mereka memiliki fitur yang berbeda. Jika ODBC mengekspos setiap fitur yang tersedia di DBMS apa pun, tidak mungkin bagi driver untuk diterapkan.

    Sebaliknya, ODBC mengekspos sejumlah besar fitur - lebih dari yang didukung oleh sebagian besar DBMS - tetapi mengharuskan driver untuk hanya menerapkan subset fitur tersebut. Driver menerapkan fitur yang tersisa hanya jika didukung oleh DBMS yang mendasar atau jika mereka memilih untuk menirunya. Dengan demikian, aplikasi dapat ditulis untuk mengeksploitasi fitur DBMS tunggal seperti yang diekspos oleh driver untuk DBMS tersebut, untuk hanya menggunakan fitur yang digunakan oleh semua DBMS, atau untuk memeriksa dukungan fitur tertentu dan bereaksi yang sesuai.

    Sehingga aplikasi dapat menentukan fitur apa yang didukung driver dan DBMS, ODBC menyediakan dua fungsi (SQLGetInfo dan SQLGetFunctions) yang mengembalikan informasi umum tentang kemampuan driver dan DBMS dan daftar fungsi yang didukung driver. ODBC juga mendefinisikan tingkat kesuaian tata bahasa API dan SQL, yang menentukan berbagai fitur yang didukung oleh driver. Untuk informasi selengkapnya, lihat Tingkat Kesuaian.

    Penting untuk diingat bahwa ODBC mendefinisikan antarmuka umum untuk semua fitur yang dieksposnya. Karena itu, aplikasi berisi kode khusus fitur, bukan kode khusus DBMS, dan dapat menggunakan driver apa pun yang mengekspos fitur tersebut. Salah satu keuntungan dari ini adalah bahwa aplikasi tidak perlu diperbarui ketika fitur yang didukung oleh DBMS ditingkatkan; sebaliknya, ketika driver yang diperbarui diinstal, aplikasi secara otomatis menggunakan fitur karena kodenya khusus fitur, bukan khusus driver atau khusus DBMS.