Google App Engine'de en etkili çoktan çoğa birleştirme modeli nedir?


9

BigTable tasarım açıkça minik tablolar büyük bir ana bilgisayara denormalization tercih standart ilişkisel modellerin felsefelerin birçok reddeder.

Bunun bir problem olduğu daha geniş alanlardan biri, birçok ila birçok birleştirmenin modellenmesidir.

Bu birleşimleri modellemenin bir yolu, ilk normal formu ihlal etmek ve tüm ilginç verileri bir db.ListProperty () içine koymaktır. Bu bir sorgudan aranabilir olma yeteneğine sahip olsa da, henüz başka bir tablo çekmeye karşı bir liste aramanın performans sonuçlarını araştırmadım.

Birleşimler mümkün olmadığından , RelationshipProperties aracılığıyla tabloları bağlamak mümkündür. Bu nedenle, yeterli çaba ile standart kesişim tablosu (her iki üst tabloya başvuran ortak birincil anahtarlı bir tablo) oluşturulabilir. Çeşitli uygulamaların performans hitlerini araştıran var mı?

-Düzenle-

Belgelerde önerilen Anahtar Listesi gerçekten bunu yapmanın bir yolu olsa da, bunun ve diğer uygulamaların performans ve anomali oranları ile ilgileniyorum. Karşılıklı anahtar listeleri oluşturmada fayda var mı? Tekrarlanan çabalar fiyata değer mi? Bunu yapmanın daha iyi bir yolu var mı?

Yanıtlar:


3

Ayrıca şu anda GAE veri deposuyla çalışıyorum , henüz bu makaleyi kontrol etmelisiniz . Yararlı bir şey bulduysanız, lütfen sorunuzu güncelleyin.

DÜZENLE:

Bulduğum bu bunu kontrol, bugün.


0

GAE deneyimimde, tablo sorgularını az miktarda kullanmalısınız. Bir "birleştirme" tablosu eklemek işleri daha da yavaşlatır. Örneğin, çoktan çoğa ilişkisini paylaşan A ve B tablolarınız varsa ve hem A hem de B'ye RelationshipProperty alanlarıyla bir "birleştirme" tablosu J oluşturursanız, her bulmak istediğinizde J'yi sorgulamanız gerekir. ilişkili kayıtlar.

Anahtar Listesi'ni A veya B'ye (veya gerekirse her ikisine) sahip olmak çok daha hızlı olacaktır, çünkü bu kaydı / varlığı getirdiğinizde bunlar dahil edilecektir. Listede çok fazla anahtarınız olmadığı sürece (yani, varlık çok büyük değil), bu yol.

Uygulamalarımda ndb kullanmaya başladım ve varlıkları alırken anahtarları kullanmanın bazı önemli faydaları var. Varlık önceden önbelleğe alınmışsa, önce bellekten veya memcache'den alır. Dolayısıyla, Anahtar Listelerinizde önemli bir çakışma varsa, getirmeler zaten getirilmiş olan varlıklar için çok daha hızlı olacaktır.

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.