Wa'alaikumussalam wr wb
Hai Mahmud,
Hal yang ingin Anda perbandingkan tersebut tidak memungkinkan untuk
diperbandingkan.
ODBC = Open DataBase Connectivity
Tugasnya adalah melakukan koneksi ke suatu database melalui ODBC Driver
dengan menyediakan informasi yang lengkap tentang cara melakukan koneksi
tersebut.
DSN = Data Source Name
Yaitu informasi yang lengkap tentang cara melakukan koneksi (biasanya juga
dikenal dengan sebutan connection string) yang sesuai dengan struktur yang
dibutuhkan oleh ODBC Driver dan disimpan secara khusus menjadi satu paket
informasi.
Jadi, ketika akan melakukan koneksi ke suatu database dengan memanfaatkan
ODBC driver, maka salah satu metode koneksi yang digunakan adalah ODBC.
Informasi lengkap tentang cara melakukan koneksi tersebut, jika terkumpul
menjadi satu paket informasi, maka disebut DSN.
DSN terbagi dalam 2 macam, yaitu :
a. DSN yang tersimpan dalam mesin komputer
b. DSN yang tersimpan di dalam file.
Sedangkan area akses DSN terbagi menjadi 2 juga, yaitu :
1. bisa diakses oleh setiap user di sistem komputer tersebut
2. bisa diakses oleh user tertentu saja
Untuk macam DSN yang poin b (berbentuk file), akses nomor 1 akan terbentuk
bila file DSN diletakkan di folder yang bisa diakses semua user. Sedangkan
akses nomor 2 akan terbentuk bila file DSN diletakkan di folder khusus yang
hanya bisa diakses oleh user tertentu.
DSN macam poin b, bisa di-copy oleh user yang dinyatakan boleh untuk
mendapatkannya. Misalnya, bagian akunting hanya bisa mendapatkan file DSN
untuk koneksi ke database untuk urusan akunting saja. Ingat, di dalam DSN
ada banyak atribut yang salah satunya bisa merujukkan untuk koneksi ke
suatu database tertentu dengan login tertentu (hak akses tertentu).
Koneksi dengan metode ODBC untuk memanfaatkan ODBC Driver juga bisa dengan
suatu paket informasi yang tidak disimpan dalam bentuk tertentu, tetapi
didefinisikan secara langsung. Informasi seperti ini sering disebut dengan
DSN-less. Biasanya hal ini dilakukan secara hard-coded didalam aplikasi
atau suatu library khusus milik si aplikasi itu sendiri. Kalau di Excel,
bisa disimpan di sebuah cell atau ditulis langsung dalam VBA dan sebagainya.
Singkatnya :
Aplikasi --> ODBC
> ODBC pakai paket informasi
DSN --> ODBC Driver -->
Database
> ODBC dengan definisi connection string
langsung (DSN-Less) --> ODBC Driver --> Database
Contoh : Excel ke MS Access
Excel --> ODBC
> ODBC pakai DSN bernama Access Database --> ODBC Driver
bernama ACEODBC -> MS Access Database
> ODBC connection string ke Access Database --> ODBC
Driver bernama ACEODBC -> MS Access Database
Jadi, Excel via ODBC vs Excel via DSN tidak memungkinkan untuk
diperbandingkan.
Tapi, kalau koneksi Excel via ODBC memanfaatkan DSN vs Excel via ODBC
definisikan connection string sendiri, bisa diperbandingkan. Untuk
performa, keduanya sama saja. Untuk penggunaan DSN-less, maka koneksi
dilakukan dengan aplikasi interface yang di dalamnya ada pendefinisian
connection string nya. Kalau penggunaan DSN, maka koneksi bisa dilakukan
melalui berbagai aplikasi yang memungkinkan, bahkan dari berbagai platform.
Di Excel, ada object koneksi bernama connections. Excel Connections ini
dibentuk melalui fitur Get External Data (dulu namanya Import Data). Hasil
Excel Connections ini kemudian dapat ditampilkan kepada user menjadi Excel
Pivot Table atau Excel Table (satu hasil connection akan menjadi salah satu
dari dua hal tersebut).
Khusus untuk ditampilkan menjadi Excel Table, maka data hasil Excel
Connections dikumpulkan lalu dibentuk menjadi sebuah Query Table lebih
dulu, barulah diserahkan ke Excel Table.
Jadi, kalau proses koneksi untuk menjadi Excel Connections tadi harus
dilakukan oleh user di banyak workbook, maka akan capek kalau harus klik
fitur get external data blablablabla terus menerus. Padahal koneksinya
tetap, yaitu menggunakan ODBC pakai DSN blablabla...
Untuk itulah, maka Office membuat sebuah file berisi cara fitur Get Extenal
Data melakukan koneksi data tersebut. File ini disebut Office Data
Connection file yang berekstensi .odc. Jadi, kalau user lain akan melakukan
koneksi yang sama di komputernya sendiri dan akan dipakai dalam banyak
workbooks, maka si user tdai meng-copy .odc file ke komputernya dan
memanfaatkan odc file tersebut untuk membuat koneksi.
Kalau dilengkapi dengan kehadiran .odc file, singkatnya :
Excel
> tanpa odc file (klak klik get external data termasuk menulis
querynya, yaitu ODBC pakai DSN -> ODBC Driver -> Database)
> dengan odc file (Excel memproses ODBC pakai DSN -> ODBC Driver ->
Database, karena sudah terdefinisi dalam .odc file)
Sekarang, dongeng lainnya....
Selain metode ODBC, ada metode yang dinamakan OLE DB...
OLE DB = Object Linking and Embedding DataBase
Tugasnya melakukan koneksi ke suatu database dengan membawa suatu informasi
koneksi (sering disebut Connection String) memanfaatkan data Provider
(mirip seperti ODBC Driver).
Informasi koneksi yang disebut connection string (seperti di ODBC kan ya)
ini tidak ada yang bisa disimpan dalam sebuah paket seperti DSN, jadi harus
didefinisikan sendiri.
Perbedaan utama dengan metode ODBC adalah :
1. Akses
- metode ODBC menggunakan fungsi-fungsi API ODBC (akses dengan function
yang disediakan oleh ODBC Driver)
- metode OLE DB menggunakan komponen object OLE DB (akses dengan komponen
object yang disediakan oleh OLE DB Provider)
2. Yang dikoneksi
- metode ODBC mengkoneksi ke suatu database (database engine tertentu
[ORACLE, MySQL, Text File, MS Access, Excel, dsb])
- metode OLE DB mengkoneksi ke suatu sumber data yang sesuai definisi dalam
connection string (XML, database engine tertentu seperti yang dilakukan
ODBC, url, dsb)
Jadi, area penggunaan OLE DB lebih luas. Tapi menuntut library (file .dll)
yang khusus yang berbentuk COM (component object model)
Singkatnya :
Aplikasi --> OLE DB -> definisi connection string -> OLE DB Provider ->
Sumber Data
Contoh : Excel ke MS Access
Excel --> OLE DB -> definis connection string -> OLE DB Provider bernama
ACE OLE DB -> MS Access Database
Masih ingat tentang .odc file yang disinggung di atas sana ?
Singkatnya menjadi :
Excel
> tanpa odc file (klak klik get external data termasuk menulis
querynya, yaitu OLE DB -> conn string -> provider -> Database)
> dengan odc file (Excel memproses OLE DB -> conn string -> provider ->
Database, karena sudah terdefinisi dalam .odc file)
Jadi, sekarang tampak jelas bedanya antara metode ODBC dengan OLE DB.
Nah, ODBC dan OLE DB dapat diperbandingkan. Ringkasnya begini :
1. performa koneksi data
- metode ODBC lebih cepat, lebih bisa ke banyak macam database engine
karena banyak database engine yang membuatkan driver ODBC (contoh MySQL
hanya membuatkan ODBC Connector, sedangkan yang OLE DB connectornya dari
pihak ketiga yang berbayar), tapi khusus ke database atau data yang
memiliki struktur yang terdefinisi dengan baik.
imho,
XML juga terstruktur dengan baikm tetapi pendefinisian strukturnya tidak
lah nyaman untuk diproses karena setiap XML bisa berbeda. Sedangkan
database akan jelas definisi mulai dari nama database, nama tabel,
nama-nama kolomnya, tipe datanya terkumoul menjadi satu di suatu blok
definisi yang disebut katalog. Text file (flat file) juga demikian, nama
folder seakan nama database, nama file seakan nama tabel, delimiter atau
definisi fixed length bisa menjadi dasar pembentukan nama-nama kolom
(walaupun tidak berheader).
- metode OLE DB harus melalui penjabaran connection string. Jadi, sedikit
lebih lambat.
2. pemanfaataan hasil di dalam programming
- metode ODBC yang hasilnya berupa array perlu diolah berbasis array. Jadi
proses utama aplikasi bisa menjadi kurang luwes.
- metode OLE DB yang hasilnya berupa resultset, bisa dimanfaatkan aplikasi
sebagai sebuah object. Jadi, resultset adalah sebuah obejct yang berisi
object kolom-kolom, sebuah kolom, baris-baris, baris, dsb. Aplikasi bisa
memanfaatkan konsep OOP dengan nyaman. Sayangnya, teknologi OLE DB
sepenuhnya dikuasai pencetusnya, yaitu Ms. Sehingga tidak banyak ditemukan
library COM berupa OLE DB Provider dari banyak macam sumber data.
Sederhananya begini :
1. Kalau untuk sekedar koneksi data dan ditampilkan semua hasilnya, pakai
ODBC lebih ok.
2. Kalau koneksi datanya bersifat dinamis dengan berbagai keperluan
programming yang mengakses setiap object data di platformnya si Ms, maka
OLE DB bisa lebih nyaman.
So, sampai disini,
Sudah kenal ODBC beserta term bernama DSN dan DSN-less nya, OLE DB berserta
Connection String yang tidak bisa dikumpulkan menjadi paket seperti DSN,
.odc file miliknya Ms Office untuk memudahkan proses penggunaan fitur Get
External Data.
Yang berikutnya yang perlu dikenali adalah data object. Contoh data object
adalah QueryTable di Excel. Kalau dalam programming (seperti memanfaatkan
VBA), ada data object yang bernama ADO (ActiveX Data Object). Jaman dulu
(sepertinya sampai sekarang masih dipakai) ada yang bernama DAO (Data
Access Object) yang aktif digunakan sebelum munculnya ADO.
Tugas data object adalah membentuk object data sebagai penghubung (seperti
pengepul data) dari aplikasi ke sumber data. Jadi, ADO bisa digunakan untuk
mengkoneksi data memanfaatkan ODBC maupun OLE DB, yang tergantung
connection string yang disusun untuk si ADO.
Pertanyaan berikutnya, mungkinkah menggunakan OLE DB provider (jenis COM)
untuk mengkoneksi dengan connection string untuk ODBC (definisinya memiliki
struktur untuk ODBC, seperti menggunakan DSN) ?
> hmmm....
> Semua koneksi dengan connection string berupa paket seperti DSN akan
berujung pada penggunaan ODBC Driver. Jadi tetap harus ada ODBC Driver nya.
Jadi, kenapa harus lewat OLE DB provider ya... oh mungkin result setnya
ingin berbentuk object, karena tidak bisa pakai data object seperti ADO.
> OLE DB Provider yang memungkinkan untuk hal ini adalah MSDASQL alias OLE
DB provider for ODBC driver. Jadi, pada connection string, atribut Provider
diisi MSDASQL tapi properti lainnya menggunakan DSN.
> Kalau urusan performanya, silakan ditelaah sendiri ya... Performanya
sesuai kebutuhan setempat atau tidak juga tergantung hasil telaah tersebut.
udah ah...
capek..
nanti ndak malah tambah bikin bingung...
Wassalamu'alaikum wr wb
Kid
2015-10-07 13:58 GMT+07:00 mahmud setyo utomo [email protected]
[belajar-excel] <[email protected]>:
>
>
> Assalamualaikum kawan kawan Be-exceller,
>
> Bisakah teman teman menjelaskan perbandingan keuntungan dan kerugian
> antara koneksi excel ke database via odbc dan via DSN?
>
>
>