2012-08-07 25 views
5

Yüksek Çoğaltma Veri Deposu'nda (NDB kullanıyorum), tutarlılık nihaidir. Garantili bir tam set elde etmek için, ata soruları kullanılabilir. Ataların sorguları aynı zamanda belirli bir atasının tüm “çocuklarını” nı gereksiz sorgularla elde etmenin harika bir yolunu sunar. Kısacası, ata modelini kullanabilmek GAE'de oldukça faydalıdır.NDB kaydının atası nasıl değiştirilir?

Sahip olduğum problem oldukça basit. Bir iletişim kaydım ve bir mesaj kaydım olduğunu varsayalım. Verilen bir kayıt kaydı, her mesajın atası olarak ele alınmaktadır. Bununla birlikte, aynı kişi için iki kişi oluşturulabilir (kullanıcı hatası, farklı veri noktaları, her neyse). Bu durum, kendileriyle ilgili mesajlar içeren iki kişi kaydı üretir.

İki kaydı birleştirebilmem ve tüm iletileri tek bir yığın haline getirmem gerekiyor. İdeal olarak, atasının çocuklarından birinin atalarını değiştirebilirim.

Bunu yapmayı düşünebilmemin tek yolu, bir eşleme oluşturmak ve kayıtların birleştirilip birleştirilmediğini görmek için uygulamamı denetlemektir. Eğer varsa, bir veya daha fazla ilgili kayıtları bulmak için eşlemelere bakın ve bunlarla ilgili sorgulamalar yapın. Bu derece verimsiz görünüyor. Bu kullanım durumunu ele alarak daha çok "kitap" yolu var mı?

+0

bana göre, veri modelinizin nasıl göründüğüne bağlı olarak değişecektir. 2 kaydın birleştirilmesi gerekip gerekmediğine nasıl karar veriyorsunuz? – aschmid00

+0

İyi soru - bu bir düşünce aşamasında olduğundan, kullanıcı girişini alalım. – Sologoub

+0

Bu nedenle, kullanıcı-vericinin belirli bir alanına bağlı olarak birleştirmek istiyorsanız (mail diyelim) ilk önce veri mağazasını sorgulayın ve o e-postaya sahip bir kaydın zaten var olup olmadığını görün ve oradan devam edin. Eğer uygulama yeniyse ve zaten kayıtlarınız yoksa, id ile sorgulayabilmek için e-postaya dayalı keyname/id ile kayıt oluşturmanızı öneririm. – aschmid00

cevap

9

Bir varlığın atamasını değiştirmenin tek yolu, eski olanı silmektir ve yeni bir anahtarla yeni bir tane oluşturmaktır. Bu atası yolundaki tüm çocuk (ve büyük çocuk, vb.) Varlıklar için yapılmalıdır. Bu mümkün değilse listelenen çözümünüz çalışır.

Bu, bir varlığın atalarının yolu benzersiz anahtarının bir parçası olduğu için gereklidir. Varlıkların ebeveynleri (yani, atalar yolundaki varlıklar) mevcut değildir, bu nedenle bir ebeveynin anahtarını değiştirmek, çocukları ebeveynleri olmadan veri deposunda bırakacaktır.

+0

Teşekkürler. Daha verimli bir çözüm olmasını umuyordum, ama bu mükemmel bir anlam ifade ediyor. – Sologoub

İlgili konular