Single Table Design
Pendahuluan
Pendahuluan awal tentang NoSQL.
Dimana merujuk pada sistem manajemen basis data yang tidak menggunakan model data yang “mesti” relasional.
Tidak mesti menggunakan Table-table dengan jumlah kolom yang kaku dan tetap yang dibuat untuk menggambarkan struktur dari data, yang dipecah-pecah menjadi table-table kecil yang bisa di-relasi-kan.
Tetapi NoSQL ini ditujukan untuk untuk menangani data yang tidak terstruktur, cepat berubah, banyak kombinasinya dan yang sering kali tidak cocok dengan model relasional.
Dan juga sebenarnya lebih kepada kebutuhan untuk pengambilan, penyimpanan data.
Kecepatan akses dan Volume Data yang besar dibandingkan Efektifitas Storage dari database.
Apa itu Single Table Design ?
Banyak desain yang mencoba mengadopsi basis data NoSQL ini.
Salah satunya adalah Single Table Design
Single Table Design adalah design database NoSQL yang bertumpu pada satu Table saja.
Semua data akan disimpan dalam satu Table dengan Primary Key dan Sort Key yang Generic.
Tidak ada lagi batasan mengenai panjang, tipe, dan constraint Primary Key atau Sort Key yang biasanya kita temui di database Relasional.
Ide dasarnya dari Single Table Design ini adalah :
- Tidak perlu lagi adanya operasi JOIN ketika ingin mendapatkan data.
- Tidak perlu lagi COMPLEX query ketika ingin mendapatkan data.
- Akses terhadap banyak data yang ada di satu table tersebut lebih merata, karena tingkat Cardinality dari Primary Key yang sangat variatif.
- Througput dan kecepatan akses terhadap data menjadi constant di sepanjang waktu.
Misalnya seperti yang di contohkan di web nya AWS : https://aws.amazon.com/id/blogs/database/single-table-vs-multi-table-design-in-amazon-dynamodb/ :
Dimana untuk kasus aplikasi pemutaran Video, akan ada table yang menyimpan data Video beserta attribute lainnya.
Kalu di database Relasional, maka table ini bisa dijadikan beberapa tabel yang terpisah dengan cara Normalisasi database.
Tentunya dengan struktur data table yang kaku dan tetap.
Sementara, kalau dengan prinsip Single Table Design ini, bisa saja misalnya ternyata ada kebutuhan berulang kali untuk akses data :
- Jumlah View dari pengguna untuk video tertentu.
Yang kelihatan cuma kecil saja, tapi sering diakses dibanding kan dengan data yang lainnya (seperti author, diupload kapan, dll).
Dengan kebutuhan seperti itu, bisa saja table nya diisi dengan data yang sedikit berbeda, sbb :
Untuk video view akan dijadikan satu row tersendiri agar lebih efisien dalam mengambil dan mengupdate datanya.
Tantangan menggunakan Single Table Design ?
Tentu saja ada tantangan dalam membuat Single Table Design ini :
- Denormalisasi Data: Salah satu tantangan utama adalah denormalisasi data, yang berarti data yang sama mungkin disimpan di beberapa tempat. Ini dapat menyebabkan redundansi data.
- Desain Primary Key : Memilih Primary Key yang tepat sangat penting untuk memastikan kinerja query yang optimal. Primary Key harus dirancang untuk mendukung pola akses data yang paling umum.
- Manajemen Skema Database: Meskipun NoSQL lebih fleksibel dalam hal skema, akan tetapi penting untuk merencanakan struktur data dengan hati-hati untuk menghindari masalah di masa depan.