Tabel, Item, dan Kunci Utama
Rancang tabel DynamoDB dengan kunci partisi dan kunci utama komposit, serta pahami batas penyimpanan tingkat item.
Tabel, Item, dan Kunci Utama adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
DynamoDB: Penyimpanan Nilai-Kunci NoSQL
Amazon DynamoDB adalah basis data nilai-kunci dan dokumen nirserver yang dikelola sepenuhnya, dirancang untuk memberikan performa dalam hitungan milidetik satu digit pada skala apa pun. Tidak seperti basis data relasional, DynamoDB tanpa skema—setiap item dapat memiliki kumpulan attribute yang berbeda selama kunci primernya tersedia.
DynamoDB menyimpan data dalam tabel, yaitu wadah tingkat teratas yang analog dengan tabel SQL. Tabel secara otomatis tersebar di beberapa simpul penyimpanan pada berbagai zona ketersediaan, sehingga menyediakan redundansi bawaan tanpa konfigurasi yang diperlukan dari Anda.
Tabel dan Item
Sebuah tabel DynamoDB berisi kumpulan item, dan setiap item merupakan kumpulan attribute. Attribute adalah nilai bertipe: String (S), Number (N), Binary (B), Boolean (BOOL), Null (NULL), List (L), Map (M), dan tipe Set (SS, NS, BS).
Setiap item dalam tabel harus menyertakan attribute kunci primer—semua attribute lainnya bersifat opsional dan dapat berbeda antaritem. Ukuran satu item paling besar adalah 400 KB, termasuk semua nama dan nilai attributenya.
# Example DynamoDB item structure (JSON)
{
'UserId': {'S': 'user-abc-123'},
'Timestamp': {'N': '1719000000'},
'Username': {'S': 'alice'},
'Score': {'N': '4200'},
'Tags': {'SS': ['premium', 'verified']}
}Kunci Primer simple: Hanya Kunci Partisi
Kunci primer simple terdiri dari satu attribute yang disebut kunci partisi (juga disebut kunci hash). DynamoDB menerapkan fungsi hash internal pada nilai kunci partisi untuk menentukan partisi penyimpanan yang menyimpan item tersebut. Semua item dengan nilai kunci partisi yang sama disimpan bersama.
Dengan kunci primer simple, tidak ada dua item dalam tabel yang dapat memiliki nilai kunci partisi sama—nilai tersebut mengidentifikasi setiap item secara unik. Desain ini sesuai untuk tabel yang datanya selalu diakses menggunakan pengenal unik, seperti ID pengguna atau ID pesanan.
# Create a table with a simple (partition key only) primary key
aws dynamodb create-table \
--table-name Users \
--attribute-definitions AttributeName=UserId,AttributeType=S \
--key-schema AttributeName=UserId,KeyType=HASH \
--billing-mode PAY_PER_REQUESTKunci Primer Komposit: Kunci Partisi + Kunci Pengurutan
Kunci primer komposit menggunakan kunci partisi dan kunci pengurutan (juga disebut kunci rentang). Item dengan kunci partisi yang sama disimpan bersama dan diurutkan berdasarkan nilai kunci pengurutan, sehingga memungkinkan kueri rentang dalam suatu partisi.
Desain ini sangat fleksibel: beberapa item dapat menggunakan kunci partisi yang sama selama kunci pengurutannya berbeda. Misalnya, tabel Orders dapat menggunakan CustomerId sebagai kunci partisi dan OrderDate sebagai kunci pengurutan, sehingga Anda dapat membuat kueri untuk semua pesanan pelanggan yang diurutkan berdasarkan tanggal.
# Create a table with a composite primary key
aws dynamodb create-table \
--table-name Orders \
--attribute-definitions \
AttributeName=CustomerId,AttributeType=S \
AttributeName=OrderDate,AttributeType=S \
--key-schema \
AttributeName=CustomerId,KeyType=HASH \
AttributeName=OrderDate,KeyType=RANGE \
--billing-mode PAY_PER_REQUESTDesain Kunci Partisi dan Partisi Panas
Memilih kunci partisi yang tepat adalah keputusan desain DynamoDB yang paling penting. Kunci partisi yang baik memiliki kardinalitas tinggi (banyak nilai berbeda) dan mendistribusikan akses secara merata di seluruh partisi. Pilihan yang buruk menyebabkan partisi panas, yaitu kondisi saat satu partisi menerima lalu lintas yang tidak proporsional dan menimbulkan pembatasan.
Pola antipraktik yang harus dihindari: menggunakan penanda boolean (hanya dua nilai), tanggal yang mengelompokkan semua penulisan hari ini, atau field status berkardinalitas rendah. Pilihan yang baik meliputi ID pengguna, ID perangkat, UUID acak, atau nilai komposit seperti tenantId#entityType.
PutItem, GetItem, dan DeleteItem
Tiga operasi item DynamoDB yang mendasar adalah:
- PutItem: menulis item baru atau sepenuhnya mengganti item yang sudah ada dengan kunci primer yang sama
- GetItem: mengambil satu item berdasarkan kunci primernya secara tepat (memerlukan kunci lengkap—kunci partisi dan, jika komposit, kunci pengurutan)
- DeleteItem: menghapus item berdasarkan kunci primernya secara tepat
Ketiga operasi tersebut bersifat atomik pada tingkat item. Secara default, GetItem menggunakan pembacaan yang konsistensinya bersifat eventual; penambahan --consistent-read memaksa pembacaan yang konsisten kuat sehingga selalu mengembalikan nilai yang terakhir ditulis.
# PutItem
aws dynamodb put-item \
--table-name Users \
--item '{"UserId":{"S":"user-123"},"Name":{"S":"Alice"}}'
# GetItem
aws dynamodb get-item \
--table-name Users \
--key '{"UserId":{"S":"user-123"}}' \
--consistent-readUpdateItem dan Ekspresi Bersyarat
UpdateItem mengubah attribute tertentu dari item yang sudah ada tanpa menggantinya secara keseluruhan, berbeda dari PutItem. Anda dapat menambahkan atau menghapus attribute, maupun melakukan operasi aritmetika pada attribute Number secara atomik (misalnya, menambah nilai penghitung).
Ekspresi bersyarat memungkinkan Anda menentukan bahwa suatu operasi hanya boleh berhasil jika sebuah kondisi benar. Misalnya, perbarui status item hanya jika statusnya saat ini PENDING. Cara ini menerapkan pola penguncian optimistis tanpa transaksi dan merupakan teknik desain DynamoDB yang penting.
# Atomically increment a counter, only if item exists
aws dynamodb update-item \
--table-name Orders \
--key '{"CustomerId":{"S":"c-123"},"OrderDate":{"S":"2026-06-20"}}' \
--update-expression 'SET ItemCount = ItemCount + :inc' \
--condition-expression 'attribute_exists(CustomerId)' \
--expression-attribute-values '{":inc":{"N":"1"}}'Query vs Scan
Query mengambil item yang memiliki nilai kunci partisi sama, dengan pemfilteran opsional berdasarkan kondisi kunci pengurutan. Query efisien karena hanya membaca partisi yang dituju. Anda dapat menggunakan kondisi kunci pengurutan seperti begins_with, between, =, <, > untuk mempersempit hasil dalam partisi.
Scan membaca setiap item dalam tabel, lalu menerapkan ekspresi filter opsional. Scan mahal untuk tabel besar dan sebaiknya dihindari dalam pola kueri produksi. Jika Anda sering perlu menggunakan Scan, pertimbangkan kembali desain tabel atau tambahkan Global Secondary Index.
# Query: get all orders for customer c-123 after a date
aws dynamodb query \
--table-name Orders \
--key-condition-expression 'CustomerId = :cid AND OrderDate >= :dt' \
--expression-attribute-values \
'{":cid":{"S":"c-123"},":dt":{"S":"2026-01-01"}}'Pembacaan Konsisten Kuat vs Konsisten Akhirnya
DynamoDB menyimpan tiga salinan data Anda di beberapa AZ. Pembacaan yang konsisten akhirnya (bawaan) dapat mengembalikan nilai yang sedikit kedaluwarsa jika penulisan terbaru belum tersebar ke semua salinan—tetapi pembacaan ini menggunakan setengah unit kapasitas baca dibandingkan pembacaan yang konsisten kuat.
Pembacaan yang konsisten kuat selalu mengembalikan penulisan yang telah dikomit terbaru, tetapi biayanya dua kali lipat RCU dan pembacaan ini tidak tersedia pada Global Secondary Index. Pilih pembacaan yang konsisten akhirnya untuk beban kerja dengan throughput tinggi dan dominan baca, serta gunakan pembacaan yang konsisten kuat hanya saat aplikasi Anda benar-benar memerlukan data paling mutakhir.
Transaksi DynamoDB
DynamoDB mendukung transaksi ACID melalui TransactWriteItems dan TransactGetItems. Sebuah transaksi dapat mengelompokkan hingga 100 operasi penulisan pada beberapa item, bahkan pada beberapa tabel, sehingga semuanya berhasil atau semuanya dibatalkan secara atomik.
Gunakan transaksi untuk skenario seperti mentransfer uang antar-akun (mengurangi saldo dari satu item dan menambahkan saldo ke item lain) atau memesan tempat duduk (memeriksa ketersediaan dan memesannya secara atomik). Transaksi membutuhkan biaya dua kali lipat RCU/WCU normal, jadi gunakan hanya jika atomisitas pada beberapa item memang diperlukan.
Batas Ukuran Item dan Tips Pemodelan Data
Batas 400 KB per item pada DynamoDB memengaruhi pemodelan data. Untuk muatan berukuran besar (misalnya gambar atau dokumen besar), simpan data biner di S3 dan simpan hanya kunci objek S3 di DynamoDB. Untuk data hierarkis bertingkat dalam, modelkan setiap jenis simpul dengan pola kunci partisi sendiri menggunakan desain satu tabel—satu tabel menampung beberapa jenis entitas yang dibedakan berdasarkan prefiks kunci partisi dan pola kunci pengurutan.
Desain satu tabel meminimalkan jumlah tabel dan memungkinkan pola akses yang efisien dengan menempatkan item terkait pada partisi yang sama. Ini adalah teknik tingkat lanjut yang mengurangi beban operasional dan meningkatkan kinerja untuk pola akses yang kompleks.
Pemeriksaan Cepat
Uji pemahaman Anda tentang konsep Arsitek Solusi AWS (SAA-C03) dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari: tabel DynamoDB menampung item tanpa skema yang dibatasi hingga 400 KB, kunci primer sederhana hanya menggunakan kunci partisi, sedangkan kunci gabungan menambahkan kunci pengurutan untuk kueri rentang, dan kunci partisi dengan kardinalitas tinggi mencegah partisi panas. Gunakan Query, bukan Scan, untuk akses yang efisien. Selanjutnya kita akan membahas mode kapasitas yang disediakan dan sesuai permintaan.
Belajar Cloud & IT Cert Prep dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 150
- Pelajaran
- 600
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Tabel, Item, dan Kunci Utama” gratis?
Ya — teks lengkap “Tabel, Item, dan Kunci Utama” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Tabel, Item, dan Kunci Utama”?
Rancang tabel DynamoDB dengan kunci partisi dan kunci utama komposit, serta pahami batas penyimpanan tingkat item. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?
Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Tabel, Item, dan Kunci Utama” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?
Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Tabel, Item, dan Kunci Utama
- Kapasitas Terprovisi vs Sesuai Permintaan
- Indeks Sekunder Global dan Indeks Sekunder Lokal
- Aliran DynamoDB dan Tabel Global