BAB II KAJIAN PUSTAKA 2.1 State Of The Art Review Beberapa penelitian yang berkaitan dengan pengembangan model untuk nearly real time data warehouse (NRTDWH) telah banyak dilakukan, diantaranya penelitian yang dilakukan oleh Wisswani dkk, (2012) yang melakukan pemodelan change data capture untuk nearly real time data warehouse dengan meletakkan trigger pada sisi On Line Transactional Processing (OLTP). NRTDWH dalam penelitian ini diimplementasikan dalam dua tahapan. Tahap pertama dilakukan dengan memodelkan teknik pengambilan data agar data yang dikelola oleh mesin extract, transfer, load (ETL) menjadi lebih ringkas. Tahap ini meletakkan staging area pada on line transactional processing (OLTP). Selain itu pada OLTP juga diterapkan metode change data capture (CDC) yang akan diimplementasikan dengan active database berupa trigger. Tahap kedua adalah proses sinkronisasi pemindahan data dari staging area ke NRTDWH. Penelitian lain tentang NRTDWH juga dilakukan oleh Bokade dkk, (2013) yang membahas tentang framework dari change data capture berdasarkan pada transaction log file dari suatu basis data dan proses ekstraksi data pada real time data warehouse. Pada penelitian ini dijelaskan bahwa ada beberapa teknik dan teknologi yang dapat diterapkan untuk menangani proses CDC, diantaranya yaitu : (1) Transaction Log File; (2) Trigger Method; (3) RDBMS Replication. Pada penelitian ini dinyatakan bahwa hampir 11 semua DBMS memiliki 12 transaction log file yang mencatat semua perubahan yang terjadi dalam basis data yang dilakukan oleh setiap transaksi. Untuk menangkap perubahan yang terjadi pada basis data, kita harus memeriksa dan menganalisa isi dari transaction log file dari basis data. Ketika proses CDC diimplementasikan menggunakan teknik transaction log file maka proses analisa transaction log file tidak akan mempengaruhi operational transactional database. Dari penelusuran yang penulis lakukan di beberapa sumber pustaka, termasuk di beberapa database hasil penelitian seperti www.doaj.com, www.proquest.com, scholar.google.com, ieeexplore.ieee.org, Penelitian yang membahas tentang integrasi NRTDWH dengan SOA masih sangat jarang dilakukan (jumlah jurnal yang ditemukan kurang dari 6). Cristian, (2010) melakukan penelitian tentang pembuatan model data warehouse dengan menggunakan metode service oriented architecture untuk menunjang sistem informasi eksekutif pada Universitas Budi Luhur. Model ini dikembangkan dengan menggunakan metode SOA dengan tujuan untuk menghasilkan data yang bisa diakses oleh end application yang berbeda-beda dan independen terhadap DBMS. Pengembangan data warehouse dalam penelitian ini menggunakan pendekatan business dimensional life cycle. Salah satu pendekatan yang diusulkan oleh Ralph Kimball, yaitu mengintegrasikan pengembangan dari tiga sudut pandang berbeda, yaitu teknologi, data dan aplikasi dari pendekatan bisnis. Untuk model skema yang digunakan ialah star schema, dimana satu tabel fakta dikelilingi oleh beberapa tabel dimensi. Penggunaan skema ini dilandasi atas kemudahan query dan akses terhadap tabel dimensi yang lebih mudah. Model 13 distribusi data warehouse yang dikembangkan berbasis web service dengan framework WSF/PHP. Web service dikembangkan dalam bentuk file PHP dengan format yang disesuaikan dengan framework. Untuk keperluan prototipe ini, dikembangkan contoh 6 service. Penelitian tentang SOA telah banyak dilakukan, diantaranya penelitian Mankad dan Sajja, (2010) yang membahas bagaimana arsitektur Procedural Developments, Structured Design, Client Server Technology, Transaction Processing, Component Oriented N tier, World Wide Web, Object Oriented Architecture telah berhasil membuktikan bahwa mereka sudah mampu memberikan keuntungan dalam perancangan suatu perangkat lunak tertentu. Akan tetapi disaat yang bersamaan mereka kurang efisien untuk memenuhi kebutuhan yang cepat dalam penyediaan beberapa aplikasi seperti aplikasi terintegrasi. Dalam penelitian ini dijelaskan bahwa arsitektur SOA mampu memberikan solusi terhadap kekurangan dari arsitektur seperti di atas karena: 1. SOA dapat dikembangkan dari sistem yang sudah ada. Service dapat dibuat menggunakan teknologi yang sudah ada dengan pendekatan berbasis komponen. Hal ini membuat SOA mampu memberikan alternatif solusi lain secara fleksibel. 2. SOA dapat ditanamkan pada arsitektur berbasis objek dengan menambahkan lapisan abstraksi. 3. SOA bukan hanya suatu arsitektur dari services jika dilihat dari perspektif teknologi tapi juga suatu kebijakan, praktek dan kerangka kerja dimana SOA dapat memastikan bahwa suatu service yang tepat sudah disediakan dan dikonsumsi. 14 4. SOA dapat menawarkan services baru kepada pelanggan tanpa harus khawatir dengan infrastruktur IT yang ada dibelakangnya. 5. SOA dapat memberikan efektivitas biaya dengan mengintegrasikan sistem historis terpisah dengan penurunan waktu siklus dan biaya. 6. SOA dapat mengurangi risiko dengan meningkatkan visibilitas operasi bisnis. Tabel 2.1 berisi daftar penelitian yang sudah dilakukan yang terkait dengan topik yang penulis ambil pada pembuatan thesis ini. Tabel 2.1 Daftar Penelitian yang dijadikan acuan Area Penelitian No Judul Penelitian Model Data Warehouse dengan Service 1 Oriented Architecture untuk Menunjang Sistem Informasi Eksekutif Utilization of Web Services for Service 2 Oriented Architecture Change Data Capture on OLTP Staging 3 Area for Nearly Real Time Data Warehouse base on Database Trigger Framework Of Change Data Capture And 4 Real Time Data Warehouse Tahun DWH NRT SOA 2010 √ X √ 2010 X X √ 2012 √ √ X 2013 √ √ X 2.2 Konsep Data Warehouse Rainardi (2008:p.1) menjelaskan data warehouse merupakan suatu sistem yang mengambil dan menkonsolidasikan data secara periodik dari sistem asal menjadi suatu penyimpanan data dimensional atau ternormalisasi. Data warehouse biasanya akan tetap menyimpan informasi yang berasal dari beberapa tahun belakangan yang akan dipakai untuk business intelligence atau untuk keperluankeperluan analisis. Data warehouse biasanya diperbarui dalam suatu periode waktu tertentu, tidak setiap suatu transaksi terjadi pada sistem asal. 15 Menurut Vincent Rainardi, ada dua definisi utama dari data warehouse yang dikonsepsikan oleh dua orang yang disebut sebagai bapak dari data warehouse, yaitu Bill Inmon dan Ralph Kimball (Rainardi, 2008:p.16). Menurut Bill Inmon, data warehouse merupakan sekumpulan data yang berorientasi subjek, terintegrasi, non-volatile dan time-variant untuk mendukung pengambilan keputusan oleh pihak manajemen (Inmon, 2005:p.29). Menurut Ralp Kimball, data warehouse adalah suatu sistem yang mengambil, membersihkan, menyesuaikan, dan mengirimkan sumber data ke dalam penyimpanan data dimensional dan kemudian mendukung serta mengimplementasikan query dan analisis untuk tujuan pengambilan keputusan (Kimball, 2004:p.23). Definisi lain yang cukup menarik tentang data warehouse dikemukakan oleh Hammergren dan Simon (2009), yang menyebutkan data warehouse sebagai data yang dikoordinasikan, dibangun, dan secara periodik disalin dari berbagai sumber ke dalam sebuah lingkungan yang dioptimalkan untuk analisis dan pengolahan informasi (Hammergren, 2009:p.9). 2.3 Karakteristik Data Warehouse Berikut ini adalah karakteristik utama dari data warehouse menurut Turban (2005:p.306-307): a. Berorientasi-subjek Data diorganisasikan oleh subjek detail (misal berdasarkan pelanggan, jenis kebijakan, dan klaim dalam perusahaan asuransi), yang berisi hanya informasi yang relevan untuk mendukung keputusan. Orientasi subjek memungkinkan para pengguna untuk menentukan tidak hanya bagaimana bisnis mereka sedang 16 berjalan, tetapi juga mengapa ia berjalan. Data warehouse berbeda dengan database operasional dalam hal kebanyakan database operasional mempunyai sebuah orientasi produk dan disetel untuk menangani transaksi yang memperbarui database; orientasi subjek menyediakan sebuah pandangan yang menyeluruh mengenai organisasi. b. Terintegrasi Data pada sumber berbeda dapat dienkode dengan cara yang berbeda. Sebagai contoh, data jenis kelamin dapat dienkode sebagai 0 dan 1 di satu tempat dan ‘m’ dan ‘f’ di tempat lain. Di dalam warehouse, enkode tersebut dibuat (dibersihkan) ke dalam satu format sehinga mereka distandarisasi dan konsisten. Banyak organisasi menggunakan terminologi yang sama untuk data dari jenis yang berbeda. Sebagai contoh, “penjualan bersih” bisa berarti komisi bersih untuk departemen pemasaran, tetapi retur penjualan kotor bagi departemen akuntansi. Data yang terintegrasi mengatasi inkonsistensi dan menyediakan istilah yang seragam di organisasi keseluruhan. Juga, format, waktu dan data bervariasi di seluruh bumi. c. Time-variant (time series) Data tidak menyediakan status saat ini. Mereka disimpan untuk lima atau sepuluh tahun atau lebih dan digunakan untuk tren, peramalan, dan perbandingan. Ada kualitas sementara pada sebuah data warehouse. Waktu adalah dimensi penting yang harus didukung oleh semua data warehouse. Data untuk analisis dari berbagai sumber berisi berbagai poin waktu (misal harian, mingguan, bulanan). 17 d. Non-volatile Sekali dimasukkan ke dalam warehouse, data adalah read-only, mereka tidak bisa diubah atau dibarui. Data usang dibuang, dan perubahan direkam sebagai data baru. Ini memungkinkan data warehouse untuk disesuaikan hampir secara eksklusif untuk akses data. Sebagai contoh, sejumlah besar ruang kosong (untuk pertumbuhan data) umumnya tidak diperlukan dan reorganisasi database dapat dijadwalkan bersama dengan operasi pengisian sebuah data warehouse. e. Ringkas Jika diperlukan, data operasional dikumpulkan ke dalam ringkasan-ringkasan. f. Tidak ternormalisasi Data di dalam sebuah data warehouse biasanya tidak dinormalisasi dan sangat redundan. g. Sumber Semua data ada, baik internal maupun eksternal. h. Metadata Metadata digambarkan sebagai data tentang data. 2.4 Arsitektur Data Warehouse Sistem data warehouse memiliki dua arsitektur utama yaitu : arsitektur aliran data dan arsitektur sistem (Rainardi, 2008:p.29). 2.4.1 Arsitektur aliran data Arsitektur aliran data berisi mengenai bagaimana penyimpanan data diatur di dalam data warehouse dan bagaimana data mengalir dari sistem asal ke pengguna melalui penyimpanan-penyimpanan data ini (Rainardi, 2008:p.29). 18 Penyimpanan data (data stores) merupakan komponen penting dari arsitektur aliran data. Penyimpanan data merupakan satu atau beberapa basis data atau filefile yang berisi data dari data warehouse, yang disusun dalam suatu format tertentu dan terlibat dalam proses-proses data warehouse. Berdasarkan hak akses dari pengguna maka penyimpanan data dapat diklasifikasikan menjadi tiga (Rainardi, 2008:p.30), yaitu: a. User facing data store Penyimpanan data yang tersedia untuk end user dan di-query oleh aplikasi end user. b. Internal data store Penyimpanan data yang digunakan secara internal oleh komponen data warehouse untuk tujuan integrasi, pembersihan, pencatatan dan persiapan data dan tidak dibuka untuk diakses oleh end user dan aplikasi end user. c. Hybrid data store Penyimpanan data yang digunakan baik untuk mekanisme internal data warehouse dan untuk diakses oleh end user dan aplikasi end user. Berdasarkan format data, penyimpanan data dapat diklasifikasikan menjadi empat (Rainardi, 2008:p.30), yaitu: a. Stage Stage merupakan penyimpanan data internal yang digunakan untuk merubah dan mempersiapkan data yang diperoleh dari sistem asal, sebelum data dikirim ke penyimpanan data yang lain dalam data warehouse. 19 b. Normalized data store (NDS) NDS merupakan penyimpanan data master internal dalam bentuk satu atau beberapa basis data relasional ternormalisasi untuk tujuan integrasi data yang berasal dari beberapa sumber data yang ditangkap dalam proses stage, sebelum data dikirim ke user-facing data store. c. Operational data store (ODS) ODS merupakan penyimpanan data hybrid dalam bentuk satu atau beberapa basis data relasional ternormalisasi yang mengandung data transaksi serta data master versi terkini untuk tujuan mendukung aplikasi operasional. d. Dimensional data store (DDS) DDS merupakan user facing data store dalam bentuk satu atau beberapa basis data relasional, dimana data disusun dalam format dimensional untuk tujuan mendukung permintaan analisis data. Untuk lebih jelasnya arsitektur aliran data dapat dilihat pada gambar 2.1: Gambar 2.1 Arsitektur Aliran Data (Sumber : Rainardi, 2008:p.35) 20 2.4.2 Arsitektur sistem Arsitektur sistem berisi mengenai konfigurasi fisik dari server-server, jaringan, perangkat lunak, perangkat penyimpanan, dan klien-klien (Rainardi, 2008:p.29). Perancangan arsitektur sistem membutuhkan pengetahuan tentang perangkat keras (khususnya server), jaringan (yang berhubungan dengan keamanan dan kinerja) serta media penyimpanan (SAN, RAID, Tape Backup). Untuk lebih jelasnya arsitektur sistem dapat dilihat pada gambar 2.2: Gambar 2.2 Arsitektur Sistem (Sumber : Rainardi, 2008:p.42) 2.5 Metodologi Pengembangan Data Warehouse Pembuatan data warehouse pada penelitian ini menggunakan pendekatan business dimensional lifecycle dari Ralph Kimball. Adapun diagram dari pendekatan business dimensional lifecycle ini dapat dilihat pada gambar 2.3: 21 Project Planning Business Requirement Definition Technical Architecture Design Product Solution & Installation Dimensional Modelling Physical Design End User Application Specification End User Application Development Data Staging Design & Development Deployment Maintenance & Growth Project Management Gambar 2.3 Diagram Business Dimensional Life Cycle (Sumber : Kimball, 1998:p.2.3) Pendekatan business life cycle yang diusulkan oleh Ralp Kimball ini adalah pendekatan yang mengintegrasikan 3 konsepsi yang berbeda dari sudut pandang bisnis, yaitu teknologi, data, dan aplikasi (Kimball, 1998:p.2.2). Berikut ini akan dijelaskan masing-masing komponen yang terdapat pada diagram business dimensional lifecycle: a. Project Planning Perencanaan proyek membahas definisi dan cakupan dari proyek data warehouse, termasuk penilaian kesiapan dan justifikasi bisnis. Perencanaan proyek berfokus pada sumber daya, ditambah dengan tugas proyek yang akan diberikan, durasi waktu, dan urutan pengerjaan. b. Data Track : Dimensional Modelling Definisi dari kebutuhan bisnis menentukan data yang diperlukan untuk kebutuhan analisis pengguna bisnis. Merancang model data untuk mendukung analisis membutuhkan pendekatan yang berbeda dari yang digunakan untuk 22 desain sistem operasional. Tahapan ini mengidentifikasi tabel fakta, dimensidimensi yang terkait dan atribut-atribut. Desain database logis dilengkapi dengan struktur tabel yang sesuai dan hubungan primary / foreign key. Rencana agregasi awal juga dikembangkan pada tahapan ini. c. Data Track : Physical Design Desain database fisik yang berfokus pada bagaimana cara mendefinisikan struktur fisik yang diperlukan untuk mendukung desain database logis. Elemen utama dari proses ini meliputi mendefinisikan penamaan standar dan menyiapkan lingkungan database. Pengindeksan awal dan strategi partisi juga ditentukan pada tahapan ini. d. Data Track : Data Staging Design and Development Tahapan ini berfokus pada perencanaan dan pembuatan database data staging. Proses pada data staging ini meliputi extraction, transformation, dan load. e. Technology Track : Technical Architecture Design Lingkungan data warehouse membutuhkan integrasi dari beberapa jenis teknologi. Pada tahapan ini akan ditentukan jenis teknologi yang akan dipakai pada data warehouse seperti spesifikasi perangkat keras server, jaringan, perangkat lunak sistem operasi, perangkat lunak basis data, dll. Ada tiga hal penting yang harus dipertimbangkan dalam tahapan ini, yaitu : analisa kebutuhan arsitektur, arsitektur yang sedang berjalan dan arah pengembangan arsitektur di masa depan. 23 f. Technology Track : Product Selection and Installation Pada tahapan ini akan dilakukan proses evaluasi dan pemilihan dari komponenkomponen hardware dan software yang telah dipilih pada tahapan technical architecture design. Setelah dipilih maka komponen ini kemudian akan dipakai/dipasang. g. Application Track : End User Application Specification Sebaiknya mendefinisikan satu set aplikasi pengguna akhir yang standar karena tidak semua bisnis pengguna memerlukan akses ad hoc ke gudang data. Spesifikasi aplikasi menggambarkan template laporan, parameter yang harus dimasukkan oleh pengguna, dan perhitungan yang diperlukan. Spesifikasi ini memastikan bahwa tim pengembangan dan pengguna bisnis memiliki pemahaman umum yang sama akan aplikasi yang akan dikembangkan. h. Application Track : End User Application Development Pada tahapan ini akan dikembangkan end user application yang telah disesuaikan dengan spesifikasi yang telah ditentukan pada tahapan end user application specification. i. Deployment Deployment merupakan proses konvergensi dari teknologi, data, dan aplikasi pengguna akhir yang diakses dari komputer desktop pengguna bisnis. j. Maintenance and Growth Pada tahapan ini akan dilakukan proses pemeliharaan pada teknologi, data, dan aplikasi pengguna akhir yang terdapat dalam lingkungan data warehouse. Seiring perkembangan waktu pasti akan terjadi pertumbuhan data yang pesat 24 dimana mengakibatkan terjadinya penyesuaian pada teknologi, data, dan aplikasi pengguna akhir terhadap kebutuhan yang baru. k. Project Management Manajemen proyek memastikan bahwa kegiatan-kegiatan yang terdapat dalam business dimensional lifecycle tetap berada pada jalur yang benar (spesifikasi yang telah ditentukan sebelumnya) dan berjalan sinkron antar kegiatan satu dengan kegiatan yang lain. 2.6 Sistem ETL dalam Data Warehouse ETL merupakan singkatan dari extract, transform, load. Sistem ETL merupakan sekumpulan proses-proses yang mengambil data dari sistem sumber, melakukan perubahan pada data dan mengirimkan data ke suatu sistem target (Rainardi, 2008:p.4). Menurut Kimball, sistem ETL merupakan pondasi dari data warehouse. Sebuah sistem ETL yang dirancang dengan baik akan mengekstrak data dari sistem sumber, memberlakukan standar kualitas data dan konsistensi data, melakukan penyesuaian data sehingga beberapa sumber berbeda dapat digunakan secara bersama-sama, dan pada akhirnya akan mengirimkan data dalam format siap pakai sehingga pengembang aplikasi dapat membangun aplikasi dan pengguna akhir dapat membuat keputusan (Kimball, 2004:p.xxi). Berikut ini pada gambar 2.4 akan ditunjukkan arsitektur sistem ETL dalam data warehouse khususnya untuk bagian staging area: 25 Gambar 2.4 Arsitektur Sistem ETL pada Bagian Staging Area (Sumber : Kimball, 2004:p.18) 2.6.1 Extraction Data mentah yang berasal dari sistem sumber biasanya ditulis langsung ke disk dengan beberapa restrukturisasi minimal sebelum transformasi konten yang signifikan terjadi. Data dari sistem sumber terstruktur (seperti IMS database, atau XML data set) sering ditulis ke flat file atau tabel relasional dalam langkah ini. Hal ini memungkinkan proses ekstraksi data menjadi sesederhana dan secepat mungkin serta memungkinkan fleksibilitas yang lebih besar untuk mengulangi proses ekstraksi data jika ada gangguan. Data awal yang diambil kemudian dapat dibaca beberapa kali seperlunya untuk mendukung langkah-langkah berikutnya. Dalam beberapa kasus, data awal yang diambil akan dibuang setelah langkah pembersihan selesai, sedangkan pada kasus lain data akan disimpan sebagai arsip cadangan jangka panjang. Data awal yang diambil juga dapat disimpan untuk setidaknya satu siklus capture sehingga perbedaan antara proses ekstraksi data yang berturut-turut dapat dihitung (Kimball, 2004:p.18). 26 2.6.2 Cleaning Proses cleaning ini merupakan salah satu bagian dari proses data transformation. Dalam kebanyakan kasus, tingkat kualitas data yang dapat diterima dari sistem sumber bisa berbeda dengan kualitas yang dibutuhkan oleh data warehouse. Kualitas pengolahan data dapat melibatkan banyak langkah diskrit, termasuk memeriksa nilai-nilai yang valid (apakah ada kode pos? dan apakah kode pos berada dalam rentang nilai yang valid?), memastikan konsistensi pada nilai (apakah kode pos dan kota konsisten?), menghapus duplikat (apakah pelanggan yang sama muncul dua kali dengan atribut sedikit berbeda?), dan memeriksa apakah aturan bisnis yang kompleks dan prosedur telah ditegakkan (apakah pelanggan platinum memiliki keterkaitan dengan status kredit diperpanjang?). Transformasi data-cleaning bahkan mungkin melibatkan intervensi manusia. Hasil langkah pembersihan data sering disimpan secara semi permanen karena transformasi yang diperlukan sulit dan tidak dapat diubah. Ini adalah pertanyaan yang menarik dalam lingkungan apapun, apakah data yang sudah dibersihkan dapat dikirim kembali ke sistem sumber untuk meningkatkan kualitas data mereka dan mengurangi kebutuhan untuk memproses masalah data yang sama berulang-ulang. Bahkan jika data yang sudah dibersihkan tidak dapat dikirimkan ke sistem sumber, permasalahan ini tetap harus dilaporkan supaya dapat dilakukan perbaikan dalam sistem sumber (Kimball, 2004:p.18-19). 2.6.3 Conforming Proses conforming merupakan salah satu bagian dari proses data transformation. Data konformasi diperlukan ketika dua atau lebih sumber data 27 digabungkan ke dalam data warehouse. Sumber data terpisah tidak dapat dilihat bersama-sama kecuali beberapa atau semua label tekstual dalam sumber-sumber ini telah dibuat identik dan kecuali langkah-langkah numerik yang serupa telah dirasionalisasi secara matematis sehingga perbedaan dan rasio antara langkahlangkah ini menjadi masuk akal. Data konformasi merupakan langkah signifikan yang lebih sederhana dari data cleaning. Data konformasi memerlukan kesepakatan perusahaan besar untuk penggunaan domain dan langkah-langkah standar (Kimball, 2004:p.19). 2.6.4 Delivering Proses delivering ini lebih dikenal dengan nama proses loading. Proses delivering adalah suatu proses untuk mengirim data hasil proses transformasi data (data yang sudah dibersihkan dan data yang sudah disesuaikan formatnya) ke dalam data warehouse. Data warehouse ini berupa penyimpanan data dimensional (Data Dimensional Store). Isi dari data dimensional store (DDS) inilah yang akan diakses oleh aplikasi end user baik untuk kepentingan business intelligence (BI), analytics (On Line Analytical Processing), data mining, dashboard, scorecards, reports (Rainardi, 2008). 2.7 Metode ETL Dalam hal siapa yang memindahkan data keluar dari sistem sumber, kita dapat mengkategorikan metode ETL menjadi empat pendekatan (Rainardi, 2008:p.176): 28 a. Proses ETL menarik data keluar dari sistem sumber dengan melakukan query secara reguler ke basis data sistem sumber. Ini merupakan pendekatan yang paling umum digunakan. Proses ETL melakukan koneksi ke basis data sistem sumber, melakukan query data, dan membawa data keluar. b. Proses trigger di basis data sistem sumber mendorong data yang berubah keluar dari sistem sumber. Trigger basis data adalah kumpulan dari perintah SQL yang dieksekusi setiap ada operasi insert, update, atau delete pada suatu tabel. Dengan menggunakan trigger, kita dapat menyimpan baris data yang berubah ke dalam tabel yang lain. c. Proses terjadwal yang terdapat pada sistem sumber yang mengirim data keluar secara reguler. Hal ini mirip dengan pendekatan yang pertama, akan tetapi program yang melakukan query ke basis data bukanlah suatu program ETL eksternal, melainkan suatu program eksporter internal yang berjalan pada server sistem sumber. d. Log reader membaca file log basis data untuk mengidentifikasi perubahan data. File log basis data mengandung suatu catatan dari suatu transaksi yang terjadi pada basis data tersebut. Log reader adalah suatu program yang memahami format dari data yang terdapat pada file log. Log reader membaca file-file log, mengirim data ke luar sistem sumber, dan menyimpan data di tempat lain. Keempat metode ETL ini dapat dilihat pada gambar 2.5: 29 Gambar 2.5 Empat Metode ETL (Sumber : Rainardi, 2008:p.176) 2.8 Pendekatan dalam Pembuatan Data Warehouse Menurut Ponniah, ada dua pendekatan dalam pembuatan data warehouse yaitu pendekatan top-down dan pendekatan bottom-up (Ponniah, 2010:p.29). 2.8.1 Pendekatan Top-Down Bill Inmon adalah salah satu pendukung terdepan dari pendekatan top-down. Dia telah mendefinisikan data warehouse sebagai repositori terpusat untuk seluruh perusahaan. Dalam pendekatan ini, data di gudang data disimpan pada tingkat terendah dari granularity yang didasarkan pada model data dinormalisasi. Dalam visi Inmon, gudang data pada pusat "Corporate Information Factory" (CIF) menyediakan kerangka logis untuk memberikan kecerdasan bisnis (BI) untuk perusahaan. Operasi bisnis menyediakan data untuk mendorong CIF. Data warehouse terpusat akan menyediakan kebutuhan untuk dependent data mart yang mungkin dirancang berdasarkan model data dimensi. Keuntungan dari pendekatan ini adalah: a. Bukan penggabungan dari data mart-data mart yang berbeda. b. Tempat penyimpanan data hanya satu, terpusat. 30 c. Aturan dan kontrol dilakukan secara terpusat. d. Dapat melihat hasil cepat jika diimplementasikan secara iteratif. Kerugian dari pendekatan ini adalah: a. Membutuhkan waktu pengembangan yang lebih lama walaupun dengan menggunakan metode iteratif. b. Memiliki resiko kegagalan yang sangat tinggi. c. Membutuhkan keterampilan lintas fungsional yang sangat tinggi. d. Pengeluaran akan besar jika tidak terdapat pembuktian dari konsep. 2.8.2 Pendekatan Bottom-Up Ralp Kimball, merupakan salah satu pendukung terdepan untuk pendekatan Bottom-Up. Dalam pendekatan ini data mart dibuat pertama kali untuk memberikan analisis dan kemampuan pelaporan untuk subjek bisnis yang spesifik berdasarkan pada model data dimensi. Data mart berisi data pada tingkat terendah dari granularity dan juga sebagai ringkasan, tergantung pada kebutuhan untuk analisis. Data mart ini kemudian akan digabungkan menjadi suatu data warehouse. Keuntungan dari pendekatan ini: a. Cepat dan mudah untuk diimplementasikan. b. Dapat memberikan keuntungan atas investasi dengan suatu konsep yang dapat dibuktikan. c. Resiko kegagalan kecil. d. Dapat melakukan penjadwalan supaya data mart yang penting dibuat terlebih dahulu. 31 Kerugian dari pendekatan ini: a. Setiap data mart memiliki pandangan yang berbeda akan data. b. Dapat terjadi data redundan pada setiap data mart. c. Data tidak konsisten. d. Interface tidak dapat diatur. 2.9 Dimensional Data Modelling Menurut Rainardi (2008), Sebuah gudang data adalah sistem yang mengambil data dari sistem sumber dan meletakkannya ke dalam penyimpanan data dimensi (data dimensional store). Sebuah data dimensional store (DDS) adalah satu atau beberapa database yang berisi kumpulan data mart dimensional. Data mart dimensional adalah sekelompok tabel fakta yang terkait satu sama lainnya dan dikelilingi oleh beberapa tabel dimensi yang berhubungan dengan tabel fakta, yang berisi pengukuran dari kegiatan bisnis yang dikategorikan oleh tabel dimensi (Rainardi, 2008:p.7). Sebuah penyimpanan data dimensional merupakan penyimpanan data dalam bentuk yang tidak dinormalisasi dimana semua tabel dimensinya telah disesuaikan. Tabel dimensi yang sesuai berarti semua tabel dimensi memiliki dimensi yang sama atau satu tabel dimensi adalah subset dari tabel dimensi yang lain. Dimensi A dikatakan himpunan bagian dari dimensi B ketika semua kolom dimensi A ada di dimensi B dan semua baris dimensi A ada di dimensi B (Rainardi, 2008:p.7). 32 Sebuah penyimpanan data dimensional dapat diimplementasikan secara fisik dalam beberapa bentuk skema yang berbeda: skema bintang (star schema), skema kepingan salju (snow flake schema), dan skema galaksi (galaxy schema). a. Skema Bintang Dalam skema bintang, dimensi tidak memiliki sub tabel (sub dimensi). Skema bintang dapat dilihat pada gambar 2.6. Gambar 2.6 Skema Bintang (Sumber : Inmon, 2005:p.360) b. Skema Kepingan Salju Dalam skema kepingan salju, dimensi dapat memiliki sub dimensi. Tujuan adanya sub dimensi ini adalah untuk meminimalkan terjadinya pengulangan data yang sama (data redundansi). Skema kepingan salju dapat dilihat pada gambar 2.7. Gambar 2.7 Skema Kepingan Salju (Sumber : Inmon, 2005:p.361) 33 c. Skema Galaksi Galaksi skema juga dikenal dengan nama skema konstelasi fakta (fact constellation schema). Dalam skema galaksi kita memiliki dua atau lebih tabel fakta yang saling terkait satu sama lainnya yang dikelilingi oleh beberapa tabel dimensi. Kelebihan dari skema bintang adalah skema bintang lebih sederhana dan lebih konsisten dari skema kepingan salju dan skema galaksi, karena hanya memiliki satu level pada semua dimensi, sehingga memudahkan proses ETL untuk memuat data ke DDS. Kekurangan skema bintang adalah membutuhkan ruang penyimpanan data yang besar karena banyak terjadi pengulangan data (data redundansi) (Rainardi, 2008:p.7). Kelebihan dari skema kepingan salju adalah bahwa beberapa aplikasi analisis data bekerja lebih baik dengan skema kepingan salju dibandingkan dengan skema bintang atau skema galaksi. Kelebihan yang lain dari skema kepingan salju adalah mengurangi terjadinya data redundansi, sehingga lebih sedikit ruang penyimpanan data yang diperlukan. Kekurangan dari skema kepingan salju adalah skemanya lebih komplek karena adanya sub dimensi. Hal ini menyebabkan waktu respon dari suatu query juga akan menurun karena adanya operasi JOIN untuk menggabungkan tabel dimensi dengan tabel sub dimensi (Rainardi, 2008:p.7). Kelebihan dari skema galaksi adalah kemampuan untuk memodelkan peristiwa bisnis (business event) secara lebih akurat dengan menggunakan beberapa tabel fakta. Kekurangan dari skema galaksi adalah arsitekturnya lebih komplek karena terdapatnya dua atau lebih tabel fakta. Hal ini menyebabkan skema ini lebih 34 susah untuk dipahami dan waktu respon juga jauh lebih lambat dibandingkan skema kepingan salju karena operasi JOIN menjadi lebih komplek karena melibatkan beberapa tabel fakta yang terhubung dengan beberapa tabel dimensi (Rainardi, 2008:p.7). 2.10 Komponen Dimensional Data Modelling Dalam dimensional modelling, basis data dibangun berdasarkan pengukuran numerik dari perusahaan. Tabel fakta mengandung pengukuran dan tabel dimensi mengandung konteks pengukuran yang terdapat disekitarnya (Kimball, 2004:p.209). Dalam dimensional data modelling terdapat dua komponen utama yaitu tabel fakta dan tabel dimensi. 2.10.1 Tabel fakta Hubungan antara tabel fakta dan pengukuran adalah sangat sederhana. Jika pengukuran ada, maka dapat dimodelkan menjadi suatu baris pada tabel fakta. Jika suatu baris dari tabel fakta ada maka itu adalah pengukuran (Kimball, 2004:p.209). Sebuah tabel fakta adalah struktur yang berisi banyak kejadian data. Disekitar tabel fakta adalah tabel dimensi, yang menggambarkan salah satu aspek penting dari tabel fakta. Jumlah kemunculan data pada tabel dimensi lebih sedikit dibandingkan dengan jumlah kemunculan data pada tabel fakta (Inmonn, 2005: p.360). Tabel fakta adalah suatu tabel yang menjadi pusat dari beberapa tabel dimensi dalam skema bintang (Inmonn, 2005:p.497). 35 Ciri-ciri tabel fakta adalah (Wiswani, 2012:p.22): a. Primary key pada tabel fakta terdiri atas gabungan lebih dari satu primary key yang dimiliki tabel-tabel dimensi yang terkait (concatenated key). b. Memiliki tingkatan data yang telah teridentifikasi. c. Mudah untuk melakukan rekap data. d. Memiliki jumlah record yang banyak. e. Memiliki kolom atau atribut yang sedikit. f. Tidak memiliki baris yang berisi nilai null. 2.10.2 Tabel dimensi Tabel dimensi merupakan tempat dimana sekumpulan data yang berhubungan dengan tabel fakta ditempatkan dalam suatu tabel multi dimensi (Inmonn, 2005:p.495). Tabel dimensi adalah tabel yang berisi berbagai atribut yang menjelaskan kunci dimensi yang terdapat pada tabel fakta (Rainardi, 2008:p.76). Ciri-ciri tabel dimensi adalah (Wiswani, 2012:p.22): a. Memiliki key unik pada tabel dimensi (primary key). b. Memiliki jumlah kolom atau atribut yang banyak. c. Atributnya textual dan tidak saling berhubungan. d. Tabelnya tidak dilakukan normalisasi. e. Mempunyai kemampuan untuk drill-down dan roll-up. f. Memiliki jumlah record yang sedikit dibandingkan tabel fakta. 36 2.11 Agregasi Tabel Fakta Agregasi adalah proses perhitungan ringkasan data dari keseluruhan data (record) yang ada. Hal ini sering digunakan untuk mengurangi ukuran tabel fakta dengan menggabungkan data ke dalam ringkasan data jika tabel fakta dibuat. Namun, ketika data diringkas dalam tabel fakta, informasi rinci tidak lagi langsung tersedia bagi analis. Jika informasi rinci diperlukan, baris detail yang diringkas harus diidentifikasi dan dicari, mungkin dalam sistem sumber yang memberikan data. Data tabel fakta harus dipertahankan pada kemungkinan granularity terbaik. Menggabungkan data dalam tabel fakta hanya boleh dilakukan setelah mempertimbangkan konsekuensinya (Technet, 2014). Mencampur data agregat dan rinci dalam tabel fakta dapat menyebabkan masalah dan komplikasi bila menggunakan data warehouse. Sebagai contoh, order penjualan sering berisi beberapa item baris dan mungkin berisi diskon biaya, pajak, atau pengiriman yang diterapkan pada total order bukan item baris individu, namun jumlah dan identifikasi barang dicatat pada tingkat item baris. Permintaan summarization menjadi lebih kompleks dalam situasi ini, dan alat-alat seperti Analysis Services sering membutuhkan pembuatan suatu filter khusus untuk menangani permasalahan ini (Technet, 2014). Ada dua pendekatan yang dapat digunakan dalam situasi ini. Satu pendekatan adalah untuk mengalokasikan nilai-nilai tingkat untuk baris item berdasarkan nilai, kuantitas, atau berat pengiriman. Pendekatan lain adalah untuk membuat dua tabel fakta, satu berisi data pada tingkat item baris, yang lain berisi informasi order-level. Kunci identifikasi urutan harus dilakukan dalam tabel rinci 37 fakta sehingga dua tabel dapat dihubungkan. Urutan tabel kemudian dapat digunakan sebagai tabel dimensi ke tabel detail, dengan nilai order-level yang dianggap sebagai atribut dari tingkat urutan hirarki dimensi (Technet, 2014). 2.12 Manajemen Kunci Sebuah surrogate key adalah identifier dari baris data master dalam data warehouse. Dalam DDS, surrogate key digunakan sebagai primary key dari tabel dimensi. Surrogate key adalah bilangan bulat berurutan, mulai dari 0. Jadi, surrogate key adalah 0, 1, 2, 3, ..., dan seterusnya. Dengan menggunakan surrogate key, kita dapat mengidentifikasi data unik yang terdapat pada tabel dimensi. Surrogate key juga ada pada tabel fakta untuk mengidentifikasi atribut dimensi untuk suatu transaksi bisnis tertentu. Surrogate key digunakan untuk menghubungkan tabel fakta dan tabel dimensi. Misalnya, dengan menggunakan surrogate key, kita dapat mengetahui data detail dari seorang pelanggan yang terlibat pada suatu transaksi tertentu (Rainardi, 2008:p.37). Natural key adalah suatu identifier unik dari baris data pada suatu tabel master yang terdapat dalam sistem sumber (OLTP). Ketika terjadi pengambilan data dari OLTP untuk dikirim ke data staging, maka kita perlu menerjemahkan natural key dari sistem sumber menjadi surrogate key untuk data warehouse. Hal ini dapat dilakukan dengan memeriksa surrogate key yang terdapat pada data staging, untuk setiap nilai natural key dari sistem sumber. Jika natural key ada di data staging, itu berarti data sudah ada di data staging dan perlu diperbarui. Jika 38 natural key tidak ada di data staging, itu berarti data tidak ada di data staging dan perlu dibuat (Rainardi, 2008:p.37). Surrogate key tidak akan memiliki arti apa-apa sebelum dilakukan mapping dengan natural key yang terdapat pada sistem sumber (Kimball, 2004:p.214). 2.13 Metode Ekstraksi Data Setelah kita berhasil melakukan koneksi ke sumber data (sistem sumber) maka selanjutnya kita bisa melakukan proses ekstraksi data. Ketika melakukan ekstraksi data dari suatu basis data relasional yang terdiri dari banyak tabel, kita dapat menggunakan salah satu dari empat metode di bawah ini (Rainardi, 2008:p.180-186) : a. Whole Table Every Time Metode whole table every time akan digunakan jika ukuran tabelnya kecil, seperti suatu tabel yang terdiri dari 3 kolom bertipe integer atau varchar (10), dan hanya berisi beberapa baris data. Alasan yang lebih umum mengapa memakai metode ini adalah karena tidak ada timestamp atau kolom identitas yang dapat digunakan untuk mengetahui baris mana yang telah diperbarui sejak proses ekstraksi data yang terakhir. b. Incremental Extract Tabel transaksi dalam suatu organasisasi besar adalah suatu tabel besar yang berisi ratusan ribu baris bahkan ratusan juta baris (atau lebih banyak lagi). Hal ini menyebabkan proses ekstraksi data dapat memakan waktu berhari-hari untuk mengekstrak data dari seluruh tabel. Proses ini merupakan proses yang sangat 39 intensif memakai sumber daya harddisk (storage device) sehingga dapat menurunkan kinerja transaksional pada aplikasi front-end karena terjadi bottleneck pada basis data. Hal Ini bukanlah pilihan yang layak sebagai metode ekstraksi data (karena waktu yang dibutuhkan untuk mengekstraksi data), jadi perlu suatu metode lain untuk mengekstrak data dari sistem sumber. Untuk mengatasi permasalah seperti kasus ini maka digunakan metode incremental extraction. Incremental extraction adalah teknik untuk men-download hanya baris yang mengalami perubahan data pada sistem sumber, bukan men-download seluruh baris yang terdapat pada suatu tabel. Kita dapat menggunakan beberapa hal untuk mengekstraksi data dengan metode incremental extraction, yaitu : kolom timestamp, kolom identitas, tanggal transaksi, pemicu (triggers), atau kombinasi dari beberapa metode ini. c. Fixed Range Jika tidak mungkin untuk mengekstrak seluruh tabel karena tabel terlalu besar dan tidak mungkin untuk melakukan metode incremental extraction, misalnya, karena tidak ada kolom timestamp atau kolom timestamp tidak dapat diandalkan, karena tidak ada kolom identitas incremental extraction yang dapat diandalkan, dan karena tidak mungkin untuk memasang pemicu (triggers) dalam sistem sumber maka ada satu pendekatan yang lain yang bisa kita lakukan. Kita dapat menggunakan metode "fixed range". Pada dasarnya dengan menggunakan metode fixed range, kita akan mengekstrak sejumlah data yang berada pada suatu jangka waktu tertentu. Misalnya, kita 40 mengekstrak data enam bulan terakhir, berdasarkan tanggal transaksi. Kita bisa mendapatkan durasi periode waktu transaksi dari sumber aplikasi jika ada pembatasan pada aplikasi front-end. Sebagai contoh, ketika proses closing (tutup buku) akhir bulan dilakukan, maka baris data tidak akan dapat diubah lagi. Dalam kasus ini, kita dapat men-download data pada lima minggu terakhir pada saat setiap kali proses ETL berjalan atau kita dapat men-download data di mana tanggal transaksi terjadi setelah tanggal akhir bulan (closing date). Jika tidak ada kolom tanggal transaksi dalam tabel dan kita tidak dapat mengekstrak seluruh tabel karena merupakan suatu tabel besar, maka kita dapat menggunakan systemassigned row ID untuk mengekstrak data dengan metode fixed range, seperti mengekstrak 100.000 baris data yang terakhir. Yang dimaksud dengan system-assigned row ID adalah kolom tersembunyi dalam setiap tabel yang berisi nilai-nilai sekuensial yang diberikan oleh sistem. Tidak semua sistem database memiliki system-assigned row ID; misalnya, Oracle dan Informix memiliki system-assigned row ID, tapi SQL Server dan DB/2 tidak. (Dalam DB/2, system-assigned row ID adalah tipe data, bukan kolom tersembunyi.) Bila menggunakan system-assigned row ID, kita tidak memiliki batasan pada aplikasi front-end, jadi kita perlu memonitor sistem sumber dan mencari tahu berapa banyak baris yang kita perlu ambil setiap kali proses ekstraksi data dilakukan. Men-download kolom primary key setiap hari, dan membandingkan data primary key antar setiap proses download, setiap hari, untuk mendeteksi perubahan pada data. Proses identifikasi baris baru dan baris yang dihapus sangat mudah dilakukan dengan membandingkan primary key. 41 d. Related Tables Jika baris dalam tabel sumber diperbarui, maka kita perlu untuk mengambil baris yang bersesuaian dalam tabel lain yang terkait dengan baris pada tabel yang diperbarui. Sebagai contoh, jika order ID 34552 di tabel header order diperbarui dan diekstraksi ke gudang data, baris untuk order ID 34552 pada tabel detail order juga harus diekstrak ke gudang data, dan sebaliknya. Sebagai contoh, jika sebuah baris dalam tabel detail order diperbarui dan baris tersebut diekstraksi ke dalam gudang data, maka baris yang bersesuaian di tabel header order juga perlu diekstrak ke dalam gudang data. Hal ini juga berlaku pada waktu menyisipkan dan menghapus baris data. Jika baris baru (order baru) dimasukkan ke dalam tabel header order dalam sistem sumber, maka baris tabel detail order yang bersesuaian dengan baris baru pada tabel header order juga perlu dimasukkan ke dalam data warehouse tabel detail order. Jika suatu baris ditandai sebagai “canceled” (soft delete) dalam tabel header order pada sistem sumber, maka baris yang bersesuaian pada tabel detail order juga harus dibatalkan (canceled). Kita juga dapat melakukan hal ini dalam aplikasi data warehouse, tapi idealnya hal itu dilakukan dalam database data warehouse. Jika suatu baris secara fisik dihapus dalam tabel header order, maka baris yang bersesuaian pada tabel detail order dalam data warehouse juga perlu ditandai sebagai dihapus. Untuk melakukan hal ini, maka kita harus mengidentifikasi perubahan baris dalam tabel pertama, dan kemudian menggunakan hubungan relasi antara kunci primer (primary key) dan kunci asing (foreign key), kita juga mengidentifikasi baris dalam tabel kedua, dan 42 sebaliknya. Sebagai contoh, dalam kasus yang melibatkan tabel header order dan tabel detail order, terlebih dahulu kita menemukan adanya baris yang berubah pada tabel header order, maka kemudian kita akan mengidentifikasi baris yang bersesuaian dalam tabel detail order, dan pada akhirnya kita akan mengekstrak kedua set baris dari kedua tabel tersebut ke dalam data warehouse. 2.14 Slowly Changing Dimension Slowly Changing Dimension (SCD) adalah suatu teknik yang digunakan untuk menyimpan nilai historis dari atribut-atribut yang terdapat pada suatu tabel dimensi (Rainardi, 2008:p.80). Ada tiga tipe dari SCD yaitu : a. SCD tipe 1 SCD tipe 1 adalah suatu teknik SCD yang menimpa nilai lama dari suatu atribut dengan nilai yang baru, sehingga nilai lama tidak dipertahankan. b. SCD tipe 2 SCD tipe 2 adalah suatu teknik SCD yang mempertahankan nilai lama dari suatu atribut dengan membuat baris data baru setiap terjadi perubahan pada nilai atribut tersebut. c. SCD tipe 3 SCD tipe 3 adalah suatu teknik SCD yang mempertahankan nilai lama dari suatu atribut dengan meletakkan nilai lama ini pada kolom yang lain pada baris data yang sama. Umumnya, SCD tipe 2 lebih fleksibel untuk menyimpan nilai historis dari atribut-atribut dimensional. Hal ini dikarenakan dengan SCD tipe 2, kita dapat 43 menyimpan banyak versi nilai historis dari atribut-atribut dimensional tanpa mengubah struktur tabel (Rainardi, 2008:p.81). SCD tipe 3 menggunakan kolom untuk menyimpan nilai-nilai lama, sehingga SCD tipe 3 menjadi tidak fleksibel. SCD tipe 3 ideal digunakan untuk situasi di mana kita tidak memiliki banyak versi nilai (lima atau lebih sedikit) dan kita tahu hanya akan ada sejumlah versi dari nilai atribut tersebut. SCD tipe 3 ini juga cocok digunakan ketika perubahan nilai atribut ini mempengaruhi cukup banyak baris data. Dengan kata lain, banyak baris dimensi mengubah nilai atribut ini pada saat yang sama (simultan) (Rainardi, 2008:p.81). 2.15 Real Time Data Warehouse Data warehouse tradisional adalah pasif, memberikan tren historis, sedangkan real-time data warehouse adalah dinamis, memberikan pandangan yang paling up-to-date tentang suatu bisnis secara real time. Sebuah real time data warehouse akan akan diperbarui secara terus menerus, dengan waktu tunggu hampir mendekati nol (Ponniah, 2010:p.50). Real-time ETL bukanlah layanan data warehouse yang benar-benar real time. Dengan kata lain, real time ETL merupakan suatu perangkat lunak yang memindahkan data secara asynchronous (secara terus menerus) ke dalam suatu data warehouse dengan terdapat waktu jeda setelah proses eksekusi transaksi bisnis pada sistem sumber (Kimball, 2004:p.424). Sebuah gudang data, beberapa tahun yang lalu, biasanya diperbarui setiap hari atau setiap minggu. Dalam dua sampai tiga tahun terakhir, telah terjadi lebih banyak dan lebih banyak lagi permintaan untuk meningkatkan frekuensi update 44 data pada gudang data. Para pengguna ingin melihat data dalam gudang data diperbarui setiap dua menit atau bahkan secara real time. Sebuah real time data warehouse adalah gudang data yang diperbarui (dengan ETL) saat transaksi terjadi dalam sistem sumber (Rainardi, 2008:p.27). Sebagai contoh, kita dapat menempatkan pemicu (triggers) pada tabel transaksi penjualan dalam sistem sumber sehingga setiap kali ada transaksi penjualan yang dimasukkan ke dalam database, maka triggers akan aktif dan kemudian akan mengirim data baru ke gudang data sebagai sebuah pesan. Data warehouse memiliki active listener yang dapat menangkap pesan saat pesan sampai ke data warehouse, membersihkan pesan itu, menerapkan data quality service (DQS) pada pesan itu, mengubah format pesan supaya sesuai dengan format data warehouse, dan kemudian memasukkan pesan ke dalam tabel fakta. Ada perbedaan waktu dua detik di sini, antara saat pelanggan membeli produk di situs web dan saat data ini tersedia dalam tabel fakta (Rainardi, 2008:p.27). Pendekatan lain untuk mengimplementasikan real-time data warehouse adalah memodifikasi sumber aplikasi operasional (OLTP) untuk melakukan penulisan ke area data staging dari data warehouse, segera setelah menulis data ke dalam database internal. Dalam staging database, kita dapat menempatkan pemicu yang akan dipanggil setiap kali ada data baru yang akan dimasukkan, dan pemicu ini secara otomatis akan memperbarui data warehouse (Rainardi, 2008:p.27). Pendekatan near real-time data warehouse dapat diimplementasikan dengan menggunakan mini-batch dengan frekuensi dua sampai lima menit. Pendekatan ini lebih memilih untuk menarik data dari area data staging dengan 45 frekuensi dua sampai lima menit dibandingkan menggunakan pemicu. Mini batch ini juga melakukan proses ETL yang standar yaitu pekerjaan-mengubah data dan memuatnya ke dalam basis data dimensional dari data warehouse. Mini-batch juga dapat menarik data secara langsung dari sistem sumber, menghilangkan kebutuhan memodifikasi sistem sumber untuk memperbarui area data staging (Rainardi, 2008:p.27). 2.16 Capture Transform Flow Capture, Transform, dan Flow (CTF) adalah tools untuk proses integrasi data yang relatif baru muncul, yang dirancang untuk menyederhanakan proses pemindahan data secara real time antar teknologi basis data yang berbeda-beda. Lapisan aplikasi dari aplikasi transaksional dihilangkan. Pertukaran langsung antar database-to-database akan dilakukan. Semua transaksi, baik perubahan pada tabel fakta dan tabel dimensi dapat dipindahkan secara langsung dari sistem operasional ke tabel data staging dari data warehouse dengan waktu tunggu yang sangat kecil, hanya beberapa detik (Kimball, 2004:p.444). CTF merupakan suatu pendekatan yang sangat baik untuk perusahaan yang membutuhkan near real time reporting dengan kebutuhan integrasi data yang tidak begitu besar serta (Kimball, 2004:p.445). Skema proses CTF dapat dilihat pada gambar 2.8. 46 Gambar 2.8 Proses Capture, Transform, dan Flow (Sumber : Kimball, 2004:p.445) 2.17 Change Data Capture Change data capture (CDC) mencatat aktifitas insert, update, delete yang dilakukan pada sebuah tabel. Hal ini membuat detail dari perubahan data yang terjadi akan tersedia dalam format relasional yang mudah untuk dipahami. Informasi kolom dan metadata yang diperlukan untuk menerapkan perubahan ini ke lingkungan target ditangkap untuk baris yang diubah dan disimpan dalam tabel perubahan yang mencerminkan struktur kolom pada tabel sumber yang akan dilacak. Fungsi table-valued disediakan untuk memungkinkan akses sistematis ke data yang dirubah oleh konsumen (Technet, 2014). Sebuah contoh yang baik dari konsumen data yang ditargetkan oleh teknologi ini adalah aplikasi extraction, transformation, dan loading (ETL). Sebuah aplikasi ETL secara bertahap mengirim perubahan data dari tabel sumber ke data warehouse atau data mart. Meskipun representasi dari tabel sumber dalam data warehouse harus mencerminkan perubahan dalam tabel sumber, sebuah teknologi 47 end-to-end yang memperbarui data pada replika dari sumber tidaklah tepat. Sebaliknya, kita perlu aliran perubahan data yang handal yang terstruktur sehingga konsumen dapat menerapkannya pada representasi sasaran yang berbeda dari data (Technet, 2014). Gambar 2.9 akan menunjukkan aliran data pada teknologi change data capture. Gambar 2.9 Aliran Data pada Change Data Capture (Sumber : Technet, 2014) Sumber perubahan data untuk change data capture adalah transaction log. Setelah proses insert, update, dan delete dilakukan pada tabel sumber yang akan dilacak, entri yang menggambarkan terjadinya perubahan data ini akan ditambahkan ke dalam log. Log ini akan menjadi input untuk proses capture. 48 Kemudian proses change data capture akan membaca log ini dan menyimpan informasi perubahan data pada log ini ke tabel perubahan. Isi dari tabel perubahan ini kemudian akan di-query oleh proses ETL sampai akhirnya perubahan data ini akan dikirim ke dalam data warehouse. Jadi hanya perubahan data terbaru saja yang akan disimpan ke dalam data warehouse (Technet, 2014). 2.18 MS SQL SERVER 2008 R2 SQL Server 2008 R2 adalah kumpulan dari komponen yang dapat kita terapkan secara terpisah atau sebagai sebuah kelompok untuk membentuk sebuah platform data yang scalable. Dalam arti luas, platform data ini terdiri dari dua jenis komponen yaitu : komponen yang akan membantu dalam mengelola data dan komponen-komponen yang akan membantu dalam mewujudkan suatu business intelligence (BI) (Mistry, 2010:p. xvii). Salah satu fitur baru pada SQL Server 2008 R2 adalah Parallel Data Warehouse. Parallel Data Warehouse ditujukan untuk sebuah enterprise data warehouse. Parallel Data Warehouse terdiri dari perangkat lunak dan perangkat keras yang dirancang untuk memenuhi kebutuhan gudang data yang sangat besar. Solusi ini memiliki kemampuan untuk menampung data warehouse sampai ratusan terabyte dengan penggunaan teknologi baru yang disebut sebagai massively parallel processing (MPP). Parallel data warehouse dapat dihubungkan melalui perangkat keras murah yang dikonfigurasi dalam arsitektur hub and spoke. Peningkatan kinerja dapat dicapai dengan pendekatan desain parallel data warehouse karena teknik ini melakukan partisi tabel besar ke beberapa node fisik, dimana setiap node memiliki CPU sendiri, memori, penyimpanan, dan SQL Server 49 instance. Desain ini secara langsung menghilangkan masalah yang terkait dengan kecepatan dan memberikan skalabilitas karena control node mendistribusikan data secara merata ke semua compute node. Control node juga bertanggung jawab untuk mengumpulkan data dari semua compute note ketika jawaban untuk sebuah query harus diberikan ke aplikasi (Mistry, 2010:p. 8-9). Keuntungan Penggunaan MS SQL Server 2008 R2 adalah sebagai berikut (Mistry, 2010:p. 10-11): a. Maximum scalability Windows Server 2008 R2 mendukung hingga 256 processor dan 2 terabyte memori dalam sebuah sistem operasi. b. Hyper-V improvements Hyper-V dapat menggunakan hingga 64 processor dalam host processor pool, yang memungkinkan untuk mengkonsolidasikan lebih banyak SQL Server VMs pada satu host Hyper-V. c. Windows Server 2008 R2 Server Manager Server Manager telah dioptimalkan pada Windows Server 2008 R2. d. Best Practices Analyzer (BPA) Membantu mengurangi kesalahan-kesalahan yang terjadi, yang pada akhirnya dapat membantu memperbaiki dan mencegah penurunan kinerja, skalabilitas, dan downtime. e. Windows PowerShell 2.0 Database Administration (DBA) dapat meningkatkan produktivitas mereka menggunakan Windows PowerShell dengan menyederhanakan, 50 mengotomatisasi, dan mengkonsolidasikan tugas-tugas yang berulang dan melakukan proses manajemen server di lingkungan SQL Server terdistribusi. 2.18.1 Tipe data pada MS SQL SERVER 2008 Pada SQL Server 2008 terdapat beberapa tipe data, diantaranya adalah: a. Tipe data untuk Bilangan Jenis-jenis dari tipe data bilangan ini dapat dilihat pada tabel 2.2. Tabel 2.2 Tipe Data Numerik Nama Tipe Kelas Ukuran / Keterangan Data Bytes Bit Integer 1 Bit tipe data pertama dalam tabel menggunakan 1 byte. Bigint Integer 8 Tipe data ini memungkinkan untuk menggunakan angka dari –263 sampai dengan 263–1. Int Integer 4 Tipe data ini meliputi angka dari –2,147,483,648 sampai dengan 2,147,483,647. SmallInt Integer 2 Tipe data ini meliputi angka –32,768 sampai dengan 32,767. TinyInt Integer 1 Tipe data ini meliputi angka 0 sampai dengan 255. Decimal or Decimal / Varies Memiliki presisi yang tetap dengan skala Numeric Numeric dari –1038–1 sampai dengan 1038–1. Money Money 8 Satuan moneter dari -263 sampai 263 ditambah presisi sampai empat tempat desimal. SmallMoney Money 4 Satuan moneter dari -214,748.3648 sampai dengan +214,748.3647. Float Approximate Varies Menerima argumen (misalnya, Float Numeric (20)) yang menentukan ukuran dan presisi. Perhatikan bahwa argumen dalam bit, bukan byte. Berkisar dari1.79E + 308 sampai dengan 1.79E + 308. (Sumber : Viera, 2009:p.12-15) 51 b. Tipe Data Special Numeric dan Karakter Jenis-jenis dari tipe data special numeric dan karakter ini dapat dilihat pada tabel 2.3. Tabel 2.3 Tipe Data Special Numeric dan Karakter Nama Tipe Kelas Ukuran Keterangan Data / Bytes Cursor Special 1 Pointer ke kursor. Numeric Timestamp / Special 8 Nilai khusus yang unik yang diberikan rowversion Numeric oleh basis data. (binary) UniqueIdentifier Special 16 Globally Unique Identifier (GUID). Numeric (binary) Char Character Varies Fixed-length data karakter. Data adalah non-Unicode. Panjang maksimal adalah 8.000 karakter. VarChar Character Varies Variabel-length data karakter. Data adalah non-Unicode. Panjang maksimal adalah 8.000 karakter. Dapat menggunakan kata kunci MAX. Text Character Varies Dukungan warisan dari SQL Server 2005 - gunakan varchar (max) sebagai gantinya! Nchar Unicode Varies Fixed-length data karakter. Data adalah Unicode. Panjang maksimal adalah 4.000 karakter. NVarChar Unicode Varies Variabel-length data karakter. Data adalah Unicode. Panjang maksimal adalah 4.000 karakter. Dapat menggunakan kata kunci MAX. Ntext Unicode Varies Ntext ini adalah warisan dari MS SQL Server 2005, gunakan nvarchar (max). Variable-length Unicode Data karakter. Binary Binary Varies Fixed-length data biner dengan Panjang maksimal 8.000 bytes. VarBinary Binary Varies Variabel-length data biner dengan panjang maksimal 8.000 byte. Image Binary Varies Dukungan warisan dari SQL Server 2005 - gunakan VarBinary(max) sebagai gantinya! (Sumber : Viera, 2009:p.12-15) 52 c. Tipe Data Tanggal dan Waktu Jenis-jenis dari tipe data tanggal dan waktu ini dapat dilihat pada tabel 2.4. Tabel 2.4 Tipe Data Tanggal dan Waktu Nama Tipe Kelas Ukuran Keterangan Data / Bytes DateTime Date / 8 Data tanggal dan waktu dari 1 Januari Time 1753, sampai dengan 31 Desember 9999, dengan akurasi tiga-seperseratus detik. DateTime2 Date / Varies Tipe Data DateTime yang diperbarui. Time (6-8) Mendukung rentang tanggal yang lebih besar dan presisi fraksi waktu besar (hingga 100 nanodetik). SmallDateTime Date / 4 Data tanggal dan waktu dari tanggal 1 Time Januari 1900, sampai dengan 6 Juni 2079, dengan akurasi satu menit. DateTimeOffsett Date / Varies Serupa dengan tipe data DateTime tipe, Time (8-10) tetapi juga mengharapkan offset -14:00 sampai dengan +14:00 dari waktu UTC. Waktu disimpan secara internal sebagai waktu UTC, dan setiap perbandingan, pengurutan, dan pengindeksan akan didasarkan pada zona waktu bersatu. Date Date / 3 Menyimpan hanya tanggal data dari Time tanggal 1 Januari 0001, sampai dengan 31 Desember 9999 seperti yang didefinisikan oleh kalender Gregorian. Menggunakan format tanggal standar ANSI (YYYY-MM-DD), tapi akan secara implisit mengkonversi dari beberapa format lain. Time Date / Varies Menyimpan hanya data waktu yang Time (3-5) secara presisi dipilih oleh user sebagai granular 100 nanodetik (yang merupakan default). (Sumber : Viera, 2009:p.12-15) 53 d. Tipe Data Lain Jenis-jenis tipe data ini dapat dilihat pada tabel 2.5. Tabel 2.5 Tipe Data Lain Nama Tipe Kelas Ukuran Keterangan Data / Bytes Table Other Special Tipe data ini biasanya digunakan pada waktu bekerja dengan result sets. Tipe data biasanya dipakai pada User-defined Function atau sebagai parameter untuk Stored Procedures. Tipe data ini tidak dapat digunakan sebagai tipe data dalam tabel definition (Anda tidak bisa membuat tabel bersarang (tabel dalam tabel)). HierarchyID Other Special Tipe data khusus yang menangani informasi posisi hirarki. Menyediakan fungsi khusus untuk kebutuhan hirarki. Perbandingan kedalaman, orangtua / anak, hubungan, dan pengindeksan diperbolehkan. Ukuran yang tepat bervariasi dengan jumlah dan rata-rata kedalaman node dalam hirarki. sql_variant Other Special Tipe data ini terkait dengan tipe data Variant yang terdapat pada VB dan C + +. Pada dasarnya, tipe data ini adalah wadah yang memungkinkan kita untuk memegang sebagian besar tipe data SQL Server lainnya di dalamnya. Kita dapat menggunakan tipe data ini ketika satu kolom atau fungsi harus mampu menangani beberapa tipe data. Tidak seperti pada VB, dengan menggunakan tipe data ini kita dapat memaksa untuk melakukan casting data pada tipe data ini secara eksplisit untuk mengubahnya menjadi tipe data yang lebih spesifik. XML Character Varies Mendefinisikan field karakter untuk XML data. Menyediakan validasi data untuk XML Schema seperti penggunaan fungsi-XML berorientasi khusus. Table Other Special Tipe data ini biasanya digunakan pada waktu bekerja dengan result sets. Tipe data biasanya dipakai pada User-defined Function atau sebagai parameter untuk Stored Procedures. Tipe data ini tidak dapat digunakan sebagai tipe data dalam tabel definition (Anda tidak bisa membuat tabel bersarang (tabel dalam tabel)). (Sumber : Viera, 2009:p.12-15) 54 2.18.2 Basic query pada MS SQL SERVER 2008 Ada 4 operasi dasar yang dapat dilakukan pada suatu basis data, yaitu: select, insert, update, dan delete. Pada SQL Server 2008, sintak untuk penggunaan dari empat operasi basis data ini dapat dilihat pada tabel 2.6: Tabel 2.6 Sintaks Query pada SQL Server 2008 Fungsi Sintak Nama Query SELECT Membaca data INSERT Menyisipkan data UPDATE Memperbarui data DELETE Menghapus data (Sumber : Viera, 2009:p.841-852) SELECT <column list> [FROM <source table(s)> [[AS] <table alias>] [[{FULL|INNER|{LEFT|RIGHT} OUTER|CROSS}] JOIN <next table> [ON <join condition>] [<additional JOIN clause> ...]]] [WHERE <restrictive condition>] [GROUP BY <column name or expression using a column in the SELECT list>] [HAVING <restrictive condition based on the GROUP BY results>] [ORDER BY <column list>] [[FOR XML {RAW|AUTO|EXPLICIT|PATH [(<element>)]}[, XMLDATA][, ELEMENTS][, BINARY base 64]] [OPTION (<query hint>, [, ...n])] [{ UNION [ALL] | EXCEPT | INTERSECT }] [;] INSERT [INTO] <table> [(<column list>)] VALUES (<data values>) [, (<data values>) [, . . . n]] UPDATE <table name> SET <column> = <value> [,<column> = <value>] [FROM <source table(s)>] [WHERE <restrictive condition>] DELETE [TOP (<expression>) [PERCENT] [FROM ] <table name> [FROM ] <table list/JOIN conditions> [WHERE <search condition>] 55 2.19 Service Oriented Architecture SOA adalah sebuah metode membangun aplikasi yang menggunakan sejumlah kecil, komponen independen yang berkomunikasi satu sama lain dengan saling menawarkan dan menggunakan layanan antar komponen-komponen independen ini. Komponen-komponen ini dapat didistribusikan; pada kenyataannya, mereka dapat berada di sisi yang berbeda dari dunia (Rainardi, 2008:p.26). Hampir setiap aplikasi besar bisa mendapatkan keuntungan dari pendekatan SOA. Kita tidak perlu untuk membangun satu aplikasi besar lagi. Sebaliknya, kita membangun banyak potongan-potongan kecil aplikasi yang terhubung dan berkomunikasi satu sama lain. Salah satu sifat dari industri TI adalah aplikasi akan perlu diganti setiap beberapa tahun (setiap 4-8 tahun). Bisa jadi karena teknologi yang digunakan sudah usang atau karena fungsionalitas dari aplikasi tersebut sudah tidak mampu mengakomodasi kebutuhan perusahaan. Kepailitan, merger, dan pengambilalihan perusahaan juga merupakan alasan lain untuk melakukan penggantian aplikasi ini (Rainardi, 2008:p.26). Jika kita membuat satu aplikasi raksasa, itu akan menjadi mahal untuk menggantinya. Jika kita membuatnya dari sejumlah kecil, komponen independen, lebih mudah untuk menggantinya. SOA memberi kita lebih banyak fleksibilitas untuk mengganti komponen. Dengan kata lain, kita dapat melakukannya secara bertahap sepotong demi sepotong tanpa mempengaruhi fungsi tersebut. Hal ini karena komponen yang independen; yaitu, mereka tidak peduli bagaimana komponen lainnya bekerja secara internal selama eksternal mereka mendapatkan 56 tanggapan yang mereka butuhkan. Hal ini memungkinkan kita untuk membangun kembali salah satu komponen dengan teknologi yang lebih baru tanpa mempengaruhi yang lain (Rainardi, 2008:p.26). Bagaimana SOA ini berhubungan dengan data warehouse? Sebuah sistem data warehouse terdiri dari banyak komponen: sistem sumber, sistem ETL, mekanisme kualitas data, sistem metadata, audit dan sistem kontrol, sebuah portal BI, aplikasi pelaporan, aplikasi OLAP/analitik, aplikasi data mining, dan sistem database itu sendiri (Rainardi, 2008:p.26). Kita dapat membangun data warehouse sebagai satu aplikasi raksasa dengan semua komponen digabungkan; Hal ini akan menyebabkan kita tidak akan dapat mengganti salah satu komponen tanpa mempengaruhi komponen lainnya. Atau kita dapat membangun data warehouse dengan pendekatan SOA. Kita membangunnya sebagai jumlah yang lebih kecil, komponen independen yang terhubung dan berkomunikasi satu sama lain dengan saling menawarkan dan menggunakan layanan antar komponen-komponen independen ini (Rainardi, 2008:p.26). Semakin banyak aplikasi data warehousing di semua lini yang dibangun menggunakan SOA, seperti misalnya : ETL, pelaporan, analisis, aplikasi BI, data mining, metadata, kualitas data, dan pembersihan data. Di masa depan, dengan menggunakan pendekatan SOA, akan lebih mudah untuk memperbarui salah satu komponen tanpa mempengaruhi komponen yang lain dan untuk menghubungkan berbagai komponen yang dibuat dengan menggunakan teknologi yang berbedabeda (Rainardi, 2008:p.26). 57 SOA adalah pendekatan yang berbeda untuk memisahkan antara perhatian dan pembangunan solusi bisnis dengan memanfaatkan komponen-komponen kecil yang digabungkan dan digunakan kembali. Dengan mengadopsi SOA, organisasi dapat mengaktifkan aplikasi bisnis mereka dengan cepat dan efisien menanggapi bisnis, proses, dan perubahan integrasi yang biasanya terjadi dalam lingkungan perusahaan (Kankanamge, 2012:p. 8). 2.19.1 Arsitektur SOA Gambar 2.10 Arsitektur SOA (Sumber : Barry, 2013:p.18) Pada gambar 2.10 dapat dilihat bahwa arsitektur SOA yang paling sederhana adalah dimana ada sebuah service provider dan sebuah service consumer. Service consumer akan mengirimkan service request ke service provider dan kemudian service provider akan mengirimkan service response ke service consumer. 2.19.2 Building block SOA Ketika mempelajari solusi standar berorientasi pada layanan, kita dapat mengindentifikasi tiga building block besar seperti berikut ini (Kankanamge, 2012:p. 9-11): 58 a. Web Services Web service adalah unit individu dari logika bisnis dalam SOA. Web service berkomunikasi satu sama lain dan berkomunikasi dengan program atau aplikasi lain dengan mengirimkan pesan. Web service terdiri dari definisi antarmuka publik yang merupakan bagian pusat dari informasi yang menyediakan layanan dan memungkinkan layanan tersebut untuk dikonsumsi oleh end user. Skema web service standar dapat dilihat pada gambar 2.10. Gambar 2.11 Basic Web Service (Sumber : Kankanamge, 2012:p.10) Service container adalah komponen SOA middleware dimana web service diletakkan (hosted) untuk aplikasi consumer sehingga aplikasi consumer dapat berinteraksi dengan web service. b. Mediation Biasanya, transmisi pesan antara node dalam solusi berorientasi layanan tidak hanya terjadi melalui saluran point-to-point. Sebaliknya, sekali pesan diterima, maka pesan akan dialirkan melalui beberapa perantara dan akan dilakukan berbagai transformasi dan konversi yang diperlukan. Perilaku ini umumnya disebut sebagai message mediation. Hal ini merupakan salah satu blok bangunan penting dalam solusi berorientasi layanan. 59 c. Composition Dalam solusi berorientasi layanan, kita tidak bisa mengharapkan layanan web individu berjalan sendiri untuk menyediakan fungsionalitas bisnis yang diinginkan. Sebaliknya, beberapa layanan web bekerja sama dan berpartisipasi dalam berbagai komposisi layanan. Biasanya, web service ditarik bersama-sama secara dinamis pada runtime berdasarkan aturan yang ditetapkan dalam definisi proses bisnis. Proses manajemen atau koordinasi dari proses bisnis ini diatur oleh koordinator proses, yang merupakan komponen middleware SOA yang terkait dengan komposisi layanan web. 2.19.3 SOAP Simple Object Access Protocol (SOAP) dapat dianggap sebagai standar messaging pertama yang digunakan untuk layanan web. Hal ini didefinisikan oleh World Wide Web Consortium (W3C) at http://www.w3.org/TR/2000/NOTESOAP-20000508/ sebagai berikut: SOAP adalah protokol ringan untuk pertukaran informasi dalam lingkungan desentralisasi, lingkungan terdistribusi. SOAP adalah sebuah protokol berbasis XML yang terdiri dari tiga bagian: sebuah amplop yang mendefinisikan kerangka kerja untuk menggambarkan apa yang ada dalam pesan dan bagaimana memprosesnya, seperangkat aturan pengkodean untuk mengungkapkan contoh dari tipe data yang didefinisikan oleh aplikasi, dan konvensi untuk mewakili prosedur panggilan jarak jauh dan tanggapan-tanggapannya. 60 Stuktur dari pesan SOAP dapat dilihat pada gambar 2.11 berikut ini: Gambar 2.12 Struktur SOAP (Sumber : Kankanamge, 2012:p. 11) Sebuah pesan SOAP adalah sebuah dokumen XML yang terdiri dari amplop SOAP yang wajib ada, header SOAP yang bersifat opsional, dan body SOAP yang wajib ada. Amplop SOAP adalah elemen pembungkus yang memegang semua node anak yang terdapat dalam suatu pesan SOAP. Elemen header SOAP adalah sebuah blok opsional di mana informasi meta disimpan. Menggunakan header, pesan SOAP mampu mengandung berbagai jenis informasi tambahan yang berkaitan dengan pengiriman dan pengolahan pesan. Ini secara tidak langsung memberikan keleluasaan untuk layanan web seperti dengan mempertahankan header SOAP, layanan tidak perlu untuk menyimpan logika pesan khusus. Biasanya, header SOAP berisi: a. Message processing instructions b. Security policy metadata 61 c. Addressing information d. Message correlation data e. Reliable messaging metadata Body SOAP adalah elemen di mana isi pesan yang sebenarnya diletakkan. Isi body SOAP ini biasanya disebut sebagai message payload.