Uygulamanızda Firebase Realtime Database performansını iyileştirmenin birkaç farklı yolu vardır. Realtime Database performansınızı optimize etmek için neler yapabileceğinizi öğrenmek istiyorsanız farklı Realtime Database izleme araçları aracılığıyla veri toplayın, ardından uygulamanızda veya Realtime Database kullanımınızda buna göre değişiklikler yapın.
Realtime Database performansını izleme
İhtiyacınız olan ayrıntı düzeyine bağlı olarak, birkaç farklı araçla Realtime Database performansınız hakkında veri toplayabilirsiniz:
- Üst düzey genel bakış: Dizine eklenmemiş sorguların listesi ve okuma/yazma işlemlerine gerçek zamanlı genel bakış için profiler aracını kullanın.
- Faturalandırılan kullanım tahmini: Faturalandırılan kullanımınızı ve üst düzey performans metriklerinizi görmek için Firebase konsolunda bulunan kullanım metriklerini kullanın.
- Ayrıntılı inceleme: Veritabanınızın zaman içindeki performansını daha ayrıntılı bir şekilde incelemek için Cloud Monitoring kullanın.
Metriğe göre performansı artırma
Verileri topladıktan sonra, iyileştirmek istediğiniz performans alanına göre aşağıdaki en iyi uygulamaları ve stratejileri inceleyin.
| Performans iyileştirme stratejilerine genel bakış | ||
|---|---|---|
| Metrik | Açıklama | En iyi uygulamalar |
| Yük/Kullanım | Veritabanınızın kapasitesinin ne kadarının herhangi bir zamanda istekleri işlemek için kullanıldığını optimize edin (bu, **Yük** veya **io/database_load** metriklerine yansıtılır). |
Veri yapınızı optimize edin Verileri veritabanları arasında parçalara ayırın Dinleyici verimliliğini artırın Sorgu tabanlı kurallarla indirme işlemlerini sınırlayın Bağlantıları optimize edin |
| Etkin bağlantı sayısı | 200.000 bağlantı sınırının altında kalmak için veritabanınıza yapılan eşzamanlı, etkin bağlantı sayısını dengeleyin. |
Verileri veritabanları arasında parçalara ayırma Yeni bağlantıları azaltma |
| Giden trafik bant genişliği | Veritabanınızdan yapılan indirme işlemleri istediğinizden daha yüksek görünüyorsa okuma işlemlerinizin verimliliğini artırabilir ve şifreleme ek yükünü azaltabilirsiniz. |
Bağlantıları optimize etme Veri yapınızı optimize etme Sorgu tabanlı kurallarla indirme işlemlerini sınırlama SSL oturumlarını yeniden kullanma Dinleyici verimliliğini artırma Verilere erişimi kısıtlama |
| Depolama | Kullanılmayan verileri depolamadığınızdan emin olun veya depolanan verilerinizi diğer veritabanları ve/veya Firebase ürünleri arasında dengeleyerek kotanın altında kalın. |
Kullanılmayan verileri temizleyin Veri yapınızı optimize edin Verileri veritabanları arasında parçalara ayırın Cloud Storage for Firebase kullanın |
Bağlantıları optimize etme
GET ve PUT gibi RESTful istekleri, kısa süreli de olsa bağlantı gerektirir. Bu sık ve kısa süreli bağlantılar, veritabanınıza yapılan gerçek zamanlı ve etkin bağlantılardan çok daha fazla bağlantı maliyeti, veritabanı yükü ve giden trafik bant genişliği oluşturabilir.
Mümkün olduğunda REST API yerine uygulamanızın platformu için yerel SDK'ları kullanın. SDK'lar açık bağlantıları koruyarak SSL şifreleme maliyetlerini ve REST API ile artabilecek veritabanı yükünü azaltır.
REST API kullanıyorsanız bağlantıyı açık tutmak için HTTP keep-alive kullanmayı veya SSL el sıkışmalarından kaynaklanan maliyetleri azaltabilecek sunucu tarafından gönderilen etkinlikleri kullanmayı düşünebilirsiniz.
Verileri birden fazla veritabanına bölme
Verilerinizi birden fazla Realtime Database örneğine bölmek (veritabanı parçalama olarak da bilinir) üç avantaj sağlar:
- Uygulamanızda izin verilen toplam eşzamanlı etkin bağlantı sayısını artırmak için bağlantıları veritabanı örneklerine bölün.
- Veritabanı örnekleri arasında yük dengeleme yapma
- Yalnızca ayrı veri kümelerine erişmesi gereken bağımsız kullanıcı gruplarınız varsa daha yüksek işleme kapasitesi ve daha düşük gecikme süresi için farklı veritabanı örnekleri kullanın.
Blaze fiyatlandırma planını kullanıyorsanız aynı Firebase projesinde birden fazla veritabanı örneği oluşturabilir ve veritabanı örnekleri arasında ortak bir kullanıcı kimlik doğrulama yönteminden yararlanabilirsiniz.
Verileri parçalama işleminin nasıl ve ne zaman yapılacağı hakkında daha fazla bilgi edinin.
Verimli veri yapıları oluşturma
Realtime Database, verileri yolun yanı sıra yolun alt düğümlerinden de aldığı için veri yapınızı mümkün olduğunca düz tutmanız mantıklı olur. Bu sayede, istemcilere gereksiz veriler indirmeden yalnızca ihtiyacınız olan verileri alabilirsiniz.
Özellikle verilerinizi yapılandırırken yazma ve silme işlemlerini göz önünde bulundurun. Örneğin, binlerce yaprağı olan yolları silmek pahalı olabilir. Bunları birden fazla alt ağaç ve düğüm başına daha az yaprak içeren yollara bölmek, silme işlemlerini hızlandırabilir.
Ayrıca her yazma işlemi, toplam veritabanı kullanımınızın% 0,1'ini kaplayabilir.
Verilerinizi, SDK'lardaki update() yöntemleri veya RESTful PATCH istekleri aracılığıyla çok yollu güncellemeler olarak yazma işlemlerini tek bir işlemde toplu olarak yapmanıza olanak tanıyacak şekilde yapılandırın.
Veri yapınızı optimize etmek ve performansı artırmak için veri yapılarıyla ilgili en iyi uygulamaları izleyin.
Yetkisiz erişimi önleyin
Realtime Database Security Rules ile veritabanınızda yetkisiz işlemleri önleyin. Örneğin, kuralları kullanarak kötü amaçlı bir kullanıcının veritabanınızın tamamını tekrar tekrar indirmesini engelleyebilirsiniz.
Firebase Realtime Database kurallarını kullanma hakkında daha fazla bilgi edinin.
İndirme işlemlerini sınırlamak için sorguya dayalı kuralları kullanma
Realtime Database Security Rules, veritabanınızdaki verilere erişimi kısıtlar ancak okuma işlemleriyle döndürülen verilerde sınır olarak da kullanılabilir. query.limitToFirst gibi query. ifadeleriyle tanımlanan sorgu tabanlı kuralları kullandığınızda sorgular yalnızca kuralın sınırladığı verileri alır.
Örneğin, aşağıdaki kural, okuma erişimini önceliğe göre sıralanmış bir sorgunun yalnızca ilk 1.000 sonucuyla sınırlandırır:
messages: {
".read": "query.orderByKey &&
query.limitToFirst <= 1000"
}
// Example query:
db.ref("messages").limitToFirst(1000)
.orderByKey("value")
Realtime Database Security Rules hakkında daha fazla bilgi edinin.
Dizin sorguları
Verilerinizi dizine eklemek, uygulamanızın çalıştırdığı her sorgu için kullandığınız toplam bant genişliğini azaltır.
SSL oturumlarını yeniden kullanma
TLS oturum biletleri düzenleyerek devam ettirilen bağlantılarda SSL şifreleme ek yük maliyetlerini azaltın. Bu, özellikle veritabanına sık ve güvenli bağlantılar yapmanız gerekiyorsa faydalıdır.
Dinleyici verimliliğini artırma
Senkronize ettikleri veri miktarını sınırlamak için dinleyicilerinizi yolda mümkün olduğunca aşağıya yerleştirin. Dinleyicileriniz, almalarını istediğiniz verilere yakın olmalıdır. Veritabanı kökünü dinlemeyin. Bu, tüm veritabanınızın indirilmesine neden olur.
Dinleme işlemlerinizin döndürdüğü verileri sınırlamak için sorgular ekleyin ve yalnızca verilerdeki güncellemeleri indiren dinleyiciler kullanın (ör. once() yerine on()). .once(), gerçekten veri güncellemesi gerektirmeyen işlemler için kullanılmalıdır.
Ayrıca, en iyi performans için mümkün olduğunda sorgularınızı orderByKey() kullanarak sıralayın. orderByChild() ile sıralama 6-8 kat daha yavaş olabilir ve orderByValue() ile sıralama, kalıcılık katmanından tüm konumun okunmasını gerektirdiğinden büyük veri kümeleri için çok yavaş olabilir.
Ayrıca dinleyicileri dinamik olarak eklediğinizden ve artık gerekli olmadıklarında kaldırdığınızdan emin olun.
Kullanılmayan verileri temizleme
Veritabanınızdaki kullanılmayan veya yinelenen verileri düzenli olarak kaldırın. Verilerinizi manuel olarak incelemek için yedekleme yapabilir veya verilerinizi düzenli olarak bir Google Cloud Storage paketine yedekleyebilirsiniz. Ayrıca, depolanan verileri Cloud Storage for Firebase üzerinden barındırmayı da düşünebilirsiniz.
Güncelleyebileceğiniz ölçeklenebilir kodlar yayınlama
IoT cihazlarına yerleşik uygulamalar, kolayca güncelleyebileceğiniz ölçeklenebilir kodlar içermelidir. Kullanım alanlarını kapsamlı bir şekilde test ettiğinizden, kullanıcı tabanınızı katlanarak büyütebileceğiniz senaryoları hesaba kattığınızdan ve kodunuzda güncelleme yapma özelliğini eklediğinizden emin olun. Örneğin, verilerinizi parçalamaya karar verirseniz ileride yapmanız gerekebilecek büyük değişiklikleri dikkatlice değerlendirin.