Uygulamanızdaki Firebase Realtime Databaseperformansı iyileştirmenin birkaç farklı yolu vardır. Realtime DatabasePerformansınızı optimize etmek için neler yapabileceğinizi öğrenmek amacıyla farklı Realtime Databaseizleme araçlarıyla veri toplayın, ardından uygulamanızda veya Realtime Databasekullanı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, Realtime Database'ünüzün performansıyla ilgili verileri birkaç farklı araçla toplayabilirsiniz:
- Genel bakış: Dizine eklenmemiş sorguların listesi ve okuma/yazma işlemlerine gerçek zamanlı genel bakış için profil oluşturma aracını kullanın.
- Faturalandırılan kullanım tahmini: Faturalandırılan kullanımınızı ve üst düzey performans metriklerini görmek için Firebase konsolunda bulunan kullanım metriklerini kullanın.
- Ayrıntılı ayrıntılı inceleme: Veritabanının zaman içindeki performansını daha ayrıntılı bir şekilde incelemek için Cloud Monitoring simgesini kullanın.
Metriğe göre performansı iyileştirme
Veri 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 | Belirli bir zamanda isteklerin işlenmesi için veritabanınızın kapasitesinin ne kadarının kullanıldığını optimize edin (bu durum **Yük** veya **io/database_load** metriklerini yansıtır). |
Veri yapınızı optimize edin Verileri veritabanları arasında bölme Dinleyici verimliliğini artırın İndirme işlemlerini sorgu tabanlı kurallarla 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ıların sayısını dengeleyin. |
Verileri veritabanları arasında bölme Yeni bağlantıları azaltma |
Giden bant genişliği | Veritabanınızdan yapılan indirmelerin istediğinizden daha yüksek olduğunu düşünüyorsanız okuma işlemlerinizin verimliliğini artırabilir ve şifreleme ek yükünü azaltabilirsiniz. |
Bağlantıları optimize edin Veri yapınızı optimize edin Sorguya dayalı kurallarla indirmeleri sınırlayın SSL oturumlarını yeniden kullanın Dinleyici verimliliğini artırın Verilere erişimi kısıtlayın |
Depolama | Kullanılmayan veri depolamadığınızdan emin olun veya kotayı aşmamak için depolanan verilerinizi diğer veritabanları ve/veya Firebase ürünleri arasında dengeli bir şekilde dağıtın. |
Kullanılmayan verileri temizleme Veri yapınızı optimize edin Verileri veritabanları arasında bölme Cloud Storage for Firebase'i kullanın |
Bağlantıları optimize etme
GET
ve PUT
gibi RESTful istekler, kısa süreli olsa bile 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 bant genişliği oluşturabilir.
Mümkün olduğunda REST API yerine uygulamanızın platformuna yönelik yerel SDK'ları kullanın. SDK'lar açık bağlantıları sürdürerek REST API ile birlikte ortaya çıkabilecek SSL şifreleme maliyetlerini ve veritabanı yükünü azaltır.
REST API'yi kullanıyorsanız açık bir bağlantıyı korumak için HTTP keep-alive kullanmayı veya SSL el sıkışmalarından kaynaklanan maliyetleri azaltabilecek sunucu tarafından gönderilen etkinlikleri kullanmayı düşünün.
Verileri birden fazla veritabanı arasında bölme
Verilerinizi birden fazla Realtime Database örneğine bölme (veya veritabanı bölme) işleminin üç avantajı vardır:
- Uygulamanızda izin verilen toplam eşzamanlı etkin bağlantı sayısını, bunları veritabanı örnekleri arasında bölerek artırın.
- Veritabanı örnekleri arasında yükü dengeleyebilirsiniz.
- Yalnızca ayrı veri kümelerine erişmesi gereken bağımsız kullanıcı gruplarınız varsa daha yüksek veri akışı 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 nasıl ve ne zaman bölebileceğiniz hakkında daha fazla bilgi edinin.
Verimli veri yapıları oluşturma
Realtime Database, bir yolun yanı sıra yolun alt düğümlerinden de veri aldığından veri yapınızı mümkün olduğunca düz tutmak mantıklıdır. Bu sayede, istemcilere gereksiz verileri indirmeden ihtiyacınız olan verileri seçerek alabilirsiniz.
Özellikle verilerinizi yapılandırırken yazma ve silme işlemlerini göz önünde bulundurun. Örneğin, binlerce yaprağı olan yolların silinmesi pahalı olabilir. Bunları birden fazla alt ağaca 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ı% 0,1 oranında etkileyebilir.
Verilerinizi, SDK'lardaki update()
yöntemleri veya RESTful PATCH
istekleri aracılığıyla çok yollu güncellemeler olarak tek bir işlemde toplu yazmanı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ı uygulayın.
Yetkisiz erişimi engelleme
Realtime Database Security Rules ile veritabanınızda yetkisiz işlemleri önleyin. Örneğin, kuralları kullanmak kötü amaçlı bir kullanıcının veritabanınızın tamamını tekrar tekrar indirdiği bir senaryoyu önleyebilir.
Firebase Realtime Database kurallarını kullanma hakkında daha fazla bilgi edinin.
İndirmeleri sınırlamak için sorgu tabanlı kurallar kullanma
Realtime Database Security Rules, veritabanınızdaki verilere erişimi kısıtlar ancak okuma işlemleri aracılığıyla döndürülen verilerde sınır olarak da kullanılabilir. query.limitToFirst
gibi query.
ifadeleri tarafından tanımlanan sorgu tabanlı kuralları kullandığınızda sorgular yalnızca kuralla sınırlı verileri alır.
Örneğin, aşağıdaki kural, okuma erişimini yalnızca bir sorgunun öncelik sırasına göre sıralanan 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 yayınlayarak devam eden bağlantılardaki SSL şifreleme ek maliyetlerini azaltın. Bu, özellikle veritabanına sık sık güvenli bağlantılar kurmanız gerekiyorsa kullanışlıdır.
Dinleyici verimliliğini artırma
Dinleyicilerinizin senkronize ettikleri veri miktarını sınırlamak için dinleyicilerinizi mümkün olduğunca yolun sonuna yerleştirin. Dinleyicileriniz, almak istedikleriniz verilere yakın olmalıdır. Veritabanı kökünde dinleme yaparsanız veritabanınızın tamamı indirilir.
Dinleme işlemlerinizin döndürdüğü verileri sınırlamak için sorgu ekleyin ve yalnızca verilerdeki güncellemeleri indiren dinleyiciler kullanın (ör. once()
yerine on()
). .once()
değerini, gerçekten veri güncellemesi gerektirmeyen işlemler için kullanın.
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. orderByValue()
ile sıralama ise büyük veri kümeleri için çok yavaş olabilir. Bunun nedeni, kalıcı katmandan konumun tamamının okunması gerekmesidir.
Dinleyicileri dinamik olarak eklediğinizden ve artık gerekli olmadığında kaldırdığınızdan emin olun.
Kullanılmayan verileri temizleme
Veritabanınıza eklediğiniz ancak kullanmadığınız veya yinelenen verileri düzenli aralıklarla kaldırın. Verilerinizi manuel olarak incelemek için yedekleme çalıştırabilir veya düzenli olarak bir Google Cloud Storage paketine yedekleyebilirsiniz. Depolanan verileri Cloud Storage for Firebase üzerinden barındırmayı da düşünebilirsiniz.
Güncelleyebileceğiniz ölçeklenebilir kod gönderin
IoT cihazlarına yerleştirilmiş uygulamalar, kolayca güncelleyebileceğiniz ölçeklenebilir kod içermelidir. Kullanım alanlarını ayrıntılı bir şekilde test ettiğinizden, kullanıcı tabanınızı katlanarak büyütmenizin mümkün olduğu senaryoları hesaba kattığınızdan ve kodunuza güncelleme dağıtma özelliğini eklediğinizden emin olun. Örneğin, verilerinizi bölme kararı alırsanız ileride yapmanız gerekebilecek önemli değişiklikleri dikkatlice değerlendirin.