Google App Engine'deki polimorfların normal Bigtable modellerine göre performans sonuçları nelerdir?


12

Düzenli Google App Engine kullanımında, bir polimodelde veya normal "Bigtable" modelinde en iyi performansı veren nedir?

Polimodel, etkin bir şekilde, üst tabloda "sınıf" adı verilen ve kalıtım izlemeyi sağlayan bir sütun oluşturur. Üst sınıftan devralınan normal bir Bigtable, üst öğeyi sorgulama ve tüm alt tür sınıfların tüm alt öğelerini bulma yeteneği olmadan yeni ve ayrı bir veri yapısı oluşturur.

Yanıtlar:


3

Muhtemelen bir performans farkı var, ama muhtemelen oldukça küçük.

Bulduğum şey (tümü Python için Google Dokümanlar'a dayanarak ).

  1. BigTable, PolyModel bilgilerini yerel olarak desteklemez. Bunun yerine, bir 'sınıf' özelliği kullanılarak uygulanır. Dolayısıyla, örneğin bir temel sınıf bulmak için arama yapmaya çalıştığınızda, bu 'class' özelliğinde arama yapacaksınız.

  2. PolyModel sınıfını kullanan tüm sorgularda, verilen sınıfa göre filtreleyen ('class' özelliğini kullanarak) fazladan bir filtre uygulanır.

  3. PolyModel sınıfı için oluşturulan tüm dizinler, ekstra 'sınıf' sütununu dikkate almalıdır.

Esasen, PolyModel sınıfı 'class' özelliğine tek başına bakar, sorgulara ekler ve diğer sorguları kullanır. Bunun dışında standart BigTable kullanımı ile aynı şekilde çalışır.

Yani, fark gerçekten sadece bir ekstra sütun eklemek ve korumaktır.

Performans farkı var mı? Evet, muhtemelen öyle. Herhangi bir veritabanı sistemine eklediğiniz her sütunun performans etkisi olacaktır. Ancak, önemli mi? Muhtemelen değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.