Realtime Database faturalandırmasını anlama

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 ayda 10 GB veri indirme hakkı içeren ücretsiz kullanım imkanından yararlanırsınız.

Kullandıkça öde Blaze fiyatlandırma planına geçerseniz ücretsiz kullanım hakkınızı (1 GB veri depolama alanı ve ayda 10 GB veri indirme) korursunuz ve bu miktarı aşan kullanımlarınız için faturalandırılırsınız. Projeniz Blaze fiyatlandırma planındaysa 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ı, her GB için aylık 5 ABD doları olarak faturalandırılır ve günlük olarak değerlendirilir. 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ı okuma işlemleriyle indirilen verileri içerir. Hem veritabanı okuma hem de yazma işlemleri, faturanızda bağlantı maliyetlerine neden olabilir. Güvenlik kuralları tarafından reddedilen işlemler de dahil olmak üzere veritabanınıza gelen ve veritabanınızdan giden 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. Genellikle bant genişliği maliyetlerinizin büyük bir kısmını bu oluşturur ancak faturanızdaki tek faktör bu değildir.
  • Protokol ek yükü: Bir oturum oluşturmak ve sürdürmek için sunucu ile istemciler arasında ek trafik gerekir. Temel protokole bağlı olarak bu trafik şunları içerebilir: Firebase Realtime Database'in gerçek zamanlı protokol ek yükü, WebSocket ek yükü ve HTTP üstbilgisi ek yükü. Her bağlantı kurulduğunda bu ek yük, SSL şifreleme ek yüküyle birleşerek bağlantı maliyetlerini artırır. 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 kuruyorsanız faturanızın önemli bir bölümünü oluşturabilir.
  • SSL şifreleme ek yükü: Güvenli bağlantılar için gereken 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 ve giden her mesajdaki TLS kayıt başlıkları için yaklaşık onlarca bayttır. Çoğu uygulama için bu, faturanızın küçük bir yüzdesidir. Ancak, özel durumunuz çok sayıda SSL el sıkışması gerektiriyorsa bu oran büyük bir yüzdeye ulaşabilir. Örneğin, TLS oturum biletlerini desteklemeyen cihazlar çok sayıda SSL bağlantısı el sıkışması gerektirebilir.
  • Firebase konsolu verileri: Genellikle Realtime Database maliyetlerinin önemli bir kısmı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 sekmesine bakın. Mevcut fatura dönemi, son 30 gün veya son 24 saat içindeki kullanımı kontrol edebilirsiniz.

Firebase, aşağıdaki metrikler için kullanım istatistiklerini gösterir:

  • Bağlantılar: Veritabanınıza aynı anda yapılan, şu anda açık olan, anlık bağlantıların sayısı. Bu, şu gerçek zamanlı bağlantıları içerir: WebSocket, uzun yoklama ve HTML sunucu tarafından gönderilen etkinlikler. RESTful istekleri içermez.
  • Depolama alanı: Veritabanınızda ne kadar veri depolandığı. Firebase Hosting veya diğer Firebase ürünleri aracılığıyla depolanan veriler buna dahil değildir.
  • İndirmeler: 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 1 dakikalık bir aralıkta gösterir. Veritabanınız %100'e yaklaştıkça performans sorunları görebilirsiniz.

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ı koruyarak 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 senkronizasyon yapmadığını doğrulayın. Sorunları tespit etmek 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üğünü 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 etmeye çalışın. Sık yapılan küçük REST istekleri, yerel SDK'yı kullanan tek ve sürekli bir bağlantıdan daha maliyetli olabilir. REST API kullanıyorsanız HTTP bağlantısını canlı tutma veya sunucu tarafından gönderilen etkinlikler kullanabilirsiniz. Bu sayede SSL el sıkışmalarından kaynaklanan maliyetleri azaltabilirsiniz.
  • TLS oturum biletlerini 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.
  • Sorguları dizine ekleme: Verilerinizi dizine eklemek, sorgular için kullandığınız toplam bant genişliğini azaltır. Bu da hem maliyetlerinizi düşürür hem de veritabanınızın performansını artırır. Veritabanınızda dizine eklenmemiş 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 veri güncellemelerini indiren dinleyiciler kullanın (ör. once() yerine on()). Ayrıca, senkronize ettikleri veri miktarını sınırlamak için dinleyicilerinizi yolun mümkün olduğunca aşağısına yerleştirin.
  • Depolama maliyetlerini azaltma: Periyodik temizleme işleri çalıştırın ve veritabanınızdaki yinelenen verileri azaltın.
  • Kuralları kullanın: Veritabanınızda maliyetli olabilecek yetkisiz işlemleri önleyin. Örneğin, Firebase Realtime Database Security Rules kullanarak kötü amaçlı bir kullanıcının veritabanınızın tamamını tekrar tekrar indirmesini önleyebilirsiniz. Firebase Realtime Database kurallarını kullanma hakkında daha fazla bilgi edinin.

Uygulamanız için en iyi optimizasyon planı, özel kullanım alanınıza bağlıdır. Bu liste, en iyi uygulamaların tamamını içermez. Firebase uzmanlarından daha fazla tavsiye ve ipucu almak için Slack kanalımızı veya Stack Overflow'u ziyaret edebilirsiniz.