Filtreler ve sorgu kalıpları

Her tablo sekmesi bir filtre taşır: DynoTable'ın bir DynamoDB isteğine dönüştürdüğü önerme durumu. Parçaların query ile scan arasında nasıl eşlendiğini öğrenmek, uygulamayı hızlı ve faturanızı küçük kılan şeyin çoğudur.

Bu sayfa Görsel sekme modunu kapsar. SQL tarzı sorguları doğrudan yazmak için PartiQL'e geçin; birleştirmeler ve toplama işlemleri için bir Workbench açın.

Filtre satırı

Görsel mod tek bir yatay pill satırı gösterir:

[Index] [hashKey = value] [rangeKey op value] [+ filter] | [Clear] [Query/Scan]
  • Index pill'i — üzerinden okuduğunuz sorgu kalıbı.
  • Anahtar pill'leri — o kalıbın partition (hash) anahtarı ve varsa sort (range) anahtarı.
  • Filtre pill'leri — ek anahtar dışı koşullar (scan filtreleri).
  • Eylem düğmesi, ne ayarladığınıza bağlı olarak Query veya Scan okur ve sonuçlar akmaya başladığında Load more hâline gelir.

Bir değer ayarlayın ve DynoTable otomatik olarak çalıştırır; bir pill'i temizlemek veya düzenlemek, filtre tekrar geçerli olur olmaz yeniden çalışır.

Görsel filtre satırı: index seçici, anahtar pill'leri, eklenmiş bir scan filtresi ve çalıştır düğmesi.
Görsel filtre satırı: index seçici, anahtar pill'leri, eklenmiş bir scan filtresi ve çalıştır düğmesi.

Sorgu kalıpları

Bir sorgu kalıbı, üzerinden okuduğunuz index'tir:

  • PRIMARY — tablonun kendi / .
  • Adlandırılmış bir veya — kendi anahtar şeması.

Seçilen kalıp, hangi anahtarlara göre filtreleyebileceğinizi belirler. Kalıpları index pill'inden değiştirin; anahtar pill'leri o kalıbın partition ve sort anahtarına güncellenir.

Query ile Scan

Maliyet ve hız açısından önemli olan ayrım budur:

  • Bir filtresi ayarlayın ve DynoTable hedefli bir gönderir — yalnızca eşleşen partition'ı okur. Ucuz ve hızlı.
  • Bunsuz, tüm tabloyu (veya index'i) sayfa sayfa okuyan bir 'e geri döner. Eylem düğmesi bunu açık kılmak için Scan okur.

Anahtar filtreleri

Partition-key pill'i bir değer alır; ayarlandığı anda eylem Query olur. Sort-key pill'i bunun üzerine bir karşılaştırma ekler:

  • =, <, <=, >, >= — sıralı karşılaştırmalar (sayılar ve string'lerde sözlüksel).
  • begins_with — string'lerde veya binary'de önek eşleşmesi.
  • between — kapsayıcı bir aralık; pill ikinci bir değer alanı büyütür.

String tipli anahtarlar otomatik tamamlama sunar: DynoTable bir tabloyu arka planda indeksledikçe, daha önce gördüğünüz gerçek değerleri önerir. Yararlı önerisi olmayan anahtarlar (örneğin rastgele UUID'ler) düz bir girişe geri döner.

Scan filtreleri

+ filter pill'i, anahtar dışı bir koşul ekler — yalnızca anahtarlar değil, herhangi bir öznitelik. Her filtre bir sütun, bir operatör ve bir değerdir:

  • Karşılaştırmalar: =, , <, <=, >, >=, between.
  • Üyelik: in — bir listedeki herhangi bir değerle eşleşir (string'ler veya sayılar).
  • String / binary: begins_with, contains.
  • Varlık: exists, not exists.
  • Tür: type equals / type not equals (DynamoDB tür koduna karşı — S, N, BOOL, …), artı koleksiyon türleri için bir size ailesi.

Sunulan operatörler özniteliğin türüne uyum sağlar — sıralama karşılaştırmaları sayılar için, begins_with string'ler için görünür. Scan filtreleri, Query veya Scan öğeleri okuduktan sonra uygulanır, böylece sonucu daraltır ama bir Scan'i ucuzlatmaz. Okumayı kesmek için bir anahtar filtresi kullanın; geri geleni arıtmak için scan filtrelerini kullanın.

Single-table tasarım: composite anahtarlar

Single-table tasarımlar, birkaç varlık türünü bir anahtar öneki ardında tek bir tabloya paketler — USER#123, ORDER#456, TENANT#acme. DynoTable bunları kendi başına tanır, kurulacak hiçbir şey olmadan:

  • Anahtarlar yerinde çözülür. Bir composite değer — #, | veya ~ ile geri kalanına bağlanan büyük harfli bir önek — her ızgarada etiketli parçaları olarak görüntülenir: tablo, PartiQL sonuçları ve Workbench. Yalnızca bu karakterlerden birini içeren sıradan değerler (#FF5733 gibi bir hex renk, boru ile ayrılmış bir liste) tam olarak oldukları gibi bırakılır.
  • Tek tıkla bir varlığa filtreleyin. Bir satıra sağ tıklayın ve Filter to USER# seçeneğini seçin — önek, doğrudan o satırın anahtarından okunur. DynoTable, anahtara gerçek bir begins_with'i sıradan bir filtre pill'i olarak uygular; bunu olağan şekilde ('siyle veya Clear ile) temizlersiniz. Bir satırın partition ve sort anahtarlarının ikisi de önekliyse, her biri için bir seçenek alırsınız.

Hiçbir diyalog, hiçbir yapılandırma ve kaydedilen hiçbir şey yok — önünüzdeki anahtarlardan canlı olarak türetilir.

Aşırı yüklenmiş bir tablo üzerindeki sağ tık satır menüsü — etiketli segmentlere çözülmüş anahtarların üzerinde USER# olarak filtrele ve POST# olarak filtrele facet'leri.
Aşırı yüklenmiş bir tablo üzerindeki sağ tık satır menüsü — etiketli segmentlere çözülmüş anahtarların üzerinde USER# olarak filtrele ve POST# olarak filtrele facet'leri.

Sıralama ve sayfalama

Sort-key pill'i, DynamoDB'nin ScanIndexForward'ına eşlenen bir sıralama düzeni geçişi (artan / azalan) taşır. Sonuçlar her seferinde bir sayfa akar — Load more sonraki sayfayı getirir ve sayfa boyutunu değiştirmek ilk sayfadan yeniden yükler.

Sona kadar çalıştır

Varsayılan olarak bir Query veya Scan, büyük bir tablonun hepsini birden yüklememesi için birkaç sayfadan sonra duraklar — eylem düğmesi sonraki sayfayı getirmek için Load more gösterir. Her şeyi tek seferde çekmeyi tercih ettiğinizde, çalıştırma modunu değiştirin:

  • Eylem düğmesinin yanındaki chevron'a tıklayın ve Run to end seçeneğini seçin. Birincil düğme Scan all / Query all / Run all olarak yeniden etiketlenir — sayfa bütçesinde durakladığınızda dahil, ki orada tıklamak sona kadar boşaltır.
  • O yeniden etiketlenmiş düğmeye tıklayın ve DynoTable, tüm tablo (veya index) okunana kadar sayfa getirmeye devam eder. Seçim, oturum boyunca sekme başına hatırlanır; geri geçmek için Paged seçin. Bir mod seçmek kendi başına asla bir çalıştırma başlatmaz — yalnızca düğmeyi yeniden etiketler, böylece ne zaman başlatacağınıza siz karar verirsiniz.

Bir büyük tabloda, Run to end'i kurmak önce tablonun yaklaşık boyutunu ve öğe sayısını gösteren bir onay istemi gösterir, böylece tam bir Scan her zaman bir kaza değil, bilinçli bir seçimdir. Devam etmek için onaylayın veya sayfalı kalmak için iptal edin.

Çalıştırma modu bölünmüş düğmesi — Paged ve Run to end ile chevron menüsü; yanında Load more düğmesi.
Çalıştırma modu bölünmüş düğmesi — Paged ve Run to end ile chevron menüsü; yanında Load more düğmesi.

Klavyeden:

  • ⌘↩ mevcut sorguyu çalıştırır — ve sonuçlar sayfa bütçesinde duraklatıldığında, baştan başlamak yerine sonraki sayfaya devam eder.
  • ⌘⇧↩ her zaman tek seferde sona kadar çalıştırır.
  • ⌘. veya Esc, devam eden bir çalıştırmayı herhangi bir anda durdurur.

Güncellendi