2016-03-22 14 views
4

Ben appsMap denilen bir alan (bir anahtar alanı), içeren bir tablo var ve bu şuna benzer: Kimin tüm satırları taramak istediğinizdynamodb - harita terimi içeren öğeleri taramak kilit

appsMap = { "qa-app": "abc", "another-app": "xyz" } 

appsMap "qa-app" anahtarını içerir (değer önemli değil, sadece anahtar). Bunun gibi bir şey denedim ama şu şekilde çalışmıyor:

FilterExpression = '#appsMap.#app <> :v', 
    ExpressionAttributeNames = { 
     "#app": "qa-app", 
     "#appsMap": "appsMap" 
    }, 
    ExpressionAttributeValues = { 
     ":v": { "NULL": True } 
    }, 
    ProjectionExpression = "deviceID" 

Doğru sözdizimi nedir?

Teşekkürler.

cevap

0

Beklentileriniz ve neler olup bittiği hakkında biraz belirsiz olmadığınız için ("Ben böyle bir şey denedim ama ihtiyacım olan şekilde çalışmıyor"). Filtre bir sorgudan çok farklı.

Filtreler sunucuya uygulanır, ancak yalnızca tarama isteği gerçekleştirildikten sonra, tablonuzdaki tüm veriler üzerinde yineleneceği anlamına gelir ve her bir öğeyi döndürmek yerine, her yanıt için bir filtre uygular. Ağ bant genişliği, ancak potansiyel olarak boş tablonun tamamını sayfanızın tamamında döndürür.

Bu, sık sık çalıştırmak zorunda olmasını beklediğiniz bir sorguysa, tabloda bir GSI oluşturmaya bakabilirsiniz. Burada konuyla ilgili bir tartışma vardır

1

: https://forums.aws.amazon.com/thread.jspa?threadID=164470

Sen örnekten bu bölümü eksik olabilir

: ExpressionAttributeValues: { ": Adı": { "S": "Jeff"}}

Ancak, daha önce söylenenleri yankılanmak istedim, tarama, her öğeyi kapsayan ve veritabanınızı ölçeklendirmeyi zorlaştıran pahalı bir işlemdir.

Diğer veritabanlarından farklı olarak, Dynamo ile büyük bir performans sergilemek için çok sayıda kurulum yapmanız gerekir, burada bir öneri: 1) Bunu kök değerine dönüştürün, örneğin root: qaExist, 0 | 1 veya true | false değerinde olabilir. 2) Yeni oluşturulan değer için ikincil dizin oluşturun. 3) Arama parametresi olarak 0 belirterek yeni dizinde sorgu yapın.

Bu, daha sonra buraya girdiğiniz kayıt sayısı ne olursa olsun sisteminizi çok hızlı ve çok ölçeklendirilebilir yapar.