Komponen inti dari Amazon DynamoDB - Amazon DynamoDB

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

Komponen inti dari Amazon DynamoDB

Dalam DynamoDB, tabel, item, dan atribut adalah komponen inti yang Anda kerjakan. Sebuah tabel adalah koleksi item, dan setiap item adalah koleksi atribut. DynamoDB menggunakan kunci primer untuk secara unik mengidentifikasi setiap item dalam tabel dan indeks sekunder untuk memberikan kueri yang lebih fleksibel. Anda dapat menggunakan DynamoDB Streams untuk menangkap peristiwa modifikasi data dalam tabel DynamoDB.

Ada batas dalam DynamoDB. Untuk informasi selengkapnya, lihat Layanan, akun, dan tabel kuota di Amazon DynamoDB.

Video berikut ini akan memberi Anda tampilan pengantar tabel, item, dan atribut.

Tabel, item, dan atribut

Tabel, item, dan atribut

Berikut ini adalah komponen DynamoDB dasar:

  • Tabel – Mirip dengan sistem basis data lainnya, DynamoDB menyimpan data dalam tabel. Sebuah tabel adalah koleksi data. Misalnya, lihat tabel contoh yang disebut Orang yang dapat Anda gunakan untuk menyimpan informasi kontak pribadi tentang teman, keluarga, atau orang lain yang menarik. Anda juga dapat memiliki tabel Mobil untuk menyimpan informasi tentang kendaraan yang dikendarai orang.

  • Item — Setiap tabel berisi nol item atau lebih. Sebuah item adalah sekelompok atribut yang dapat diidentifikasi secara unik di antara semua item lainnya. Dalam tabel Orang, setiap item mewakili satu orang. Untuk tabel Mobil, setiap item mewakili satu kendaraan. Item dalam DynamoDB serupa dalam banyak hal dengan baris, catatan, atau tupel dalam sistem basis data lain. Dalam DynamoDB, tidak ada batasan jumlah item yang dapat Anda simpan dalam tabel.

  • Atribut — Setiap item terdiri dari satu atau beberapa atribut. Sebuah atribut adalah elemen data fundamental, sesuatu yang tidak perlu dipecah lebih jauh. Misalnya, item dalam tabel People berisi atribut yang disebut personId,, LastNameFirstName, dan sebagainya. Untuk tabel Departemen, item mungkin memiliki atribut seperti DepartmentID, Name, Manager, dan sebagainya. Atribut di DynamoDB serupa dalam banyak hal dengan bidang atau kolom dalam sistem basis data lain.

Diagram berikut menunjukkan tabel bernama Orang dengan beberapa item dan atribut contoh.

People { "PersonID": 101, "LastName": "Smith", "FirstName": "Fred", "Phone": "555-4321" } { "PersonID": 102, "LastName": "Jones", "FirstName": "Mary", "Address": { "Street": "123 Main", "City": "Anytown", "State": "OH", "ZIPCode": 12345 } } { "PersonID": 103, "LastName": "Stephens", "FirstName": "Howard", "Address": { "Street": "123 Main", "City": "London", "PostalCode": "ER3 5K8" }, "FavoriteColor": "Blue" }

Perhatikan hal berikut tentang tabel Orang:

  • Setiap item dalam tabel memiliki pengidentifikasi unik, atau kunci primer, yang membedakan item dari semua hal lain dalam tabel. Dalam tabel Orang, kunci primer terdiri dari satu atribut (PersonID).

  • Selain kunci primer, tabel Orang tidak berskema, yang berarti bahwa baik atribut maupun jenis datanya perlu didefinisikan terlebih dahulu. Setiap item dapat memiliki atribut tersendiri.

  • Sebagian besar atribut skalar, yang berarti bahwa mereka hanya dapat memiliki satu nilai. String dan angka adalah contoh umum dari skalar.

  • Beberapa item memiliki atribut bersarang (Alamat). DynamoDB mendukung atribut bersarang hingga sedalam 32 tingkat.

Berikut ini adalah tabel contoh lain bernama Musik yang dapat Anda gunakan untuk melacak koleksi musik Anda.

Music { "Artist": "No One You Know", "SongTitle": "My Dog Spot", "AlbumTitle": "Hey Now", "Price": 1.98, "Genre": "Country", "CriticRating": 8.4 } { "Artist": "No One You Know", "SongTitle": "Somewhere Down The Road", "AlbumTitle": "Somewhat Famous", "Genre": "Country", "CriticRating": 8.4, "Year": 1984 } { "Artist": "The Acme Band", "SongTitle": "Still in Love", "AlbumTitle": "The Buck Starts Here", "Price": 2.47, "Genre": "Rock", "PromotionInfo": { "RadioStationsPlaying": [ "KHCR", "KQBX", "WTNR", "WJJH" ], "TourDates": { "Seattle": "20150622", "Cleveland": "20150630" }, "Rotation": "Heavy" } } { "Artist": "The Acme Band", "SongTitle": "Look Out, World", "AlbumTitle": "The Buck Starts Here", "Price": 0.99, "Genre": "Rock" }

Perhatikan hal berikut tentang tabel Musik:

  • Kunci utama untuk Musik terdiri dari dua atribut (Artis dan SongTitle). Setiap item dalam tabel harus memiliki dua atribut ini. Kombinasi Artis dan SongTitlemembedakan setiap item dalam tabel dari yang lainnya.

  • Selain kunci primer, tabel Musik tidak berskema, yang berarti bahwa baik atribut maupun jenis datanya perlu didefinisikan terlebih dahulu. Setiap item dapat memiliki atribut tersendiri.

  • Salah satu item memiliki atribut bersarang (PromotionInfo), yang berisi atribut bersarang lainnya. DynamoDB mendukung atribut bersarang hingga sedalam 32 tingkat.

Untuk informasi selengkapnya, lihat Bekerja dengan tabel dan data di DynamoDB.

Kunci primer

Ketika Anda membuat tabel, selain nama tabel, Anda harus menentukan kunci primer dari tabel. Kunci utama secara unik mengidentifikasi setiap item dalam tabel, sehingga tidak ada dua item dapat memiliki kunci yang sama.

DynamoDB mendukung dua jenis kunci primer:

  • Kunci partisi — Sebuah kunci primer sederhana, terdiri dari satu atribut yang dikenal sebagai kunci partisi.

    DynamoDB menggunakan nilai kunci partisi sebagai masukan untuk fungsi hash internal. Output dari fungsi hash menentukan partisi (penyimpanan fisik internal pada DynamoDB) di mana item akan disimpan.

    Dalam tabel yang hanya memiliki kunci partisi, tidak ada dua item dapat memiliki nilai kunci partisi yang sama.

    Tabel Orang yang dijelaskan dalam Tabel, item, dan atribut adalah contoh dari sebuah tabel dengan kunci primer sederhana (PersonID). Anda dapat mengakses item apa pun di tabel Orang secara langsung dengan memberikan PersonIdnilai untuk item tersebut.

  • Kunci partisi dan kunci urutan – Disebut sebagai kunci primer komposit, jenis kunci ini terdiri dari dua atribut. Atribut pertama adalah kunci partisi, dan atribut kedua adalah kunci urutan.

    DynamoDB menggunakan nilai kunci partisi sebagai input untuk fungsi hash internal. Output dari fungsi hash menentukan partisi (penyimpanan fisik internal pada DynamoDB) di mana item akan disimpan. Semua item dengan nilai kunci partisi yang sama disimpan bersama-sama, dalam urutan yang diurutkan berdasarkan nilai kunci urutan.

    Dalam tabel yang memiliki kunci partisi dan kunci urutan, mungkin bagi beberapa item memiliki nilai kunci partisi yang sama. Namun, item tersebut harus memiliki nilai kunci urutan yang berbeda.

    Tabel Musik yang dijelaskan dalam Tabel, item, dan atribut adalah contoh tabel dengan kunci primer komposit (Artis dan SongTitle). Anda dapat mengakses item apa pun di tabel Musik secara langsung, jika Anda memberikan Artis dan SongTitlenilai untuk item tersebut.

    Kunci primer komposit memberi Anda fleksibilitas tambahan saat mengkueri data. Misalnya, jika Anda hanya memberikan nilai untuk Artist, DynamoDB mengambil semua lagu oleh penyanyi tersebut. Untuk mengambil hanya subset lagu oleh artis tertentu, Anda dapat memberikan nilai untuk Artis bersama dengan berbagai nilai untuk. SongTitle

catatan

Kunci partisi dari item juga dikenal sebagai atribut hash. Istilah atribut hash berasal dari penggunaan fungsi hash internal di DynamoDB yang mendistribusikan item data secara merata di seluruh partisi, berdasarkan nilai kunci partisi mereka.

Kunci urutan item juga dikenal sebagai atribut rentang. Istilah atribut rentang berasal dari cara DynamoDB menyimpan item dengan kunci partisi yang sama yang secara fisik berdekatan, dalam urutan berdasarkan nilai kunci urutan.

Setiap atribut kunci primer harus skalar (yang berarti bahwa atribut itu hanya dapat menyimpan nilai tunggal). Satu-satunya jenis data yang diperbolehkan untuk atribut kunci primer adalah string, nomor, atau biner. Tidak ada batasan seperti itu untuk atribut non-kunci lainnya.

Indeks sekunder

Anda dapat membuat satu atau beberapa indeks sekunder pada tabel. Indeks sekunder memungkinkan Anda mengkueri data dalam tabel menggunakan kunci alternatif, selain kueri terhadap kunci primer. DynamoDB tidak mengharuskan Anda menggunakan indeks, tetapi mereka memberikan aplikasi Anda fleksibilitas lebih ketika mengkueri pada data Anda. Setelah Anda membuat indeks sekunder pada tabel, Anda bisa membaca data dari indeks dengan cara yang sama seperti yang Anda lakukan dari tabel.

DynamoDB mendukung dua jenis indeks:

  • Indeks sekunder global – Indeks dengan kunci partisi dan kunci urutan yang mungkin berbeda dari yang ada di tabel.

  • Indeks sekunder lokal – Indeks yang memiliki kunci partisi yang sama dengan tabel, namun kunci urutan berbeda.

Di DynamoDB, indeks sekunder global (GSI) adalah indeks yang menjangkau seluruh tabel, memungkinkan Anda untuk melakukan kueri di semua kunci partisi. Indeks sekunder lokal (LSI) adalah indeks yang memiliki kunci partisi yang sama dengan tabel dasar tetapi kunci pengurutan yang berbeda.

Setiap tabel di DynamoDB memiliki kuota 20 indeks sekunder global (kuota default) dan 5 indeks sekunder lokal.

Dalam contoh tabel Musik yang ditampilkan sebelumnya, Anda dapat meminta item data berdasarkan Artis (kunci partisi) atau oleh Artis dan SongTitle(kunci partisi dan kunci sortir). Bagaimana jika Anda juga ingin menanyakan data berdasarkan Genre dan AlbumTitle? Untuk melakukan ini, Anda dapat membuat indeks pada Genre dan AlbumTitle, lalu menanyakan indeks dengan cara yang sama seperti Anda menanyakan tabel Musik.

Diagram berikut menunjukkan contoh tabel Musik, dengan indeks baru yang disebut GenreAlbumJudul. Dalam indeks, Genre adalah kunci partisi dan AlbumTitlemerupakan kunci sortir.

Tabel Musik GenreAlbumJudul
{ "Artist": "No One You Know", "SongTitle": "My Dog Spot", "AlbumTitle": "Hey Now", "Price": 1.98, "Genre": "Country", "CriticRating": 8.4 }
{ "Genre": "Country", "AlbumTitle": "Hey Now", "Artist": "No One You Know", "SongTitle": "My Dog Spot" }
{ "Artist": "No One You Know", "SongTitle": "Somewhere Down The Road", "AlbumTitle": "Somewhat Famous", "Genre": "Country", "CriticRating": 8.4, "Year": 1984 }
{ "Genre": "Country", "AlbumTitle": "Somewhat Famous", "Artist": "No One You Know", "SongTitle": "Somewhere Down The Road" }
{ "Artist": "The Acme Band", "SongTitle": "Still in Love", "AlbumTitle": "The Buck Starts Here", "Price": 2.47, "Genre": "Rock", "PromotionInfo": { "RadioStationsPlaying": { "KHCR", "KQBX", "WTNR", "WJJH" }, "TourDates": { "Seattle": "20150622", "Cleveland": "20150630" }, "Rotation": "Heavy" } }
{ "Genre": "Rock", "AlbumTitle": "The Buck Starts Here", "Artist": "The Acme Band", "SongTitle": "Still In Love" }
{ "Artist": "The Acme Band", "SongTitle": "Look Out, World", "AlbumTitle": "The Buck Starts Here", "Price": 0.99, "Genre": "Rock" }
{ "Genre": "Rock", "AlbumTitle": "The Buck Starts Here", "Artist": "The Acme Band", "SongTitle": "Look Out, World" }

Perhatikan hal berikut tentang indeks GenreAlbumJudul:

  • Setiap indeks adalah milik sebuah tabel, yang disebut tabel dasar untuk indeks. Dalam contoh sebelumnya, Musik adalah tabel dasar untuk indeks GenreAlbumJudul.

  • DynamoDB mengelola indeks secara otomatis. Saat Anda menambahkan, memperbarui, atau menghapus item di tabel dasar, DynamoDB menambahkan, memperbarui, atau menghapus item terkait di indeks mana pun yang termasuk dalam tabel tersebut.

  • Saat Anda membuat indeks, Anda menentukan atribut mana yang akan disalin, atau diproyeksikan, dari tabel dasar ke indeks. Minimal, DynamoDB memproyeksikan atribut kunci dari tabel dasar ke indeks. Hal ini terjadi pada GenreAlbumTitle, dimana hanya atribut kunci dari tabel yang Music diproyeksikan ke dalam indeks.

Anda dapat menanyakan indeks GenreAlbumJudul untuk menemukan semua album dari genre tertentu (misalnya, semua album Rock). Anda juga dapat menanyakan indeks untuk menemukan semua album dalam genre tertentu yang memiliki judul album tertentu (misalnya, semua album Country dengan judul yang dimulai dengan huruf H).

Untuk informasi selengkapnya, lihat Meningkatkan akses data dengan indeks sekunder.

DynamoDB Streams

DynamoDB Streams adalah fitur opsional yang menangkap peristiwa modifikasi data dalam tabel DynamoDB. Data tentang peristiwa ini muncul di aliran hampir dalam waktu nyata, dan sesuai urutan terjadinya peristiwa tersebut.

Setiap acara diwakili oleh catatan aliran. Jika Anda mengaktifkan aliran pada tabel, DynamoDB Streams menulis catatan aliran setiap kali salah satu peristiwa berikut terjadi:

  • Item baru ditambahkan ke tabel: Aliran mengambil gambar keseluruhan item, termasuk semua atributnya.

  • Item diperbarui: Aliran menangkap gambar "sebelum" dan "sesudah" dari setiap atribut yang diubah dalam item.

  • Item dihapus dari tabel: Aliran mengambil gambar keseluruhan item sebelum dihapus.

Setiap rekaman aliran juga berisi nama tabel, stempel waktu peristiwa, dan metadata lainnya. Rekaman streaming memiliki masa pakai 24 jam; setelah itu, mereka secara otomatis dihapus dari aliran.

Anda dapat menggunakan DynamoDB Streams AWS Lambda bersama-sama untuk membuat pemicu —kode yang berjalan secara otomatis setiap kali peristiwa yang diinginkan muncul dalam aliran. Misalnya, pertimbangkan tabel Pelanggan yang berisi informasi pelanggan untuk sebuah perusahaan. Misalkan Anda ingin mengirim email "selamat datang" ke setiap pelanggan baru. Anda dapat mengaktifkan aliran pada tabel itu, dan kemudian mengaitkan aliran tersebut dengan fungsi Lambda. Fungsi Lambda akan berjalan setiap kali rekaman aliran baru muncul, namun hanya memproses item baru yang ditambahkan ke tabel Pelanggan. Untuk item apa pun yang memiliki atribut EmailAddress, fungsi Lambda akan memanggil Amazon Simple Email Service (Amazon SES) untuk mengirim email ke alamat tersebut.

catatan

Dalam contoh ini, pelanggan terakhir, Craig Roe, tidak akan menerima email karena dia tidak memiliki EmailAddress.

Selain pemicu, DynamoDB Streams memungkinkan solusi canggih seperti replikasi data di dalam dan AWS di seluruh Wilayah, tampilan data yang terwujud dalam tabel DynamoDB, analisis data menggunakan tampilan terwujud Kinesis, dan banyak lagi.

Untuk informasi selengkapnya, lihat Tangkapan data perubahan DynamoDB Streams.