2016-10-01 18 views
6

Bu sorunun birden çok kez kaldırılmış olabileceğini biliyorum, ancak mevcut soruların çoğunu okudum, ancak sorumu yanıtlamaya tam olarak yardımcı olabilecek hiçbir bilgi bulamadım. Firebase ekibinin önerdiği gibi, fan çıkışı tekniği, hızlı verilerin okunmasını sağlamak için önerilen yöntemdir, ancak veri çoğaltma maliyeti ile. Bu sorunun öznel olduğunu ve uygulamaya bağlı olduğunu biliyorum, ancak maliyet tasarrufu ($) ve veri okuma açısından en iyi çözüm hangisidir? Birden çocukta Mesaj aynı düğümFirebase Fan çıkışı - en uygun maliyetli yol?

  1. (veri sadece bir kez denilen okumak kaydetmek ama gereksiz var, bu yüzden daha Firebase depolama tüketmek) düğüme
  2. Mesaj tek düğüm ve diğer referans (görüntü Firebase Database - the "Fan Out" technique bakınız) onun anahtar ile (yedekli değil ve daha az Firbase depolama tüketmek, ama iki kez okumak gerekir - anahtarı almak ve anahtar için düğüm olsun) Ben olmayan bir kar inşa ediyorum, içerik için

(görüntü https://stackoverflow.com/a/38215398/1423345 bakınız) marketplace uygulaması, bu yüzden hem maliyet tasarrufu arasında dengeleme açısından en iyi çözümü uygulamam gerekiyor ($) ve hızlı veri okundu.

Diğer taraftan, iki kez (bant genişliği) daha büyük depolama alanını okuyun. Hangisi daha uygun maliyetli?

cevap

8

İdeal olarak Firebase'de diyerek başlıyorum, sadece gerekli olan şeyleri okuyor veya eşzamanlıyorsunuz. Yani veritabanı sorguları, sorguyu olabildiğince spesifik yapmak için diğer filtreler ile birleştirilir. Eğer bunu yapabilirseniz, o zaman maliyet etkin olacak çok akıllı bir veri yapısı inşa edeceksiniz.

Şimdi gerçek tartışma Fan - Out tekniği ya da sadece düğümler için başvuru sonrası. Kişisel olarak Fan-Out'ı tercih ettiğimde ve aynı zamanda'u başarıyla kullandığım için, bu tekniği referans olarak cevaplayacağım, bu da bana, referans ve tümünü saklamak istemediğimi gösteren sebepleri gösterecektir.

  • İlk ve en önemli şey, son kullanıcı deneyimi ve performanstır. Hangi Büyük Veri Chunk Senkronizasyonu şeklinde gelir. Eh genelde bu yerine büyük mümkün nişan küçük parçalar indirme High Hücre radyo kullanımını azaltmak böylece anlamına gelir, Yüksek Pil, Yüksek bant genişliği boşaltın ve aynı zamanda uygulaması güncellendi tutmak ve 'u mümkün olan en hızlı şekilde senkronize edin.

    Eğer uygulama performansı için bu tür amacı varsa

o zaman açıkçayelpazesi açılımı aşağıdaki nedenlerden dolayı diğer teknikle üzerinde kesin kazananolduğunu görüyoruz.

  1. Sen cep radyo uzun süre kalmama izin vermez, diğer düğüm saklanan bir Büyük Veri Dobiş indirin.
  2. Bir kerede tüm bilgileri indirdiğinizde, uygulamanız diğerlerinden daha iyi performans gösterir. Açıkçası bütünüyle veritabanı indirmeniz gerektiği anlamına gelmez. Tüm bu akıllı denge hakkında her şeyden önce sadece gerekli olanı indirmenizi sağlar.
  3. Bu, daha hızlı okuma ve daha iyi veri yapısı sağlayacak tek teknik bu değil. Aynı derecede önemli olan dizin oluşturma, veri doğrulama ve güvenlik kuralları gibi başka teknikler de vardır. Doğru veri yapısıyla düzgün bir şekilde eşleştirilmesi, size çok daha iyi bir performans sunacaktır. gerçekte kullanıcılara göstermek için bir şey yok nereye diğer düğüm olup gerçek verilerin için sadece bir başvuru var bir durumda
  4. , o zaman bir durumda sonuna kadar olabilir. Kullanıcılarınızın iyi bir bağlantıya sahip olmadıklarını söyleyelim , böylece sadece referansı veren bir okumadan sonra ağ düşer. Bu yüzden ağınız tekrar 'a sahip oluncaya kadar kullanıcılarınız hiçbir şey görmüyor ve bana güvendiğim uygulama için çok kötü bir durum. gördüğünüzde daha hızlı ve uygun maliyetli olarak ÇIKIŞ tekniği - Bir geliştirici olarakAmacınız FAN gitmek için

Yani, seni öneriyoruz bu durumlarda olasılığını azaltmak olmalıdır veri filtreleme, indeksleme ve güvenlik kuralları gibi diğer faktörler de. Evet, yüksek depolama kullanımı için hafif bir fiyatla geliyor. Ancak Mutlu kullanıcılarınız olmadığında daha az depolama alanı ne demektir? Yine de her şey kişisel tercihinize geliyor. Ama deneyimlerimi ve düşüncelerimi paylaştım, doğru karar vermenize yardımcı olacağını umuyorum.

Sana this sahasına girdi ve bu bilgileri size yardım varsa bana bildirin Do hiçbir SQL Veri modelleme

daha derin bir anlayışa sahip olmak teşvik edecek.

+1

Bu harika bir açıklama! Tamamen katılıyorum ve açıkça tüm büyük sosyal ağ uygulamalarının ölçeklendirmek için bu Fan-Out tekniğine bağlı olduğunu düşünüyorum. – Wink

İlgili konular