Tool gratis

DynamoDB Expression Builder

Pilih sebuah operasi, bangun request secara visual, dan salin ekspresi yang benar dan aman dari reserved word — beserta ExpressionAttributeNames dan Values-nya — sebagai AWS SDK v3, CLI, boto3, atau PartiQL.

Bangun request Anda
Kode yang dihasilkan
new QueryCommand({
  "TableName": "MyTable",
  "KeyConditionExpression": "#hashKey = :hashKeyValue AND begins_with(#rangeKey, :rangeKeyValue)",
  "ExpressionAttributeNames": {
    "#hashKey": "pk",
    "#rangeKey": "sk"
  },
  "ExpressionAttributeValues": {
    ":hashKeyValue": {
      "S": "USER#123"
    },
    ":rangeKeyValue": {
      "S": "ORDER#"
    }
  }
})

Mengapa menulis ekspresi DynamoDB secara manual rawan kesalahan

Sebuah request DynamoDB jarang gagal pada bagian yang jelas. Ia gagal karena status adalah reserved word dan membutuhkan alias-#, karena id numerik dikirim sebagai string dan tidak cocok dengan apa pun, atau karena FilterExpression dan ConditionExpression menggunakan ulang placeholder :v0 yang sama. Masing-masing adalah kesalahan kecil yang menghasilkan request yang berjalan tetapi mengembalikan baris yang salah — jenis yang paling sulit di-debug.

Builder ini merakit seluruh request dari model bertipe. Setiap nama atribut diberi alias, setiap nilai membawa tipe DynamoDB eksplisit, dan placeholder key, filter, condition, dan update berada di namespace terpisah, sehingga tabrakan mustahil terjadi secara konstruksi. Output dibangun dari tag tipe, bukan ditebak dari teks Anda — angka tetap menjadi angka, string base64 tetap biner.

Update expression dan conditional write mendapat perlakuan yang sama: counter atomik, if_not_exists, list_append, REMOVE pada indeks list, ADD/DELETE pada set, dan condition optimistic-locking semuanya dirakit menjadi satu UpdateExpression dan ConditionExpression yang benar. Tab PartiQL bersikap jujur — saat sebuah primitif tidak memiliki bentuk PartiQL, ia memberi tahu Anda yang mana alih-alih menghasilkan pernyataan yang diam-diam berperilaku salah.

Memilih antara Query dan Scan terlebih dahulu? Query vs Scan menjelaskan perbedaannya, dan Contoh PartiQL membahas sintaks mirip SQL secara mendalam.

Pertanyaan yang sering diajukan

Apa itu ExpressionAttributeName, dan mengapa ada prefiks # dan :?

Ekspresi DynamoDB tidak dapat mereferensikan nama atribut yang merupakan reserved word (seperti name, status, atau size) secara langsung, dan placeholder nilai menjaga data sebenarnya tetap di luar string ekspresi. Jadi setiap nama atribut diberi alias dengan placeholder-# di ExpressionAttributeNames dan setiap nilai dengan placeholder-: di ExpressionAttributeValues. Builder ini menghasilkan map tersebut untuk Anda, sehingga reserved word tidak pernah merusak request Anda.

Mengapa saya harus memilih tipe (S, N, B…) untuk setiap nilai?

DynamoDB bertipe di tingkat atribut: angka 5 adalah { "N": "5" } dan string "5" adalah { "S": "5" } — nilai berbeda yang cocok dengan Item berbeda. Input teks tidak dapat membedakannya, jadi builder meminta Anda menandai setiap nilai. Output SDK, CLI, boto3, dan PartiQL yang dihasilkan dibangun dari tag tersebut, tidak pernah ditebak dari teksnya, sehingga id numerik tetap menjadi angka dan blob base64 tetap biner.

Bisakah ia membangun update expression dan conditional write?

Ya. Update mencakup SET (termasuk if_not_exists, counter +/- atomik, dan list_append), REMOVE (termasuk indeks list seperti #a[2]), ADD (number atau set), dan DELETE (anggota set) — digabungkan menjadi satu UpdateExpression. Conditional write menambahkan ConditionExpression ke Update, Put, atau Delete untuk optimistic locking (attribute_not_exists, pengecekan versi, dan seterusnya). Condition key dan condition nilai menggunakan namespace placeholder terpisah sehingga tidak pernah bertabrakan.

Mengapa PartiQL kadang “tidak dapat dinyatakan”?

PartiQL mencakup sebagian besar pembacaan dan penulisan, tetapi beberapa primitif DynamoDB tidak memiliki bentuk PartiQL: INSERT bersyarat, aksi update ADD/DELETE bertipe set, dan fungsi seperti size(), list_append, dan if_not_exists. Saat request Anda menggunakan salah satunya, Tab PartiQL memberi tahu Anda dengan tepat fitur mana yang tidak dapat dinyatakan alih-alih menghasilkan pernyataan yang diam-diam melakukan hal yang salah — gunakan output SDK, CLI, atau boto3 untuk itu.

Apakah data saya meninggalkan browser?

Tidak. Builder berjalan sepenuhnya di sisi klien — ia menghasilkan ekspresi dan cuplikan kode di browser Anda dan tidak ada yang Anda ketik dikirim ke server. Fitur “Salin tautan” pada URL menserialisasi request Anda ke dalam tautan itu sendiri sehingga Anda dapat membagikan atau menandainya, tetapi itu tetap di tangan Anda.

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.