Setiap aplikasi enterprise saat ini pasti melakukan penyimpanan data dengan menggunakan database. Database ini mendukung operational database yang biasa disebut OLTP(Online Transactional Processing) dan juga digunakan sebagai sumber data untuk berbagai jenis laporan untuk analisis dan pengambilan keputusan.

Laporan operational terkadang memiliki kebutuhan khusus yang sedikit berbeda dengan skema data dan pola pengaksesan data (cross bounded context pada microservice architecture).

Ketika ini terjadi, maka sebaiknya dilakukan pemisahan antara operational database dengan reporting database. Reporting database akan menduplikasi data dari operational database sesuai dengan kebutuhan skema laporan. Jenis engine database-nya pun bisa berbeda dengan yang digunakan pada database operasional.

Reporting DatabaseGambar 1. Transfer data dari operational database ke reporting database
Sumber Gambar: https://martinfowler.com/bliki/ReportingDatabase.html

Keuntungan dari reporting database antara lain:

  • Struktur skema dari reporting database dapat dirancang secara spesifik agar mempermudah pembuatan laporan.
  • Tidak perlu melakukan normalisasi, karena digunakan hanya untuk dibaca/di-query dan ditampilkan.
  • Perubahan pada operational database secara relatif tidak langsung berdampak pada reporting database.
  • Pencarian data atau queries terhadap reporting database tidak membebani operational database.
  • Data yang merupakan derivasi / gabungan dapat disimpan pada reporting database.
  • Dapat membuat banyak jenis reporting database sesuai dengan kebutuhan pelaporan.

Kekurangan dari reporting database adalah data yang harus terjaga kebaruannya. Beberapa variasi antara lain dengan mempopulasi data setiap periode tertentu. Namun, pada kenyataannya banyak kebutuhan akan laporan berdasarkan data terbaru atau saat ini.

Pada kebutuhan reporting database yang membutuhkan data terbaru, dapat dilakukan dengan menggunakan messaging / event sourcing system (seperti Apache Kafka, RabbidMQ) dimana perubahan data pada operational database akan dikirimkan ke reporting database.


Gambar 2. Transfer data menggunakan messaging system dari
operational database ke reporting database
Sumber Gambar: https://dzone.com/articles/nosql-storage-relational

Bila Anda ingin menelusuri lebih lanjut, silakan membaca artikelĀ  yang ditulis oleh Paul Hammant berdasarkan landasan dari Martin Fowler ini. Artikel tersebut membahas tentang bagaimana operational database diimplementasikan pada NoSQL database engine dan reporting database diimplementasikan pada SQL relational database engine.

Sumber Referensi:
https://martinfowler.com/bliki/ReportingDatabase.html
https://dzone.com/articles/nosql-storage-relational