Pemodelan data adalah proses merancang bagaimana aplikasi menyimpan data dalam database tertentu. Dengan database NoSQL seperti DynamoDB, pemodelan data berbeda dari memodel dengan database relasional. Database relasional dibuat untuk fleksibilitas dan bisa sangat sesuai untuk aplikasi analitik. Dalam pemodelan data relasional, Anda memulai dengan entitas terlebih dulu. Saat Anda memiliki model relasional yang dinormalkan, Anda dapat menyelesaikan pola kueri apa pun yang Anda butuhkan dalam aplikasi Anda.
Database NoSQL (nonrelasional) dirancang untuk kecepatan dan skala—bukan fleksibilitas. Meski kinerja database relasional Anda dapat mengalami penurunan saat Anda meningkatkan skala, database yang diskalakan secara horizontal seperti DynamoDB akan memberikan kinerja yang konsisten dalam segala skala. Beberapa pengguna DynamoDB memiliki tabel yang lebih besar dari 100 TB, dan kinerja baca dan tulis tabel mereka sama dengan jika tabel berukuran lebih kecil dari 1 GB.
Mendapatkan hasil terbaik dengan database NoSQL seperti DynamoDB memerlukan pergeseran pemikiran dari database relasional yang sudah umum. Gunakan praktik terbaik berikut saat memodel data dengan DynamoDB.
1. Fokus pada pola akses
Saat melakukan pemodelan data jenis apa pun, Anda akan memulai dengan diagram hubungan entitas yang menguraikan beberapa objek (atau entitas) dalam aplikasi Anda dan bagaimana mereka terhubung (atau hubungan antarentitas Anda).
Dalam database relasional, Anda akan memasukkan entitas Anda langsung ke dalam tabel dan menetapkan hubungan menggunakan kunci asing. Setelah Anda menentukan tabel data, sebuah database relasional akan memberikan bahasa kueri fleksibel untuk menghasilkan data dalam bentuk yang Anda inginkan.
Di DynamoDB, Anda memikirkan tentang pola akses sebelum memodel tabel. Database NoSQL berfokus pada kecepatan, bukan fleksibilitas. Anda terlebih dulu ingin bagaimana Anda akan mengakses data, kemudian memodel data Anda dalam bentuk data akan diakses.
Sebelum merancang tabel DynamoDB, dokumentasikan setiap kebutuhan yang Anda miliki untuk membaca dan menulis data dalam aplikasi Anda. Lakukan dengan teliti, dan pikirkan semua alur dalam aplikasi Anda karena Anda akan mengoptimalkan tabel untuk pola akses Anda..
2. Optimalkan untuk jumlah permintaan ke DynamoDB
Setelah mendokumentasikan kebutuhan pola akses aplikasi, Anda siap merancang tabel Anda. Anda sebaiknya merancang tabel untuk meminimalkan jumlah permintaan ke DynamoDB untuk setiap pola akses. Idealnya, setiap pola akses hanya memerlukan satu permintaan ke DynamoDB karena permintaan jaringan lambat, dan ini akan membatasi jumlah permintaan jaringan yang akan Anda buat dalam aplikasi Anda.
Untuk mengoptimalkan jumlah permintaan ke DynamoDB, Anda perlu memahami beberapa konsep inti:
● Kunci utama
● Indeks kedua
● Transaksi
3. Jangan memalsukan model relasional
Orang-orang yang baru mengenal DynamoDB sering mencoba mengimplementasikan model relasional menggunakan DynamoDB nonrelasional. Jika Anda mencoba melakukan ini, Anda akan kehilangan sebagian besar keuntungan DynamoDB.
Antipola paling umum (respons yang tidak efektif terhadap masalah yang berulang) yang orang-orang coba dengan DynamoDB adalah:
- Normalisasi: Dalam database relasional, Anda akan menormalkan data untuk mengurangi redundansi data dan ruang penyimpanan, kemudian menggunakan joins untuk menggabungkan beberapa tabel berbeda. Namun, joins pada skala lamban dan mahal. DynamoDB tidak mengizinkan joins karena joins memperlambat pertumbuhan tabel.
- Satu jenis data per tabel: Tabel DynamoDB Anda sering menyertakan berbagai jenis data dalam satu tabel. Dalam contoh kita, ada entitas Pengguna, Game, dan UserGameMapping dalam satu tabel. Dalam database relasional, ini akan dimodel sebagai tiga tabel berbeda.
- Terlalu banyak indeks kedua: Orang-orang sering mencoba membuat indeks kedua untuk setiap pola akses tambahan yang mereka butuhkan. DynamoDB tidak memiliki skema, dan ini juga berlaku untuk indeks Anda. Gunakan fleksibilitas dalam atribut Anda untuk menggunakan kembali satu indeks kedua di beberapa jenis data dalam tabel Anda. Ini disebut sebagai kelebihan muatan indeks.
Dalam langkah di bawah, kita akan membuat diagram hubungan entitas dan memetakan pola akses terlebih dulu. Ini harus selalu menjadi langkah pertama Anda saat menggunakan DynamoDB. Kemudian, di modul berikutnya, kita akan mengimplementasikan pola akses ini dalam desain tabel.
Waktu untuk Menyelesaikan Modul: 20 Menit