Gambaran umum DynamoDB - AWS Bimbingan Preskriptif

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gambaran umum DynamoDB

Amazon DynamoDB adalah basis data dokumen dan nilai kunci NoSQL yang memberikan performa yang cepat dan dapat diprediksi dengan skalabilitas sempurna. Ini adalah database yang dikelola sepenuhnya, Multi-wilayah, multi-aktif, dan tahan lama. (Fitur tabel global di DynamoDB menyinkronkan modifikasi yang dibuat di satuAWS Wilayah ke semua Wilayah terpilih lainnya secara otomatis, untuk memberikan dukungan multi-aktif.) DynamoDB memiliki kemampuan keamanan bawaan, opsi pencadangan dan pemulihan, dan caching dalam memori untuk aplikasi skala internet.

Sifat schemaless database NoSQL membantu mengurangi waktu dan proses yang diperlukan untuk mendorong perubahan database (baca skema) ke produksi, sehingga memungkinkan pengembangan aplikasi yang cepat (RAD). Database NoSQL seperti DynamoDB dibuat untuk operasi baca/tulis berkinerja tinggi.

Fitur dan manfaat

DynamoDB menyediakan fitur-fitur dan manfaat berikut:

  • Tidak ada server untuk dikelola - DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya, yang berarti tidak melibatkan overhead pemeliharaan server apa pun.

  • Schemaless - DynamoDB mendukung pengembangan dan penyebaran aplikasi yang cepat.

  • Kinerja pada skala — DynamoDB memberikan performa yang cepat dan dapat diprediksi dengan skalabilitas sempurna.

  • Dukungan ACID — DynamoDB mendukung transaksi atomisitas, konsistensi, isolasi, dan daya tahan (ACID), untuk membantu Anda mempertahankan kebenaran data.

  • Ketersediaan dan daya tahan tinggi — Data Anda disimpan pada solid-state disk (SSD) dan secara otomatis direplikasi di beberapa Availability Zones diAWS Wilayah, memberikan ketersediaan tinggi dan daya tahan data.

  • Penskalaan otomatis — DynamoDB menggunakan layananAWS Application Auto Scaling untuk secara dinamis menyesuaikan kapasitas throughput yang disediakan sebagai respons terhadap pola lalu lintas.

  • Opsi harga fleksibel - DynamoDB menyediakan dua mode kapasitas dengan opsi penagihan tertentu: mode kapasitas sesuai permintaan dan mode kapasitas yang disediakan.

  • oint-in-time Pemulihan P - Anda dapat mengaktifkan pencadangan berkelanjutan menggunakan point-in-time pemulihan untuk membantu melindungi tabel Anda dari operasi penulisan atau penghapusan yang tidak disengaja, dan mengembalikan tabel Anda ke titik waktu mana pun selama 35 hari terakhir.

  • Time to Live (TTL) - Anda dapat secara otomatis menghapus item dari tabel DynamoDB setelah durasi tertentu.

  • Tabel global - Anda dapat menyebarkan beberapa replika di seluruhAWS Wilayah tanpa harus membangun solusi replikasi Anda sendiri.

  • Indeks sekunder global - Anda dapat menanyakan tabel DynamoDB Anda dengan menggunakan kunci partisi dan sortir yang berbeda dari kunci partisi dan sortir tabel sendiri.

  • DAX - Layanan caching DynamoDB Accelerator (DAX) menyediakan waktu respons sub-milidetik untuk operasi baca.

  • DynamoDB Streams - Fitur ini menyediakan urutan waktu modifikasi level item dalam log untuk mendukung pelacakan waktu dan pemberitahuan perubahan dalam tabel DynamoDB.

Untuk informasi selengkapnya tentang manfaat ini, lihat Fitur Amazon DynamoDB diAWS situs web. Bagian berikut membahas beberapa fitur yang relevan untuk memodernisasi beban kerja database Anda dengan bermigrasi dari RDBMS ke DynamoDB.

Kunci partisi

DynamoDB adalah schemaless, jadi tidak perlu mendefinisikan semua atribut untuk tabel. Atribut kunci partisi diperlukan, dan kunci pengurutan bersifat opsional. Sisa atribut sewenang-wenang dan dapat bervariasi per item. Kami menyarankan Anda memilih kunci partisi dengan kardinalitas tinggi sehingga item yang sering diakses tidak berada pada partisi yang sama. Praktik ini membantu Anda menghindari ketidakseimbangan akses data dan partisi panas. Untuk informasi selengkapnya, lihat Praktik terbaik untuk merancang dan menggunakan kunci partisi secara efektif dalam dokumentasi DynamoDB.

Indeks

Indeks memberikan Anda akses ke pola kueri alternatif dan dapat mempercepat kueri. Anda harus membuat indeks dengan hati-hati, terlepas dari apakah Anda menggunakan database relasional atau DynamoDB. Setiap kali sebuah operasi tulis terjadi pada tabel, semua indeks untuk tabel harus diperbarui.

Indeks sekunder global berisi pilihan atribut dari tabel dasar, tetapi atribut tersebut diatur oleh kunci primer yang berbeda dari kunci utama tabel. Di DynamoDB, indeks sekunder global bersifat jarang secara default. Artinya, kunci semacam adalah opsional dan tidak muncul di setiap item tabel. Untuk memanfaatkan fitur ini, Anda dapat membuat indeks sekunder global yang menyimpan dan memproyeksikan hanya atribut yang diperlukan. Anda dapat memiliki hingga 20 indeks sekunder global pada tabel DynamoDB. Untuk informasi selengkapnya tentang fitur ini, lihat Menggunakan indeks sekunder global di DynamoDB dalam dokumentasi DynamoDB.

Waktu untuk tayang

Anda dapat mengatur properti Waktu untuk tayang (TTL) pada tabel DynamoDB untuk menentukan stempel waktu per item (record) untuk menentukan kapan item tidak lagi diperlukan. Tidak lama setelah stempel yang ditentukan, DynamoDB menghapus item dari tabel tanpa mengonsumsi unit kapasitas tambahan. Untuk informasi selengkapnya tentang fitur ini, lihat Item kedaluwarsa menggunakan DynamoDB Time to Live di dokumentasi DynamoDB.

Model harga

DynamoDB menawarkan dua model harga untuk dipilih: kapasitas yang disediakan dan kapasitas sesuai permintaan. Pilihan model penetapan harga Anda bergantung pada beban kerja Anda yang diproyeksikan.

Model harga Jenis beban kerja Biaya Baca/tulis throughput
Kapasitas yang disediakan Dapat diprediksi Lebih rendah

Anda menentukan jumlah operasi baca/tulis per detik dalam hal unit kapasitas baca (RCU) dan unit kapasitas tulis (WCU). Misalnya:

  • Untuk item hingga ukuran 4 KB, 1 RCU dapat melakukan 2 bacaan konsisten per detik.

  • Untuk item hingga ukuran 1 KB, 1 WCU dapat melakukan 2 bacaan konsisten per detik.

Anda dapat mengaktifkan penskalaan otomatis untuk menyesuaikan kapasitas sebagai respons terhadap perubahan lalu lintas.

Kapasitas sesuai permintaan Dinamis Lebih tinggi

Anda tidak menentukan persyaratan throughput. DynamoDB mengakomodasi beban kerja Anda secara otomatis.

Anda dikenakan biaya untuk baca dan tulis yang dilakukan aplikasi Anda pada tabel dalam hal unit permintaan baca dan unit permintaan tulis. Misalnya:

  • Item 8 KB memerlukan 1 unit permintaan baca untuk unit permintaan baca dan 8 tulis yang konsisten untuk operasi penulisan non-transaksional.

Untuk informasi selengkapnya tentang kedua model ini, lihat mode kapasitas baca/tulis dalam dokumentasi DynamoDB.

Transaksi

DynamoDB mendukung transaksi atomisitas, konsistensi, isolasi, dan daya tahan (ACID) di satu tabel atau beberapa tabel dalam satuAWS akun danAWS Wilayah.

Untuk mengelola perubahan pada beberapa item di dalam dan di seluruh tabel, Anda dapat menggunakanTransactGetItems APITransactWriteItems dan transaksional DynamoDB.

  • TransactWriteItemsadalah operasi batch yang berisi set tulis dengan satu atau lebihPutItem,UpdateItem, danDeleteItem tindakan. TransactWriteItemsopsional dapat memeriksa kondisi prasyarat yang harus dipenuhi sebelum membuat update. Kondisi ini mungkin melibatkan item yang sama dengan yang ada di set tulis, atau item yang berbeda. Jika ada kondisi yang tidak terpenuhi, transaksi ditolak.

  • TransactGetItemsadalah operasi batch yang berisi set baca dengan satu atau lebihGetItem tindakan. Jika Anda mengeluarkanTransactGetItems permintaan pada item yang merupakan bagian dari transaksi tulis aktif, transaksi baca dibatalkan. Untuk mendapatkan nilai yang sebelumnya berkomitmen, Anda dapat menggunakan operasi baca standar.

Untuk informasi selengkapnya tentang API ini, lihat transaksi Amazon DynamoDB: cara kerjanya dalam dokumentasi DynamoDB.

Keterbatasan

Operasi API transaksional DynamoDB memiliki keterbatasan berikut:

  • Transaksi tidak dapat memperbarui lebih dari 100 item unik.

  • Transaksi tidak boleh berisi lebih dari 4 MB data.

  • Tidak ada dua tindakan dalam transaksi yang dapat bekerja berdasarkan item yang sama dalam tabel yang sama. Sebagai contoh, Anda tidak dapat menjalankan keduanyaConditionCheck danUpdate tindakan pada item yang sama dalam satu transaksi.

  • Transaksi tidak dapat beroperasi pada tabel di lebih dari satu akun AWS atau Wilayah.

  • Operasi transaksional memberikan jaminan ACID hanya dalamAWS Wilayah di mana operasi tulis awalnya berlangsung. Transaksi tidak didukung di seluruh Wilayah dalam tabel global.

  • Model persistensi objek tidak mendukung transaksi. Untuk menggunakan fitur transaksi, Anda harus mengakses database dan tabel menggunakan API tingkat rendah DynamoDB.

Komponen besar

DynamoDB memiliki batas ukuran 400 KB untuk setiap item. Batas ini mencakup nama atribut (panjang biner dengan pengkodean UTF-8) dan nilai atribut (lagi panjang biner). Nama atribut dihitung terhadap batas ukuran. Sebagai contoh, pertimbangkan item yang memiliki dua atribut: satu atribut bernama “IN” dan atribut lain bernama "country-phone-prefix" dengan nilai “91". Ukuran total item tersebut adalah 36 byte.

Solusi

Jika item dikaitkan dengan banyak atribut dan properti, atau sejumlah besar data, ukurannya mungkin melebihi 400 KB. Dalam kasus ini, Anda dapat menyimpan item serial di Amazon Simple Storage Service (Amazon S3) dalam format JSON, dan menyimpan lokasi Amazon S3 sebagai atribut (S3Location) di item. Operasi baca dan tulis untuk item tersebut mengambil objek S3 dan memperbarui string JSON. Primary key, sort key, dan semua atribut yang digunakan oleh indeks lokal dan indeks sekunder global harus disimpan dalam tabel bersama denganS3Location atribut. Ini memerlukan logika tambahan dalam aplikasi (lapisan akses data) untuk memeriksaS3Location atribut dan mengambil data item lengkap dari Amazon S3.

Backup dan pemulihan

Backup dan restore dukungan adalah ekspektasi fitur umum dalam database apapun. DynamoDB secara native mendukung operasi pencadangan dan pemulihan dalam akun yang sama, tetapi Anda dapat melakukan penyalinan tabel di beberapa akun dengan menggunakan opsi atau proses lain. Proses ini tidak mengkonsumsi unit kapasitas baca/tulis apa pun. Untuk informasi selengkapnya, lihat panduan Opsi salinan tabel lengkap lintas akun untuk Amazon DynamoDB di situs web PanduanAWS Preskriptif.

Keterbatasan

DynamoDB saat ini mendukung pencadangan dan pemulihan lintas akun dengan menggunakan AWS Backup, tetapi akun harus menjadi bagian dari organisasi yang sama. Anda dapat mengatasi batasan ini dengan mengadopsi salah satu solusi berikut:

Bahasa dan dukungan SDK

AWSSDK menyediakan antarmuka pemrograman yang disederhanakan untukAWS layanan dan dukungan untuk .NET, JavaScript Java,, Node.js, Python, PHP, dan Ruby.

Anda dapat memilih dari tiga pola untuk mengakses tabel DynamoDB dengan menggunakanAWS SDK: model persistensi objek (antarmuka tingkat tinggi), antarmuka dokumen, dan antarmuka tingkat rendah. Untuk informasi selengkapnya, lihat Pola akses dalam panduan ini.