2012-01-23 24 views
14

Amazon AWS DynamoDB sorusu.DynamoDB sorgusu

RangeKeyCondition ve bu şekilde ComparisonOperators kullanarak herhangi örnekler ARASINDA, IN orada İÇEREN Are. Birleşik bir RangeKey (birleştirilmiş ve sınırlandırılmış) dayalı veri almaya çalışıyorum. Örneğin kitap tablosu için tarih + yazar + anahtar kelimeleri. HashValue'nin bu durumda "kitap" olduğunu varsayın (kitap, dvd, video, bağlantı vb. Olabilir). "Sihirli" anahtar kelimesini veya tüm kitapları "John Doe" yazan tüm kitapları seçmek istiyorum. Örnek bir kayıt/öğe şu şekilde görünecektir:

Hash ------ Menzil ---------------------------- ------------------------------------- öznitelik1 ... attributex

Kitap --- --- 2012/01/20 ~ john doe ~ macera ~ büyü ~ yol ---------------- açıklama ... koşullu operatörü kullanmaya çalışırken bazı şeyler

IN veya CONTAINS, aşağıdaki hatayı alıyorum: object (CFSimpleXML) 20 public '__type' => string 'com.amazon.coral.validate # ValidationException' (uzunluk = 45) public 'message' => string 'Denendi koşullu kısıtlama, değiştirilebilir bir işlem değildir '

Bu ComparisonOperators kullanarak herhangi bir örnek bulunamadı. Herhangi bir yardım büyük takdir edilecektir.

Teşekkürler. ,

A scan operation scans the entire table. You can specify filters to apply to the results to refine the values returned to you, after the complete scan. Amazon DynamoDB puts a 1MB limit on the scan (the limit applies before the results are filtered). [...]

[...] For information about each comparison operator available for scan operations, see the API entry for Scan .

Şimdi

A query operation searches only primary key attribute values and supports a subset of comparison operators on key attribute values to refine the search process. A query returns all of the item data for the matching primary keys (all of each item's attributes) up to 1MB of data per query operation. [...]

[..] For information about each comparison operator available for query operations, see the API entry for Query .

[emphasis mine]

  • Tarama

    • Sorgu su:

  • cevap

    34

    İki arama API'leri arasındaki farkı Query and Scan in Amazon DynamoDB gerçekleştirmek için önemlidir RangeKeyCondition için destekli altküme: Query API 'un KarşılaştırmaYönlendiricisi,CONTAINS ve IN'u içermez; bunlar her ikisi de Tarama API'si içinde kullanılabilir; Her iki API içinde sadece karşılaştırma operatörü BETWEEN mevcuttur.

    Bu sınırlama büyük olasılıkla performans değerlendirmelerinden kaynaklanmaktadır, yani CONTAINS desteklemesi muhtemelen DynamoDB'nin öngörülebilir performans/performans hedefini yenecektir.

    NoSQL çözümleriyle Her zamanki gibi yani buna göre uygulama tasarımını terzilik sizin kullanım örneğini ve en Hedeflediğiniz belirli NoSQL mimarisi hem ele alarak bu sınırlamaları dikkate almanız gerekir.

    İyi şanslar!

    +8

    Teşekkürler Stefen. Kesinlikle haklısın. Maalesef, AWS geliştirici belgelerinde, bu operatörleri de Sorgu için kullanılabilir olarak gösteren bir hata vardı. – user573306