DynamoDB vs Amazon S3
DynamoDB dan Amazon S3 menyelesaikan masalah yang berbeda, jadi jawaban jujur untuk "yang mana" biasanya adalah keduanya. DynamoDB adalah database key-value dan dokumen untuk record terstruktur yang Anda cari, kueri, dan perbarui berdasarkan key. Amazon S3 adalah object storage untuk file dan blob — gambar, backup, log, video — yang Anda simpan dan ambil secara utuh. Keduanya saling melengkapi, bukan salah satu.
Haruskah saya menggunakan DynamoDB atau S3?
Gunakan DynamoDB ketika Anda memiliki banyak record terstruktur kecil yang Anda kueri, filter, dan perbarui berdasarkan key dengan latensi milidetik satu digit. Gunakan Amazon S3 ketika Anda menyimpan dan menyajikan file atau blob secara utuh — gambar, backup, ekspor — dan mengambilnya berdasarkan nama. Keduanya saling melengkapi: pola yang sangat umum menyimpan object di S3 dan metadatanya di DynamoDB.
DynamoDB vs Amazon S3 sekilas
| Karakteristik | DynamoDB | Amazon S3 |
|---|---|---|
| Tujuan utama | Database key-value / dokumen NoSQL untuk record terstruktur | Object storage untuk file, blob, dan data tidak terstruktur |
| Unit data | Item (kumpulan atribut bertipe), dialamatkan dengan primary key | Object (byte + metadata), dialamatkan dengan key dalam sebuah bucket |
| Ukuran maks per unit | 400 KB per Item (nama atribut + nilai) | 5 TB per object (single PUT hingga 5 GB; unggahan lebih besar menggunakan multipart) |
| Kueri / akses | GetItem, Query, Scan, BatchGetItem, PartiQL, secondary index (GSI/LSI) | GET / PUT / DELETE berdasarkan key, LIST sebuah bucket; kueri in-place melalui Amazon Athena (atau S3 Select untuk pelanggan yang sudah ada) |
| Profil latensi | Pembacaan/penulisan milidetik satu digit untuk Item tunggal pada skala apa pun | Throughput object yang tahan lama; latensi per-permintaan lebih tinggi daripada database key-value, bukan pencarian record milidetik |
| Konsistensi | Eventually consistent secara default; pembacaan strongly consistent tersedia per permintaan | Konsistensi strong read-after-write untuk semua object dan semua permintaan (sejak 2020) |
| Model harga | Kapasitas baca/tulis (RCU/WCU — on-demand atau provisioned) + penyimpanan data per GB-bulan | Penyimpanan per GB-bulan (berdasarkan storage class) + biaya permintaan (PUT/GET/LIST) + retrieval / transfer data |
| Workload paling cocok | Profil pengguna, sesi, keranjang, record event/state, metadata, akses gaya OLTP throughput tinggi | Media, backup, file data-lake, aset statis, ekspor besar, arsip |
Setiap sel di atas diambil dari dokumentasi resmi AWS (lihat catatan provenance di bagian atas file ini).
Kapan menggunakan DynamoDB
Gunakan DynamoDB ketika data Anda adalah record terstruktur yang Anda akses berdasarkan key:
- Banyak Item kecil (masing-masing di bawah batas 400 KB) yang Anda baca, tulis, dan perbarui secara individual.
- Pencarian latensi rendah yang dapat diprediksi — DynamoDB menargetkan pembacaan dan penulisan milidetik satu digit untuk Item tunggal pada skala apa pun.
- Pola akses yang dapat Anda ekspresikan dengan primary key dan secondary index: get-by-id, kueri-sebuah-partisi, filter-dalam-sebuah-partisi.
- Throughput penulisan tinggi dengan pembaruan yang granular (mengubah satu atribut tanpa menulis ulang seluruh record).
Jika Anda mendapati diri Anda mencoba menyimpan file 5 MB di dalam sebuah Item, itu adalah sinyal bahwa Anda telah mencapai batas DynamoDB — lihat batas ukuran Item DynamoDB.
Kapan menggunakan S3
Gunakan Amazon S3 ketika data Anda adalah file atau blob utuh yang Anda ambil berdasarkan nama:
- Gambar, PDF, video, audio, dan aset biner lainnya.
- Backup, ekspor database, dan file data-lake (Parquet, CSV, JSON) yang dikueri kemudian dengan tool seperti Amazon Athena.
- Object besar — S3 menyimpan object hingga 5 TB masing-masing, jauh melampaui record database tunggal mana pun.
- Aset situs web statis dan konten yang disajikan langsung kepada pengguna.
S3 bukanlah database: Anda tidak dapat melakukan kueri terhadap isi object arbitrer dengan indeks yang kaya seperti Anda mengkueri Item DynamoDB. Pemfilteran gaya SQL in-place atas sebuah object tersedia melalui Amazon Athena (S3 Select tetap tersedia untuk pelanggan yang sudah ada tetapi ditutup untuk pelanggan baru pada 2024).
Menggunakan keduanya bersama
Kedua layanan ini paling ampuh jika digabungkan. Panduan AWS sendiri untuk data yang terlalu besar untuk sebuah Item DynamoDB adalah menyimpan object di S3 dan menyimpan pointer di DynamoDB:
- Simpan file besar (gambar, dokumen, video) sebagai object di S3.
- Simpan metadata-nya — S3 object key, content type, pemilik, tag, timestamp — sebagai Item di DynamoDB, tempat metadata dapat dikueri dengan murah.
- Cari record di DynamoDB berdasarkan key, lalu ambil object dari S3 menggunakan pengenal yang tersimpan.
Satu peringatan yang disebutkan AWS: tidak ada transaksi yang membentang antara DynamoDB dan S3, jadi aplikasi Anda menangani kegagalan parsial (misalnya, membersihkan object S3 yang yatim jika penulisan DynamoDB gagal).
Bekerja dengan DynamoDB
Setelah Anda memilih DynamoDB untuk bagian terstruktur dari data Anda, DynoTable adalah klien DynamoDB desktop untuk menjelajahi, mengedit, dan melakukan kueri pada tabel di macOS, Windows, dan Linux. Ia membaca rantai kredensial AWS standar Anda, sehingga tidak ada yang spesifik-DynamoDB untuk dimigrasikan — arahkan ke region dan tabel Anda dan data Anda tetap berada di DynamoDB.
Ketika Anda perlu membangun sendiri expression GetItem, Query, Update, atau condition yang mendukung pola metadata-di-DynamoDB di atas, DynamoDB Expression Builder gratis menghasilkan permintaan dalam bentuk AWS SDK, CLI, dan boto3. Untuk mengukur sebuah Item terhadap batas 400 KB sebelum Anda memutuskan apa yang termasuk ke S3, kalkulator ukuran Item mengukur ukuran byte sebuah record.
FAQ
Bisakah DynamoDB menyimpan file atau gambar?
Yang kecil, dalam batasan. Sebuah Item DynamoDB dapat menampung data biner, tetapi seluruh Item — setiap nama dan nilai atribut — harus tetap di bawah 400 KB. Untuk apa pun yang lebih besar, praktik terbaik yang didokumentasikan AWS adalah menyimpan file sebagai object di Amazon S3 dan menyimpan S3 object key (plus metadata) di sebuah Item DynamoDB.
Apakah S3 lebih murah dari DynamoDB?
Keduanya memiliki penetapan harga yang berbeda, jadi tergantung pada workload alih-alih jawaban tunggal. S3 menagih penyimpanan per GB-bulan plus biaya per-permintaan dan retrieval, dan umumnya merupakan rumah yang lebih murah untuk byte dalam volume besar yang jarang diakses. DynamoDB menagih kapasitas baca/tulis plus penyimpanan dan dibangun untuk akses throughput tinggi, latensi rendah ke banyak record kecil. Menyimpan blob besar di DynamoDB terbatas ukuran dan relatif mahal — itulah mengapa pembagian object-S3-plus-metadata-DynamoDB adalah pola standar.
DynamoDB atau S3 untuk JSON?
Jika JSON adalah record terstruktur yang Anda kueri dan perbarui berdasarkan key — pengguna, pesanan, sesi — DynamoDB cocok, dan ia memetakan JSON ke atribut bertipe serta mendukung PartiQL. Jika JSON adalah dokumen atau file data-lake utuh yang Anda simpan dan kemudian scan secara massal (misalnya mengkuerinya dengan Amazon Athena), S3 cocok. Hibrida yang sering dilakukan menyimpan field yang dapat dikueri di DynamoDB dan payload JSON lengkap sebagai object di S3.
Terkait
- Pelajari: batas ukuran Item DynamoDB · Kapan menggunakan DynamoDB
- Bangun permintaan secara visual dengan DynamoDB Expression Builder.
- Ukur record dengan kalkulator ukuran Item DynamoDB.
- Unduh DynoTable untuk bekerja dengan tabel DynamoDB Anda.
Terakhir diverifikasi 2026-07-12 terhadap dokumentasi resmi AWS DynamoDB dan Amazon S3. Amazon S3, DynamoDB, dan Athena adalah layanan Amazon Web Services, dirujuk di sini hanya untuk identifikasi.