Projeniz ücretsiz Spark fiyatlandırma planındaysa Realtime Database kullanımınız için faturalandırılmazsınız. 1 GB veri depolama alanı ve aylık 10 GB veri indirme hakkı içeren ücretsiz kullanım elde edersiniz.
Kullandıkça öde Blaze fiyatlandırma planına geçerseniz ücretsiz kullanım (1 GB veri depolama alanı ve aylık 10 GB veri indirme) hakkınız devam eder ve bu miktarın üzerindeki kullanım için faturalandırılırsınız. Projeniz Blaze fiyatlandırma planındayken projeniz için bütçe uyarıları ayarlamanızı öneririz.
Bu sayfanın geri kalanında faturalandırma daha ayrıntılı olarak açıklanmaktadır.
Realtime Database faturalandırmayı nasıl hesaplar?
Firebase, veritabanınızda depoladığınız veriler ve OSI modelinin oturum katmanındaki (5. katman) tüm giden ağ trafiği için faturalandırma yapar. Depolama alanı, günlük olarak değerlendirilen aylık GB başına 5 ABD doları üzerinden faturalandırılır. Faturalandırma, veritabanınızın konumundan etkilenmez. Giden trafik, tüm veritabanı işlemlerinden kaynaklanan bağlantı ve şifreleme ek yükünü ve veritabanı okumaları aracılığıyla indirilen verileri içerir. Hem veritabanı okuma hem de yazma işlemleri, faturanızda bağlantı maliyetlerine yol açabilir. Güvenlik kuralları tarafından reddedilen işlemler de dahil olmak üzere veritabanınıza gelen ve veritabanınızdan çıkan tüm trafik, faturalandırılabilir maliyetlere yol açar.
Faturalandırılan trafiğe dair bazı yaygın örnekler şunlardır:
- İndirilen veriler: İstemciler veritabanınızdan veri aldığında Firebase, indirilen veriler için ücret alır. Bu genellikle bant genişliği maliyetlerinizin büyük bir kısmını oluşturur ancak faturanızdaki tek faktör değildir.
- Protokol ek yükü: Bir oturumun oluşturulması ve sürdürülmesi için sunucu ile istemciler arasında ek trafik gerekir. Bu trafik, temel protokole bağlı olarak şunları içerebilir: Firebase Realtime Database'in anlık protokol ek yükü, WebSocket ek yükü ve HTTP başlığı ek yükü. Her bağlantı kurulduğunda bu ek yük, SSL şifreleme ek yüküyle birlikte bağlantı maliyetlerine katkıda bulunur. Bu, tek bir istek için çok fazla bant genişliği olmasa da yükleriniz küçükse veya sık sık kısa bağlantılar yapıyorsanız faturanızın önemli bir bölümünü oluşturabilir.
- SSL şifreleme ek yükü: Güvenli bağlantılar için gerekli olan SSL şifreleme ek yüküyle ilişkili bir maliyet vardır. Ortalama olarak bu maliyet, ilk el sıkışma için yaklaşık 3,5 KB, giden her iletideki TLS kaydı başlıkları için ise yaklaşık onlarca bayttır. Çoğu uygulama için bu, faturanızın küçük bir yüzdesidir. Ancak bu, belirli durumunuzda çok sayıda SSL el sıkışması gerekiyorsa büyük bir yüzdeye ulaşabilir. Örneğin, TLS oturum biletlerini desteklemeyen cihazlar çok sayıda SSL bağlantı el sıkışması gerektirebilir.
- FirebaseKonsol verileri: Bu, genellikle Realtime Database maliyetlerinin önemli bir bölümünü oluşturmasa da Firebase, Firebase konsolundan okuduğunuz ve yazdığınız veriler için ücret alır.
Faturalandırılan kullanımınızı tahmin etme
Mevcut Realtime Database bağlantılarınızı ve veri kullanımınızı görmek için Firebase konsolundaki Kullanım sekmesini kontrol edin. Mevcut faturalandırma dönemi, son 30 gün veya son 24 saatteki kullanımı kontrol edebilirsiniz.
Firebase, aşağıdaki metriklerle ilgili kullanım istatistiklerini gösterir:
- Bağlantılar: Veritabanınıza yapılan eşzamanlı, şu anda açık olan gerçek zamanlı bağlantıların sayısı. WebSocket, uzun anket ve HTML sunucu tarafından gönderilen etkinlikler gibi anlık bağlantılar bu kapsamdadır. RESTful istekler dahil değildir.
- Depolama: Veritabanınızda ne kadar veri depolanır? Firebase Hosting veya diğer Firebase ürünleri aracılığıyla depolanan veriler bu sınıra dahil değildir.
- İndirilenler: Protokol ve şifreleme ek yükü dahil olmak üzere veritabanınızdan indirilen tüm baytlar.
- Yük: Bu grafik, veritabanınızın ne kadarının kullanıldığını ve istekleri işlediğini gösterir. Belirli bir 1 dakikalık aralıkta. Veritabanınız %100'e yaklaştıkça performans sorunları yaşayabilirsiniz.
Kullanımı optimize etme
Veritabanı kullanımınızı ve bant genişliği maliyetlerinizi optimize etmek için uygulayabileceğiniz birkaç en iyi uygulama vardır.
- Yerel SDK'ları kullanın: Mümkün olduğunda REST API yerine uygulamanızın platformuna karşılık gelen SDK'ları kullanın. SDK'lar açık bağlantıları korur ve genellikle REST API ile artan SSL şifreleme maliyetlerini azaltır.
- Hataları kontrol edin: Bant genişliği maliyetleriniz beklenmedik şekilde yüksekse uygulamanızın başlangıçta amaçladığınızdan daha fazla veri senkronize etmediğini veya daha sık senkronize etmediğini doğrulayın. Sorunları belirlemek için profiler aracını kullanarak okuma işlemlerinizi ölçün ve Android, Objective-C ve Web SDK'larında hata ayıklama günlüklerini etkinleştirin. Her şeyin istediğiniz gibi çalıştığından emin olmak için uygulamanızdaki arka plan ve senkronizasyon işlemlerini kontrol edin.
- Bağlantıları azaltın: Mümkünse bağlantı bant genişliğinizi optimize etmeyi deneyin. Sık yapılan küçük REST istekleri, yerel SDK kullanılarak yapılan tek ve sürekli bağlantıdan daha maliyetli olabilir. REST API'yi kullanıyorsanız SSL el sıkışmalarından kaynaklanan maliyetleri azaltabilecek bir HTTP keep-alive veya sunucu tarafından gönderilen etkinlikler kullanmayı düşünebilirsiniz.
- TLS oturum biletlerini kullanın: TLS oturum biletleri vererek devam ettirilen bağlantılarda SSL şifreleme ek yükü maliyetlerini azaltın. Bu, özellikle veritabanına sık sık güvenli bağlantılar oluşturmanız gerekiyorsa faydalıdır.
- Dizin sorguları: Verilerinizi dizine eklemek sorgular için kullandığınız toplam bant genişliğini azaltır. Bu da maliyetlerinizi düşürme ve veritabanınızın performansını artırma gibi iki avantaj sağlar. Veritabanınızda dizinlenmemiş sorguları bulmak için profil oluşturma aracını kullanın.
- Dinleyicilerinizi optimize edin: Dinleme işlemlerinizin döndürdüğü verileri sınırlamak için sorgular ekleyin ve yalnızca verilerdeki güncellemeleri indiren dinleyicileri kullanın (ör.
once()yerineon()). Ayrıca, dinleyicilerinizi senkronize ettikleri veri miktarını sınırlamak için mümkün olduğunca aşağıya yerleştirin. - Depolama maliyetlerini azaltın: Periyodik temizleme işleri çalıştırın ve veritabanınızdaki tüm yinelenen verileri azaltın.
- Kuralları kullanın: Veritabanınızda maliyetli olabilecek yetkisiz işlemleri önleyin. Örneğin, Firebase Realtime Database Security Rules kullanmak, kötü niyetli 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.
Uygulamanız için en iyi optimizasyon planı, kullanım alanınıza bağlıdır. Bu, en iyi uygulamaların kapsamlı bir listesi olmasa da Slack kanalımızda veya Stack Overflow'da Firebase uzmanlarından daha fazla tavsiye ve ipucu bulabilirsiniz.