# 1

Andika Triwidada
andika@gmail.com 2012, 2013.

# Pengikatan koneksi (yaitu koneksi virtual)

Pengikatan koneksi adalah suatu fitur yang mengijinkan "pengikatan" beberapa koneksi dan/atau set data yang diimpor ke dalam suatu koneksi tunggal, yang dapat dipakai hampir seperti koneksi biasa.

Fitur ini berguna ketika seseorang perlu mengeksekusi suatu perintah SQL (sebagai contoh untuk mengekstrak data) dengan mempertimbangkan bahwa data sebenarnya disimpan di basis data yang berbeda. Tanpa fitur ini, cara mencapai hasil yang sama adalah dengan mengekspor data yang diperlukan dari setiap basis data dan bekerja pada data di luar basis data.

Untuk membuat koneksi "terikat" baru (atau koneksi "virtual"), gunakan menu KoneksiIkat koneksi, atau pintasan Ctrli. Ini memunculkan jendela dialog baru dimana kita dapat menentukan elemen mana yang akan disertakan dalam koneksi "terikat" seperti ditunjukkan di bawah.

# Dialog untuk membuat koneksi virtual baru

Disini koneksi kini (c1) akan diikatkan dalam skema "c1"

Gunakan tombol Tambah ikatan untuk:

ikat suatu koneksi untuk menyertakan semua tabel dari koneksi tersebut: pakai opsi Ikatkan koneksi. Opsi ini hanya sekedar menambah elemen baru dalam dialog, untuk menyatakan nama skema dan memilih koneksi yang ada

ikat suatu set data untuk mengimpor data dari berkas teks sebagai suatu tabel tunggal: pakai opsi Ikatkan set data. Lihat seksi di bawah untuk informasi lebih lanjut.

# Use case bagi koneksi virtual

Untuk mengilustrasikan penggunaan koneksi virtual, mari kita definisika suatu use case sederhana dan melihat bagaimana itu berguna. Misalnya Anda memiliki basis data yang memuat daftar server yang menjadi tanggung jawab Anda. Untuk kesederhanaan, kita asumsikan bahwa basis data memuat suatu tabel bernama "server" dengan definisi berikut:

CREATE TABLE servers (name string, location string);

Misalnya tabel ini memuat informasi berikut:

> select * from servers ; name | location ---------+--------- moon | room1 darkstar | room2 flag | room3 alf | room2 vador | room3 (5 rows) >

Kini asumsikan bahwa Anda memiliki program dari pihak ketiga yang memberikan daftar server yang mungkin punya masalah, keluaran program ini adakah berkas CSV dengan satu kolom untuk nama server, satu kolom untuk kode galat, dan satu kolom menjelaskan masalahnya. Asumsikan berkas CSV memiliki isi berikut:

$ cat problems.csv Server name,Error code,Error description darkstar,0,file system full vador,1,outdated AV signature darkstar,2,overloaded flag,0,file system full $

Misalkan Anda ingin tahu semua server, dimana lokasi ada masalah dengan kode galat 0. Solusinya adalah dengan mengikat koneksi ke basis data (sebagai contoh dalam skema "c1"), mengimpor berkas masalah CSV (sebagai contoh dalam tabel "tab"), dan mengeksekusi perintah SQL berikut:

SELECT "server name", location FROM tab INNER JOIN c1.servers AS s ON (tab."server name" = s.name) WHERE "Error code"=0

Yang mengembalikan hasil yang diharapkan yang ditunjukkan dalam gambar berikut:

## Hasil yang diharapkan dari koneksi virtual

# Mengimpor set data ke dalam koneksi virtual

Untuk mengimpor set data ke dalam tabel di koneksi virtual (sebagai contoh untuk mengimpor berkas "problems.csv" dari use case), gunakan opsi Ikatkan set data dari dialog pembuatan koneksi virtual:

## Mengimpor set data ke dalam koneksi virtual - 1

Dari sana gunakan tombol Impro yang mengijinkan Anda memilih berkas untuk diimpor dan juga mendefinisikan beberapa opsi impor (pengkodean berkas, tipe berkas, ...). Setelah langkah ini, koneksi virtual siap untuk dipakai:

## Mengimpor set data ke dalam koneksi virtual - 2

Koneksi virtual hasil, diidentifikasi sebagai "c2" disini dibuka dalam jendelanya sendiri:

## Koneksi virtual baru yang dibuka

# SQL yang dapat dipakai dengan koneksi virtual

Anda dapat memakai SQL yang dipahami oleh SQLite dalam sebarang koneksi virtual. Namun sadarilah bahwa jika Anda menentukan objek basis data (di luar SQL yang diperluas yang disajikan di seksi berikutnya), mereka akan hilang saat berikutnya koneksi virtual dibuka.

Lihat bagian SQL yang dipahami oleh koneksi LDAP dan koneksi virtual untuk informasi lebih lanjut.