Filter & pola kueri

Setiap tab tabel membawa sebuah filter: state predikat yang diubah DynoTable menjadi sebuah request DynamoDB. Memahami bagaimana setiap bagian dipetakan ke query vs scan adalah sebagian besar dari apa yang membuat aplikasi cepat dan tagihan Anda kecil.

Halaman ini mencakup mode tab Visual. Untuk menulis kueri bergaya SQL secara langsung, alihkan ke PartiQL; untuk join dan agregat, buka sebuah Workbench.

Baris filter

Mode visual menampilkan satu baris horizontal berisi pil:

[Index] [hashKey = value] [rangeKey op value] [+ filter] | [Clear] [Query/Scan]
  • Pil Indexpola kueri yang Anda baca.
  • Pil key — partition (hash) key dan, jika ada, sort (range) key dari pola tersebut.
  • Pil filter — condition non-key tambahan (scan filter).
  • Tombol aksi membaca Query atau Scan tergantung pada apa yang Anda atur, dan berubah menjadi Load more begitu hasil mulai di-stream.

Atur sebuah nilai dan DynoTable mengeksekusi otomatis; membersihkan atau menyunting sebuah pil menjalankan ulang segera setelah filter valid lagi.

Baris filter visual: pemilih indeks, pil key, sebuah scan filter yang ditambahkan, dan tombol run.
Baris filter visual: pemilih indeks, pil key, sebuah scan filter yang ditambahkan, dan tombol run.

Pola kueri

Sebuah pola kueri adalah indeks yang Anda baca:

  • PRIMARY / milik tabel itu sendiri.
  • Sebuah atau bernama — key schema-nya sendiri.

Pola yang dipilih menentukan key mana yang bisa Anda filter. Alihkan pola dari pil indeks; pil key memperbarui ke partition dan sort key pola tersebut.

Query vs scan

Inilah perbedaan yang penting untuk biaya dan kecepatan:

  • Atur sebuah filter dan DynoTable mengeluarkan yang tertarget — ia hanya membaca partition yang cocok. Murah dan cepat.
  • Tanpa itu ia jatuh ke sebuah , yang membaca seluruh tabel (atau indeks) halaman demi halaman. Tombol aksi membaca Scan untuk membuat ini eksplisit.

Key filter

Pil partition-key menerima sebuah nilai; aksi menjadi Query begitu nilainya diatur. Pil sort-key menambahkan sebuah perbandingan di atasnya:

  • =, <, <=, >, >= — perbandingan terurut (angka, dan leksikografis pada string).
  • begins_with — pencocokan prefiks pada string atau biner.
  • between — rentang inklusif; pil menumbuhkan field nilai kedua.

Key bertipe string menawarkan autocomplete: selagi DynoTable mengindeks sebuah tabel di latar belakang, ia menyarankan nilai-nilai nyata yang sudah pernah Anda lihat. Key tanpa saran berguna (UUID acak, misalnya) jatuh ke input biasa.

Scan filter

Pil + filter menambahkan condition non-key — atribut apa pun, bukan hanya key. Setiap filter adalah sebuah kolom, sebuah operator, dan sebuah nilai:

  • Perbandingan: =, , <, <=, >, >=, between.
  • Keanggotaan: in — cocok dengan nilai mana pun dalam sebuah daftar (string atau angka).
  • String / biner: begins_with, contains.
  • Keberadaan: exists, not exists.
  • Tipe: type equals / type not equals (terhadap kode tipe DynamoDB — S, N, BOOL, …), plus keluarga size untuk tipe koleksi.

Operator yang ditawarkan menyesuaikan dengan tipe atribut — perbandingan terurut muncul untuk angka, begins_with untuk string. Scan filter berlaku setelah query atau scan membaca item, jadi mereka mempersempit hasil tetapi tidak membuat sebuah scan lebih murah. Pakai key filter untuk memangkas pembacaan; pakai scan filter untuk memurnikan apa yang kembali.

Single-table design: composite key

Single-table design mengemas beberapa tipe entitas ke dalam satu tabel di balik sebuah prefiks key — USER#123, ORDER#456, TENANT#acme. DynoTable mengenalinya sendiri, tanpa apa pun untuk disiapkan:

  • Key terdekode di tempat. Sebuah nilai komposit — sebuah prefiks huruf besar yang digabung ke sisanya oleh #, |, atau ~ — ditampilkan sebagai bagian-bagiannya yang berlabel di setiap grid: tabel, hasil PartiQL, dan Workbench. Nilai biasa yang sekadar mengandung salah satu karakter tersebut (warna heks seperti #FF5733, sebuah daftar yang dipisahkan pipa) dibiarkan persis seperti adanya.
  • Filter ke sebuah entitas dengan satu klik. Klik-kanan sebuah baris dan pilih Filter to USER# — prefiksnya dibaca langsung dari key baris tersebut. DynoTable menerapkan sebuah begins_with nyata pada key sebagai pil filter biasa, yang Anda bersihkan dengan cara biasa (tombol -nya, atau Clear). Saat partition dan sort key sebuah baris keduanya berprefiks, Anda mendapat satu pilihan untuk masing-masing.

Tidak ada dialog, tidak ada konfigurasi, dan tidak ada yang disimpan — itu diturunkan secara live dari key di hadapan Anda.

Menu baris klik-kanan di atas tabel yang ter-overload — facet Filter ke USER# dan Filter ke POST# di atas key yang terdekode menjadi segmen-segmen berlabel.
Menu baris klik-kanan di atas tabel yang ter-overload — facet Filter ke USER# dan Filter ke POST# di atas key yang terdekode menjadi segmen-segmen berlabel.

Pengurutan dan paging

Pil sort-key membawa sebuah toggle urutan-sortir (menaik / menurun) yang dipetakan ke ScanIndexForward milik DynamoDB. Hasil di-stream satu halaman pada satu waktu — Load more mengambil halaman berikutnya, dan mengubah ukuran halaman memuat ulang dari halaman pertama.

Run to end

Secara default sebuah query atau scan berhenti sejenak setelah beberapa halaman agar tabel besar tidak memuat sekaligus — tombol aksi menampilkan Load more untuk mengambil halaman berikutnya. Ketika Anda lebih suka menarik semuanya dalam satu jalur, alihkan mode jalannya:

  • Klik chevron di samping tombol aksi dan pilih Run to end. Tombol primer berganti label menjadi Scan all / Query all / Run all — termasuk saat Anda berhenti sejenak di batas halaman, di mana mengkliknya menguras sampai habis.
  • Klik tombol yang berganti label itu dan DynoTable terus mengambil halaman sampai seluruh tabel (atau indeks) terbaca. Pilihannya diingat per tab untuk sesi tersebut; pilih Paged untuk beralih kembali. Memilih sebuah mode tak pernah memulai run dengan sendirinya — ia hanya mengganti label tombol, jadi Anda yang menentukan kapan memicunya.

Pada tabel besar, mengaktifkan Run to end pertama-tama menampilkan sebuah prompt konfirmasi dengan perkiraan ukuran dan jumlah item tabel, sehingga full scan selalu menjadi pilihan yang disengaja alih-alih kecelakaan. Konfirmasikan untuk melanjutkan, atau batalkan untuk tetap paged.

Tombol terbelah mode-jalan — menu chevron dengan Paged dan Run to end, di samping tombol Load more.
Tombol terbelah mode-jalan — menu chevron dengan Paged dan Run to end, di samping tombol Load more.

Dari keyboard:

  • ⌘↩ menjalankan query saat ini — dan ketika hasil berhenti sejenak di batas halaman, ia melanjutkan ke halaman berikutnya alih-alih memulai dari awal.
  • ⌘⇧↩ selalu berjalan sampai habis dalam satu langkah.
  • ⌘. atau Esc menghentikan sebuah run yang sedang berjalan kapan saja.

Diperbarui