DynamoDB tingkat rendah API - Amazon DynamoDB

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

DynamoDB tingkat rendah API

Amazon DynamoDB API tingkat rendah adalah antarmuka tingkat protokol untuk DynamoDB. Pada tingkat ini, setiap permintaan HTTP (S) harus diformat dengan benar dan membawa tanda tangan digital yang valid.

AWS SDKsMembangun API permintaan DynamoDB tingkat rendah atas nama Anda dan memproses tanggapan dari DynamoDB. Ini memungkinkan Anda berfokus pada logika aplikasi Anda, bukan detail tingkat rendah. Namun, Anda masih bisa mendapatkan keuntungan dari pengetahuan dasar tentang cara kerja DynamoDB API tingkat rendah.

Untuk informasi selengkapnya tentang DynamoDB tingkat rendah, API lihat Referensi Amazon DynamoDB. API

catatan

DynamoDB Streams memiliki API level rendahnya sendiri, yang terpisah dari DynamoDB dan didukung penuh oleh file. AWS SDKs

Untuk informasi selengkapnya, lihat Tangkapan data perubahan DynamoDB Streams. Untuk DynamoDB Streams tingkat rendah, lihat Referensi Amazon DynamoDB API Streams. API

APIDynamoDB tingkat rendah JavaScript menggunakan Object Notation JSON () sebagai format protokol kawat. JSONmenyajikan data dalam hierarki sehingga baik nilai data maupun struktur data disampaikan secara bersamaan. Pasangan nama-nilai ditentukan dalam format name:value. Hierarki data ditentukan oleh tanda kurung berisi pasangan nama-nilai.

DynamoDB hanya JSON digunakan sebagai protokol transport, bukan sebagai format penyimpanan. AWS SDKsPenggunaan JSON untuk mengirim data ke DynamoDB, dan DynamoDB merespons dengan. JSON DynamoDB tidak menyimpan data secara terus-menerus dalam format. JSON

catatan

Untuk informasi selengkapnyaJSON, lihat Memperkenalkan JSON di JSON.org situs web.

DynamoDB API tingkat rendah dan AWS SDKs bagaimana menangani permintaan dan tanggapan tingkat protokol.

Format permintaan

DynamoDB API tingkat rendah HTTP menerima permintaan (S) sebagai input. POST AWS SDKsBangun permintaan ini untuk Anda.

Misalkan Anda memiliki tabel bernama Pets, dengan skema kunci yang terdiri dari AnimalType (kunci partisi) dan Name (kunci urutan). Kedua atribut ini berjenis string. Untuk mengambil item dariPets, AWS SDK membangun permintaan berikut.

POST / HTTP/1.1 Host: dynamodb.<region>.<domain>; Accept-Encoding: identity Content-Length: <PayloadSizeBytes> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.0 Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature> X-Amz-Date: <Date> X-Amz-Target: DynamoDB_20120810.GetItem { "TableName": "Pets", "Key": { "AnimalType": {"S": "Dog"}, "Name": {"S": "Fido"} } }

Perhatikan hal berikut tentang permintaan ini:

  • Header Authorization berisi informasi yang diperlukan untuk DynamoDB guna mengautentikasi permintaan. Untuk informasi selengkapnya, lihat AWS APIPermintaan penandatanganan dan proses penandatanganan Versi Tanda Tangan 4 di Referensi Umum Amazon Web Services.

  • Header X-Amz-Target berisi nama operasi DynamoDB: GetItem. (Ini juga disertai dengan API versi tingkat rendah, dalam hal ini20120810.)

  • Muatan (badan) permintaan berisi parameter untuk operasi, dalam JSON format. Untuk operasi GetItem, parameternya adalah TableName dan Key.

Format respons

Setelah menerima permintaan, DynamoDB memprosesnya dan mengembalikan respons. Untuk permintaan yang ditunjukkan sebelumnya, payload respons HTTP (S) berisi hasil dari operasi, seperti yang ditunjukkan pada contoh berikut.

HTTP/1.1 200 OK x-amzn-RequestId: <RequestId> x-amz-crc32: <Checksum> Content-Type: application/x-amz-json-1.0 Content-Length: <PayloadSizeBytes> Date: <Date> { "Item": { "Age": {"N": "8"}, "Colors": { "L": [ {"S": "White"}, {"S": "Brown"}, {"S": "Black"} ] }, "Name": {"S": "Fido"}, "Vaccinations": { "M": { "Rabies": { "L": [ {"S": "2009-03-17"}, {"S": "2011-09-21"}, {"S": "2014-07-08"} ] }, "Distemper": {"S": "2015-10-13"} } }, "Breed": {"S": "Beagle"}, "AnimalType": {"S": "Dog"} } }

Pada titik ini, AWS SDK mengembalikan data respons ke aplikasi Anda untuk diproses lebih lanjut.

catatan

Jika DynamoDB tidak dapat memproses permintaan, ia mengembalikan kode HTTP kesalahan dan pesan. Ini AWS SDK menyebarkan ini ke aplikasi Anda dalam bentuk pengecualian. Untuk informasi selengkapnya, lihat Penanganan kesalahan dengan DynamoDB.

Deskriptor jenis data

Protokol API DynamoDB tingkat rendah mengharuskan setiap atribut disertai dengan deskriptor tipe data. Deskriptor jenis data adalah token yang memberi tahu DynamoDB cara menafsirkan setiap atribut.

Contoh di Format permintaan dan Format respons menunjukkan contoh bagaimana deskriptor jenis data digunakan. Permintaan GetItem menentukan S untuk atribut skema kunci Pets (AnimalType dan Name), yang berjenis string. Respons GetItem berisi item Pets dengan atribut jenis string (S), number (N), map (M), dan list (L).

Berikut ini adalah daftar lengkap deskriptor jenis data DynamoDB:

  • S – String

  • N – Nomor

  • B – Biner

  • BOOL – Boolean

  • NULL – Null

  • M – Peta

  • L – Daftar

  • SS – Set String

  • NS – Set Nomor

  • BS – Set Biner

catatan

Untuk deskripsi mendetail tentang jenis data DynamoDB, lihat Jenis Data.

Data numerik

Bahasa pemrograman yang berbeda menawarkan tingkat dukungan yang berbeda untukJSON. Dalam beberapa kasus, Anda mungkin memutuskan untuk menggunakan pustaka pihak ketiga untuk memvalidasi dan mengurai dokumenJSON.

Beberapa pustaka pihak ketiga dibangun berdasarkan jenis JSON angka, menyediakan tipenya sendiri sepertiint,long, ataudouble. Namun, jenis data angka asli di DynamoDB tidak memetakan persis untuk jenis data lainnya, sehingga perbedaan jenis ini dapat menyebabkan konflik. Selain itu, banyak JSON pustaka tidak menangani nilai numerik presisi tetap, dan mereka secara otomatis menyimpulkan tipe data ganda untuk urutan digit yang berisi titik desimal.

Untuk mengatasi masalah ini, DynamoDB menyediakan jenis numerik tunggal tanpa kehilangan data. Untuk menghindari konversi implisit yang tidak diinginkan ke nilai ganda, DynamoDB menggunakan string untuk transfer data nilai numerik. Pendekatan ini memberikan fleksibilitas untuk memperbarui nilai atribut sekaligus mempertahankan semantik pengurutan yang tepat, seperti menempatkan nilai "01", "2", dan "03" dalam urutan yang tepat.

Jika presisi angka penting untuk aplikasi, Anda harus mengonversi nilai numerik untuk string tersebut sebelum meneruskannya ke DynamoDB.

Data biner

DynamoDB mendukung atribut binari. Namun, JSON tidak secara native mendukung pengkodean data biner. Untuk mengirim data biner dalam permintaan, Anda perlu untuk mengodekannya dalam format base64. Setelah menerima permintaan, DynamoDB mengodekan data base64 kembali ke biner.

Skema pengkodean base64 yang digunakan oleh DynamoDB dijelaskan di RFC4648 di situs web Internet Engineering Task Force (). IETF