Apa itu Data Warehouse ?

Tri Juhari
6 min readSep 1, 2021

--

Pertanyaan umum yang sering sekali ditanyakan oleh orang orang yang ingin bekerja di bidang Data Engineer yaitu

Apa itu Data Warehouse ?

Apakah perlu menggunakan teknologi cloud seperti Redshift, BigQuery, atau Synapse untuk Data Warehouse yang akan digunakan ?

Dalam tulisan ini kita bisa mengasumsikan misalnya kita bekerja di salah satu startup E-Commerce dan melihat bahwa kebutuhan data semakin lama semakin berkembang oleh karena itu kita mulai melakukan rise terkait teknologi Data Warehouse ini, apakah sudah sesuai dengan dengan konteks bisnis kita saat ini. Diharapkan doakhir tulisan ini dapat menambah pemahaman terkait apa itu Data Warehouse dan kapan kita harus menggunakannya.

Apa itu Data Warehouse ?

Hal pertama yang bisa kita lakukan adalah dengan memahami apa dan kapan harus menggunakan Data Warehouse dengan asumsi bahwa kita sedang bekerja untuk startup ecommerce. Di sini kita bisa melihat bagaimana sebuah website sederhana yang terus berkembang dari waktu ke waktu sehingga akibatnya diperlukan banyak requirement untuk kebutuhan data yang kompleks dan bagaimana sebuah data warehouse itu bisa mengatasinya.

Langkah 1 : Melakukan Setting Up Website Ecommerce

Kita anggap saja website Ecommerce kita ini sudah memiliki pelanggan yang dapat melakukan login dan melakukan orders barang. Barang jualan ini di inputkan oleh merchant (penjual) melalui merchant portal. Ilustrasinya dapat ditunjukan oleh gambar di bawah ini.

Meta Data Customer Details

Meta Data Merchant Details

Meta Data Item Details

Meta Data Order Details

Langkah 2: Melakukan Request Query untuk Kebutuhan Analitikal

Seiring pertumbuhan bisnis Ecommerce, seorang business analyst, business Intellegence dan pekerjaan lainnya yang berkaitan dengan proses analitikal tentunya mereka akan mengakses data yang mereka perlukan untuk membuat sebuah model, mengakses performa , melakukan optimisasi strategi , dan lain saebagainya. Ada beberapa pertanyaan dasar yang sering muncul yang berkaitan pada proses analisis berdasarkan sebuah data misalnya :

  1. Ada berapa rata rata pesanan yang dilakukan oleh pelanggan dalam periode waktu tertentu ? ( pertanyaan ini biasanya muncul apabila ingin melihat tren belanja saat periode waktu liburan)
  2. Daftar 10 merchants teratas yang itemnya paling banyak terjual ( hal ini biasanya dilakukan untuk menerapkan strategy bisnis seperti pemberian insentif kepada para merchant yang memiliki kinerja yang tinggi )
  3. Bagaimana rata rata waktu saat perpindahan dari pemesanan ke pengiriman selama bulan Juni 2021 ?

Akan ada banyak pertanyaan yang membuatuhkan sebuah data untuk dapat menjawabnya misalnya saja seperti ketiga pertanyaan diatas. Bisa dilihat juga bahwa pada pertanyaan no 1 dapat kita jawab dengan melakukan query pada customer_database, namun untuk pertanyaan no 2 kita butuh menggabungkan ( join across pada query) table merchant_database and customer_database . Selanjutnya untuk pertanyaan no 3 kita butuh data riwayat status pemesanan customer. Dalam skenario seperti ini, yang perlu dilakukan adalah dengan membuat sebuah data pipeline untuk memindahkan data dari sekumpulan banyak database ( multiple database )ke dalam satu database (single database) atau bisa disebut dengan Data Warehouse.Secara general terdapat 3 alasan memindahkan data dari sumber database ( dalam kasus ini merchant_database dan customer_database) ke dalam bentuk single database(atau disebut juga data warehouse) alasannya adalah

  1. Untuk mencegah adanya overloading pada aplikasi database. Tentunya pada website Ecommerce sebisa mungkin dapat dipastikan tidak adanya heavy load (load data yang berat) pada database yang sebagian besar tentunya sering melakukan request untuk proses query analitik dan supaya latensi pada pada websitenya tetap rendah.
  2. Untuk memudahkan ketika melakukan proses join terhadap seluruh tabel sehingga hanya akan ada satu database untuk memenuhi kebutuhan proses analitik dan melayani jumlah request ketika melakukan proses read oleh analis.
  3. Untuk menyimpan informasi point in time yang dapat di analisis di kemudian hari

Alur data yang berdasarkan dari database diatas seperti gambar di bawah ini

Note : Model dimensi diatas berdasarkan pada SCD2 agar tetap mempertahankan informasi point in timenya.Selain itu sebagai catatan berdasarkan dimensi pada tabel diatas, disini kita tidak menggunakan customer_id sebagai primary key alasannya adalah karena saat menggunakan SCD2 , kita akan membuat baris baru ketika atributnya berubah. Dengan cara ini kita bisa mendapatkan data yang valid untuk jangka waktu tersebut. Contohnya di table dim_customer SCD2 table yaang akan dihasilkan seperti di bawah ini.

Dapat dilihat dari table diatas jika customer_id = 1 memutuskan untuk mengubah namanya, disini kita tetap dapat melacak kapan perubahan itu dilakukan dan apa nama sebelum dilakukan perubahan.

Tabel dimensi lainnya akan sama seperti yang ditunjukan oleh tabel diatas.

Berdasarkan studi kasus diatas dapat dilihat bahwa terdapat tabel fakta ( fact_) dan tabel dimensi ( dim_).Dimana hal ini merepresentasikan sebuah permodelan sistem data warehouse yang disebut star schema (karena sering divisualisasikan sebagai tabel fakta pusat yang memiliki koneksi ke beberapa tabel dimensi yang menyerupai struktur seperti bintang, alias pemodelan dimensi). Idenya adalah untuk memiliki point in time terjadinya suatu peristiwa, pada kasus ini terjadi peristiwa dimana ketika ada pesanan masuk, satu ketika dimulai pada proses transit dan akhirnya satu ketika dikirimkan. Pada fact table (fact_) kita memperlakukan setiap event atau peristiwa individu sebagi baris terpisah. Hal ini memungkinkan kita dapat melakukan analisis data berkaitan dengan waktu, contohnya seperti salah satu pertanyaan diatas

Bagaimana rata rata waktu saat perpindahan dari pemesanan ke pengiriman selama bulan Juni 2021 ?

Pertanyaan ini tentunya tidak dapat dijawab berdasarkan tabel order_details yang ada di customer_database, karena tabel ini hanya berisi status terkini dari pesanan itu. peristiwa Point in time ini akan disimpan di tabel yang disebut tabel fakta. Tabel ini memiliki referensi kunci ( key references) untuk detail lainnya contohnya detail pelanggan yang disimpan dalam tabel dimensi. Dimension modeling reference.

Tentunya di beberapa kasus juga kita mungkin ingin memuat (load)data dari sumber data lainnya yang langsung dari Data Warehouse, misalnya jika kita ingin menggunakan cookie untuk merekam data click stream dari website, hal tersebut tentunya harus melakukan load data dari tabel fakta clickstream yang ada pada Data Warehouse.

Dari tulisan ini bisa dilihat bagaimana kebutuhan data untuk proses bisnis berevolusi agar sesuai dengan kebutuhan analitik . Konsep, proses, dan teknik yang terlibat dalam pembuatan tabel untuk menjalankan kueri analitik dan membuat data pipeline untuk memindahkan data ke dalam Data Warehouse disebut Data Warehousing.

OLTP VS OLAP Database

Dari penjelasan yang telah di jelaskan diatas tentang Data Warehouse, Kita dapat memahami apa itu database OLTP dan OLAP.

Database OLTP

  1. Kepanjangan dari Online Transaction Processing
  2. Dirancang khusus untuk melakukan proses CREATE, READ, UPDATE, dan DELETE ( CRUD) yang cepat dari jumlah baris yang sedikit
  3. Beberapa contoh yang populer yaitu PostgreSQL, MySQL, dll.

Dari contoh kasus ini merchant_database dan customer_database merupakan OLTP databases.

Database OLAP

  1. Kepanjangan dari Online Analytical Processing
  2. Dirancang untuk melakukan proses query analitik, biasanya membaca sebuah kumpulan kolom tertentu, melakukan GROUP BY, melakukan beberapa proses gabung ( join) dari seluruh tabel fakta dan tabel dimensi dalam jumlah baris yang banyak. Jenis kueri yang digunakan yaitu hanya membaca yang perlu dijalankan oleh pengguna analitik ( analytic users).
  3. Beberapa contoh yang populer yaitu HIVE, Redshift, Snowflake, BigQuery, dll

Dari contoh kasus ini data warehouse merupakan OLAP databases.

Kita bisa menganalogikannya dengan sebuah mobil . Meskipun dapat menggunakan mobil balap untuk dapat melintasi negara atau menggunakan mobil van untuk mencoba dan memenangkan perlombaan, tentunya kita tidak akan melakukannya karena hal tersebut tidak sesuai berdasarkan peruntukannya.Dari hal ini dapat disimpulkan yaitu menggunakan alat yang tepat untuk masing masing pekerjaan.

--

--

No responses yet