2012-08-28 16 views
5

Oluşturduğum bir Anahtar verildiğinde, mevcut olup olmadığını görmek için veri deposuna vurmak istiyorum, ancak bunu yapmak için en ucuz (zaman) yolu istiyorum. Aradığım şey sadece bir sorgu gibi değil, my_key.get (keys_only = doğru). Böyle bir hayvan var mı? Bana öyle görünmüyor. Eğer değilse, sonra ne olduğumu elde etmenin başka bir yolu var mı?app engine ndb Key.get yalnızca anahtarı geri alıyor?

Teşekkürler.

+0

Minimal özellikleri olan bir projeksiyon almak için yararlı olabilir. Bunun daha hızlı olacağından emin değil. – Jeremy

cevap

6

Hayır, bu işlevsellik mevcut değil. Tüm varlıklar endekslenmediğinden, kısayol yoktur - anahtarın var olup olmadığını sınamanın tek yolu, bunu elde etmeye çalışmaktır ve sonra varlık verisi sizin için kullanılabilir olur (disk işlemleri açısından) Biraz serileştirme maliyeti var, ancak bunun için ödeme yapmıyoruz).

PS. Önceden optimize etmeye çalışmadığınızdan emin misiniz?

+0

Teşekkürler Guido. Sorunuza cevap olarak, erken bir şekilde optimize etmeye çalışmadığımdan emin değilim. Ancak, paralel olarak çok fazla şey yapmak için appstat'ları kullandım ve rpc çağrılarında oldukça iyi bir şekilde kestim. Bu durumda geri çektiğim varlıklar, görünüm için gereksinim duymadığım bir TextProperty'ye sahip, bundan kaçınmak istediğim şey buydu. Tekrar teşekkürler ve ndb olan awesomeness için teşekkürler! – Jay

+2

Mevcut Modeliniz iki farklı nedenden dolayı kullanılıyorsa, her bir amaç için bir tane olmak üzere iki ayrı Modele ayırmayı düşünün. Her biri için aynı anahtar kimliğini bile kullanabilirsiniz. Bu şekilde TextProperty'nin getirdiği gereksiz yükü kaydedersiniz. – Dave