Kali ini, Anda mempelajari beberapa contoh sederhana memasukkan dan mengambil data dengan DynamoDB. Buat tabel DynamoDB Anda dengan API CreateTable, lalu masukkan beberapa item dengan panggilan API BatchWriteItem. Akhirnya, Anda mengambil item individual dengan panggilan API GetItem. Sebelum Anda mempelajari contoh-contoh ini, kita akan membahas model data yang akan digunakan dalam contoh aplikasi toko buku online Anda.

Pada modul berikutnya, Anda mempelajari cara mengambil beberapa item sekaligus dengan menggunakan panggilan API Query dan cara mengaktifkan pola query lainnya dengan menggunakan indeks sekunder. Lihat juga cara memperbarui item yang ada di tabel Anda.

Waktu untuk Menyelesaikan Modul: 15 Menit


Konsep DynamoDB berikut ini memainkan peran penting dalam modul ini:

  • Table: Sekumpulan arsip data DynamoDB.
  • Item: Satu arsip data pada tabel DynamoDB. Ini hampir sama dengan baris dalam database relasional.
  • Attribute: Satu elemen data pada suatu item. Ini hampir sama dengan kolom dalam database relasional. Namun, tidak seperti kolom dalam database relasional, atribut tidak perlu ditentukan saat pembuatan tabel, selain kunci utama yang dibahas nanti dalam modul ini. Atribut dapat berupa tipe sederhana seperti string, integer, atau Boolean, atau atribut tersebut dapat berupa tipe kompleks seperti daftar atau peta.
  • Primary key: Primary key adalah pengidentifikasi unik untuk satu item dalam tabel DynamoDB. Nama dan tipe primary key harus ditentukan saat pembuatan tabel, dan primary key dengan tipe yang ditentukan harus disertakan dengan setiap item yang ditulis ke tabel. Suatu primary key sederhana terdiri dari satu atribut, dan primary key komposit terdiri dari dua atribut: partition key dan sort key. Contoh, Anda dapat membuat primary key sederhana dengan “UserID” sebagai pengidentifikasi, atau membuat primary key komposit dengan menggabungkan “UserID” dan “Creation_Date” sebagai pengidentifikasi item.

Saat membangun aplikasi, selalulah luangkan waktu untuk mendesain model data yang diperlukan dalam logika aplikasi Anda. Desain model data ini harus mempertimbangkan kebutuhan akses data yang kelak diperlukan dalam aplikasi Anda, baik untuk membaca maupun menulis data.

DynamoDB adalah database nonrelasional. Dengan database non-relasional, Anda tidak perlu menentukan skema penuh di awal saat membuat tabel. Anda hanya perlu menyatakan primary key untuk tabel Anda, yang secara unik mengidentifikasi setiap arsip di tabel Anda. Ini mengurangi biaya awal desain model data Anda karena Anda dapat dengan mudah memodifikasi skema Anda karena berubahnya kebutuhan aplikasi Anda.

Seperti disinggung di bagian “Latar belakang aplikasi” pada bab “Pendahuluan” tutorial ini, aplikasi Anda harus mengambil satu buku menurut judul dan penulisnya. Karena kombinasi judul dan penulis adalah pengidentifikasi unik sebuah buku, Anda dapat menggunakan atribut tersebut sebagai primary key tabel Anda. Aplikasi Anda juga harus menyimpan informasi tentang kategori buku kami, seperti sejarah atau biografi, serta format buku Anda yang tersedia - hardcover, paperback, atau audiobook - yang dipetakan ke nomor item dalam sistem inventaris Anda.

Mempertimbangkan kebutuhan ini, Anda dapat menggunakan skema berikut untuk tabel Anda:

  • Title (string): Judul buku
  • Author (string): Penulis buku
  • Category (string) Kategori buku, seperti Sejarah, Biografi, dan Sci-Fi
  • Formats (peta): Berbagai format yang Anda tawarkan (seperti hardcover, paperback, dan audiobook) berikut nomor-nomor itemnya di sistem inventaris Anda

Dengan langkah-langkah berikut, buatlah tabel dengan menentukan primary key komposit (Author dan Title) tabel Anda. Lalu, muat beberapa item ke dalam tabel Anda dan baca masing-masing item dari tabel.


  • Langkah 1. Membuat tabel DynamoDB

    Direktori yang Anda unduh sudah termasuk skrip create_table.py yang akan membuat tabel Books dengan menggunakan API CreateTable . Anda dapat menjalankan skrip ini dengan memasukkan perintah berikut di terminal AWS Cloud9.

    $ python create_table.py

    Jika Anda membuka skrip create_table.py dengan editor AWS Cloud9, Anda akan melihat:

    • Script menentukan primary key komposit tabel Anda dengan argumen KeySchema dalam panggilan API CreateTable. Tabel Anda menggunakan Author sebagai hash key dan Title sebagai range key.
    • Script menentukan throughput yang disediakan untuk tabel dengan mendefinisikan unit kapasitas baca maupun unit kapasitas tulis. Dengan DynamoDB, Anda dapat mengatur kapasitas baca dan tulis secara terpisah, sehingga konfigurasi dapat diselaraskan untuk memenuhi kebutuhan aplikasi Anda tanpa harus membayar terlalu mahal.
  • Langkah 2. Muat item ke tabel

    Di langkah ini, Anda memuat beberapa buku ke dalam tabel. Di terminal AWS Cloud9, jalankan perintah berikut.
    $ python insert_items.py
    Perintah ini menjalankan skrip berikut.
    import boto3
    
    dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
    table = dynamodb.Table('Books')
    
    with table.batch_writer() as batch:
        batch.put_item(Item={"Author": "John Grisham", "Title": "The Rainmaker",
            "Category": "Suspense", "Formats": { "Hardcover": "J4SUKVGU", "Paperback": "D7YF4FCX" } })
        batch.put_item(Item={"Author": "John Grisham", "Title": "The Firm",
            "Category": "Suspense", "Formats": { "Hardcover": "Q7QWE3U2",
            "Paperback": "ZVZAYY4F", "Audiobook": "DJ9KS9NM" } })
        batch.put_item(Item={"Author": "James Patterson", "Title": "Along Came a Spider",
            "Category": "Suspense", "Formats": { "Hardcover": "C9NR6RJ7",
            "Paperback": "37JVGDZG", "Audiobook": "6348WX3U" } })
        batch.put_item(Item={"Author": "Dr. Seuss", "Title": "Green Eggs and Ham",
            "Category": "Children", "Formats": { "Hardcover": "GVJZQ7JK",
            "Paperback": "A4TFUR98", "Audiobook": "XWMGHW96" } })
        batch.put_item(Item={"Author": "William Shakespeare", "Title": "Hamlet",
            "Category": "Drama", "Formats": { "Hardcover": "GVJZQ7JK",
            "Paperback": "A4TFUR98", "Audiobook": "XWMGHW96" } })
    

    Seperti ditunjukkan skrip sebelumnya, Anda gunakan API BatchWriteItem untuk memuat lima buku ke tabel. Tiap buku mencakup atribut Author dan Title untuk primary key, serta atribut Category dan Formats sebagai informasi tambahan tentang buku tersebut. Tiap atribut memiliki type, yang bisa berupa type sederhana seperti string untuk atribut Category , atau type kompleks seperti peta untuk atribut Formats .

    Perlu diketahui bahwa Anda memasukkan data melalui API HTTP dengan menggunakan perpustakaan klien Boto 3. Semua permintaan akses data dan manipulasi dilakukan melalui permintaan HTTP, alih-alih menjaga koneksi tetap ke database seperti yang biasa terjadi pada sistem manajemen database relasional.

  • Langkah 3. Memanggil item dari tabel

    Anda dapat mengambil satu buku dengan menggunakan permintaan API GetItem dan menentukan primary key dari item yang Anda inginkan.

    Di terminal AWS Cloud9, jalankan perintah berikut.

    $ python get_item.py

    Ini akan menjalankan skrip berikut untuk mengambil satu item, yaitu buku The RainMaker karya John Grisham.

    import boto3
    
    dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
    table = dynamodb.Table('Books')
    
    resp = table.get_item(Key={"Author": "John Grisham", "Title": "The Rainmaker"})
    
    print(resp['Item'])

    Terminal Anda harus mencetak data buku lengkap yang diambil dari tabel.

    $ python get_item.py
    {'Title': 'The Rainmaker', 'Formats': {'Hardcover': 'J4SUKVGU', 'Paperback': 'D7YF4FCX'}, 'Author': 'John Grisham', 'Category': 'Suspense'}

    Karena tiap item dalam tabel diidentifikasi unik oleh primary keynya, maka panggilan API GetItem akan selalu mengembalikan paling banyak satu item dari tabel Anda.


    Pada modul berikutnya, Anda akan belajar cara mengambil beberapa item dari tabel DynamoDB dengan satu panggilan API. Anda juga belajar cara mengaktifkan beberapa pola akses data di tabel Anda dengan menggunakan indeks sekunder.