Test Connection Setiap Kali Set New Connection


Sebelum anda membuat sebuah koneksi ke Database perlu diperhatikan beberapa hal:
1. Apakah RDBMS anda mengijinkan remote connection?
2. Apakah RDBMS anda mengijinkan connection menggunakan jalur TCP-IP?
3. User ID yang akan digunakan apakah bisa dipakai via remote?


Sebagai contoh saya akan memberikan contoh tampilan untuk RDBMS – MS.SQL Server 2008.
Gambar di bawah adalah contoh Jalur Connection yang diperbolehkan.


Gambar di bawah adalah contoh Jenis Login yang diiinginkan.

Berikut saya akan memberikan contoh langkah2 yang biasa dilakukan untuk men-setup koneksi menggunakan PDI (a.k.a. Kettle). Sebagai Informasi Versi PDI yang saya gunakan adalah “Kettle – Spoon Stable Release – 4.2.0”.
1. Buat Object Table Input

2. Klik 2 kali Object tersebut, lalu klik New pada Connection

3. Isi Connectioon Type dengan nama yang anda inginkan. Tapi biasakan nama Connection mencerminkan nama Server dan nama Database yang dtuju. Untuk kemudahan maintenance
4. Pilih Connection Type: MS SQL

5. Access: Native (JDBC)
6. Host Name: Nama Server / IP Address Database yang anda tuju, example: localhost
7. Database Name: Nama Database Tujuan
8. Port Number: biarkan by Default saja, kecuali kalau settingan PORT DB Server nya sudah tidak default
9. Username & Password, supaya lebih aman, gunakan username dan password untuk SQL Authentication
10. Jika sudah, silahkan click TEST button untuk menge-check apakah koneksi anda berhasil atau tidak.

Gambar di bawah adalah contoh TEST connection yang gagal dan berhasil.



Jika anda merasa settingan connection sudah benar tetapi setelah di test ternyata gagal, ada beberapa kemungkinan yang biasa terjadi:
1. Versi JDBC dari Kettle yang anda gunakan sudah obsole (ketinggalan jaman :p)
2. Check Firewall di Server DB, Tambahkan PORT 1433 ke dalam Exclude PORT list.
3. Salah ketik. ??

Kettle design pilih yang simple atau yang kompleks?


Saya ingin mentransformasi data pada 2 table dengan menggunakan Kettle. Saya ingin membuat sebuah design yang simple saja, jangan yang terlalu rumit, tapi design yang saya buat ini harus powerfull. Maksud dari powerfull ini adalah aman, recoverable, bisa mengatasi berbagai masalah yang mungkin terjadi.

Pemikiran seperti ini sangat lazim muncul jika anda masih baru atau sudah mempelajari Data Transformation Design, tidak hanya pada Kettle tapi juga tool yang lainnya. Saya sendiri pun sampai saat ini masih terus mencari sebuah design yang seperti itu. Mana yang paling cocok diterapkan pada sistem yang ada saat ini.

Contoh design yang paling sederhana adalah seperti berikut:

Simple Design

Simple Design

Design seperti di atas sangat mudah sekali dimengerti, tetapi jika kita ingin menggunakan design seperti ini untuk scheduled job, sangatlah tidak dianjurkan. Kenapa tidak dianjurkan? Karena pada design seperti di atas mau tidak mau, kita akan men-truncate table tujuan terlebih dahulu sebelum transformasi dilakukan, jika tidak makan akan terjadi error duplikasi data. Hal inilah yang akan menimbulkan beragam masalah, terutama koneksi jaringan anda bermasalah:

  1. Jika data yang dikirim besar, apakah proses transformasi akan sukses?
  2. Jika proses transformasi gagal, maka data di table tujuan sudah terlanjur di-truncate. Bagaimana cara me-restore data tersebut?

Hal-hal classic seperti ini lah yang ditakuti akan terjadi. Lalu bagaimana cara mengatasi masalah ini? Akan saya coba berikan solusinya pada tulisan ini, tapi sebelumnya kita coba lihat contoh design kettle yang jauh lebih kompleks.

Contoh design yang kompleks:

Bisa dilihat di:

Data Transfer Loop Handling (Bagian 1)
Data Transfer Loop Handling (Bagian 2)

Complex Design

Complex Design

Kalau kita lihat dari design seperti di atas, mungkin yang akan keluar pertama kali dipikiran anda: “Itu apa yah? Kok kayaknya rumit sekali.”
Setidaknya itulah yang keluar dipikiran saya :p
Tapi jika anda mencoba untuk mempelajari-nya tidak sesulit pada kesan pertama kok. Hehe..

Tenang saja, saya solusi yang saya berikan jauh lebih sederhana daripada design di atas. Tapi pilihan tetap ada di tangan anda. 😉

Mari langsung saja ke inti permasalahannya, solusi yang akan saya berikan sebenarnya tidak terlalu jauh dari design yang paling sederhana yang kita bahas pertama kali. Jika kita perhatikan dan analisa lebih jauh design awal, sebenarnya masalah yang paling besar atau saat yang paling rentan adalah pada saat kita akan sudah men-truncate table tujuan sampai data selesai ditransfer. Kita bisa mempersingkat waktu antara men-truncate table sampai data selesai ditransfer dengan cara mempergunakan bantuan 1 buah table lagi yang akan digunakan sebagai temporary table.

Jadi kria-kira scenario-nya dalah sebagai berikut:

  1. Kita men-create sebuah Temporary Table
  2. Kettle mentransfer data dari Table Input ke Table Temporary
  3. Table Output di drop
  4. Lalu Table Temporary di rename menjadi Table Output

Dengan begitu resiko data yang hilang/gagal di transfer akan menjadi sangat kecil. Tentu saja karena masih ada resiko tranformasi data gagal. Maka pada tahap no.1 kita akan tambahkan sql script untuk melakukan penge-cekan apakah Table Temporary masih exist atau tidak, jika ya akan di drop.

Kira-kira Design-nya seperti ini:

Solution Design

Solution Design

Mengenai bagaimana cara untuk mengcreate table, mendrop table, mengecek apakah table x exist atau tidak, tidak saya bahas pada artikel ini. Karena setiap Database mempunyai native sql yang berbeda-beda.

Semoga tulisan ini bermanfaat bagi anda.

Spoon Quick Start


Langsung to the point saja. Di artikel ini akan saya berikan contoh bagaimana cara cepat dan mudah menggunakan Spoon. IMHO inti dari penggunaan spoon mungkin bisa dikatakan sama dengan fasilitas DTS pasa MS.SQL Server.

Contoh Kasus:

Saya ingin mentransfer data sebuah table dari Database MS.SQL Server 2000 ke Database IBM AS400. Data database yang digunakan sebagai berikut:

MS SQL 2000 IBM AS400
Server 192.168.1.20 192.168.1.50
Database Asal Tujuan
PORT 1433 (default-nya MS SQL 2000)
Username andreas andreas
Password tjong tjong

Lalu misalkan table yang ingin ditransfer adalah table CodeMaster, kira2 design nya seperti ini:

CodeMaster
Currency
Code
Name

Lalu ingin ditransfer ke database Tujuan dengan design table dengan asumsi field type and field length nya sama antara database awal dan tujuan:

CDMSTR
CRC
CODE
NAME

Langsung saja kita jalankan kettle dengan mengklik spoon.bat jika anda windows user atau spoon.sh jika anda UNIX user. Jika sudah masuk lalu ada tampilan untuk memasukkan ID atau Password untuk repository, silahkan pilih No repository. Mengenai apa itu repository dan apa kegunaannya, akan saya coba jelaskan pada artikel saya yang lainnya.

Setelah sudah masuk ke Halaman utama Kettle, klik New — Transformation. Lalu buatlah design seperti gambar di bawah ini. Caranya dengan mengklik Core Objects, lalu tinggal drag and drop. Object yang dibutuhkan ada 3, yaitu: Table Input, Select Values, dan Table Output.

design_awal

Klik 2 kali pada Table Input. Pada field Connection klik new. Isikan dengan data database Asal. Jika sudah selesai klik Test Connection apakah sudah success atau belum. Klik Ok. Pada bagian SQL isikan dengan Query: SELECT Currency
,Code
,Name
From CodeMaster

Klik Ok.

database_asal

table_input

Klik 2 kali pada Table Output. Pada field Connection klik new. Isikan dengan data database Tujuan, untuk bagian PORT isi saja dengan (-1). Jika sudah selesai klik Test Connection apakah sudah success atau belum. Pada Column Target Table isikan dengan CDMSTR. Sisa column yang laen biarkan saja apa adanya. Akhiri dengan klik OK.

database_tujuan

Coba hubungkan Table Input dengan Select Values dengan cara menekan Scroll pada Mouse, mulai dari Table Input, lalu lepaskan setelah kursor sampai ke Object Select Values. Coba hubungkan Select Values dengan Table Output dengan cara yang sama.

Klik 2 kali pada Select Values. Pilih Tab Meta-data, klik Get fields to change, maka column Fieldname akan terisikan dengan isi Table CodeMaster pada Database Asal. Isi column Rename sesuai dengan lawan Table CodeMaster di Table CDMSTR. Jika sudah Klik OK.

Save design yang sudah anda buat. Lalu coba jalankan (klik tombol run di atas).

Selamat anda sudah berhasil melakukan transfer data dengan menggunakan fasilitas Spoon pada Kettle.

Pentaho : Kettle Repository Quick Tutor


Pendahuluan

Repository adalah suatu tempat untuk menyimpan multi database atau file yang akan digunakan bersama-sama. Biasanya programmer yang bekerja sebagai team menggunakan repository untuk menyimpan script,file, dan data lainnya agar bisa  digunakan secara pararel dan mudah dalam mengelola update versionnya. Kettle menyediakan layanan repository ini, dimana kita dapat men-set user yang dapat men-akses suatu job transformation.  Pada artikel ini kita hanya akan dibahas cara membuat suatu repository pada Kettle.

Isi

1. Requiretment
Kebutuhan utama untuk membuat suatu repository ada 2, yaitu:

  • Kettle itu sendiri
  • Database –> pada contoh kali ini, saya akan menggunakan MySql 1.2.12

2. Creating database
Langkah yang pertama kali harus anda lakukan adalah membuat database, sebagai contoh saya akan membuat database dengan nama “test_repo”. Database ini yang akan menyimpan semua data repository yang akan anda buat.

3. Masuk ke kettle.exe
Masuklah ke dalam kettle.exe (bagi pengguna Windows), bisa dengan cara mengklik kettle.exe atau spoon.bat. Jika anda menggunakan LINUX anda bisa masuk ke dalam kettle dengan cara menjalankan spoon.sh

4. Create repository
Langkah selanjutnya adalah membuat repository baru yang akan anda gunakan. Jika anda sudah masuk ke dalam kettle maka akan muncul tampilan sebagai berikut:

Pilih : Repository -> connect to repository, atau bisa menggunakan shortcut CTRL-R

Lalu akan muncul tampilan sebagai berikut:

Click button new, lalu akan muncul window baru. Klik button new kembali. Lalu akan muncul form Connection Information, isi dengan profile database yang anda gunakan. Pada contoh ini saya akan mengisi sebagai berikut :

  • Connection Name : TEST REPOSITORY (Up to you)
  • Connection Type : MySQL (ganti dengan DBMS yang anda pakai)
  • Method of Access : Native
  • Server Host Name: localhost (bisa diganti dengan IP, 127.0.0.1 default MySql)
  • DatabaseName : test_repo (nama database yang anda create)
  • Port Number : 3306 (Kalau anda tidak tahu, biarkan default saja)
  • Username : root (Username untuk database anda)
  • Password : (Password untuk database anda)

Anda bisa meng-klik test button untuk menge-cek apakah koneksi sudah ada atau tidak.

5. Building repository
Jika tahap 1-4 sudah anda lakukan, sekarang tinggal masuk dalam tahap terakhir, yaitu building/create repository. Yang perlu anda lakukan hanyalah meng-klik button Create or Upgrade pada window:

6. Finish

Selamat anda sudah berhasil membuat sebuah repository. Dan sekarang anda sudah bisa login ke dalam repository anda.