Gerçek Zamanlı Veritabanı Faturalandırmasını Anlayın

Firebase, veritabanınızda depoladığınız verileri ve OSI modelinin oturum katmanındaki (katman 5) tüm giden ağ trafiğini faturalandırır. Depolama, günlük olarak değerlendirilen, her GB/ay için 5 ABD Doları tutarında faturalandırılır. Faturalandırma, veritabanınızın konumundan etkilenmez. Giden trafik, tüm veritabanı işlemlerinden ve veritabanı okumaları yoluyla indirilen verilerden kaynaklanan bağlantı ve şifreleme ek yükünü içerir. Veritabanı okuma ve yazma işlemlerinin her ikisi de faturanızda bağlantı masraflarına neden olabilir. 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ılmış trafiğin bazı yaygın örnekleri şunlardır:

  • İndirilen veriler: Müşteriler veritabanınızdan veri aldığında Firebase indirilen veriler için ücret alır. Tipik olarak bu, bant genişliği maliyetlerinizin büyük kısmını oluşturur, ancak faturanızdaki tek faktör bu değildir.
  • Protokol yükü: Bir oturumun kurulması ve sürdürülmesi için sunucu ile istemciler arasında bir miktar ek trafik gereklidir. 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, herhangi bir SSL şifreleme ek yüküyle birleştiğinde bağlantı maliyetlerine katkıda bulunur. Bu, tek bir istek için çok fazla bir bant genişliği olmasa da, yükünüz küçükse veya sık, kısa bağlantılar yapıyorsanız faturanızın önemli bir kısmını oluşturabilir.
  • SSL şifreleme ek yükü: Güvenli bağlantılar için gerekli olan SSL şifreleme ek yükünün bir maliyeti 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 fazla SSL anlaşması gerektiriyorsa bu büyük bir yüzdeye dönüşebilir. Örneğin, TLS oturum biletlerini desteklemeyen cihazlar, çok sayıda SSL bağlantı anlaşması gerektirebilir.
  • Firebase konsol verileri: Bu genellikle Gerçek Zamanlı Veritabanı maliyetlerinin önemli bir kısmı olmasa da Firebase, Firebase konsolundan okuduğunuz ve yazdığınız veriler için ücret alır.

Faturalandırılmış kullanımınızı tahmin edin

Mevcut Gerçek Zamanlı Veritabanı bağlantılarınızı ve veri kullanımınızı görmek için Firebase konsolundaki Kullanım sekmesini kontrol edin. Geçerli fatura dönemi, son 30 gün veya son 24 saat içindeki kullanımı kontrol edebilirsiniz.

Firebase aşağıdaki metriklere ilişkin kullanım istatistiklerini gösterir:

  • Bağlantılar: Veritabanınıza yapılan eşzamanlı, o anda açık, gerçek zamanlı bağlantıların sayısı. Bu, aşağıdaki gerçek zamanlı bağlantıları içerir: WebSocket, uzun yoklama ve HTML sunucusu tarafından gönderilen olaylar. RESTful isteklerini içermez.
  • Depolama: Veritabanınızda ne kadar veri depolandığıdır. Buna Firebase barındırma veya diğer Firebase ürünleri aracılığıyla depolanan veriler dahil değildir.
  • İndirilenler: Protokol ve şifreleme yükü de dahil olmak üzere veritabanınızdan indirilen tüm baytlar.
  • Yük: Bu grafik, belirli bir 1 dakikalık aralıkta veritabanınızın ne kadarının kullanıldığını ve istekleri işlediğini gösterir. Veritabanınız %100'e yaklaştıkça performans sorunlarıyla karşılaşabilirsiniz.

Kullanımı optimize edin

Veritabanı kullanımınızı ve bant genişliği maliyetlerinizi optimize etmek için kullanabileceğ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'ye eklenen SSL şifreleme maliyetlerini azaltır.
  • Hataları kontrol edin: Bant genişliği maliyetleriniz beklenmedik derecede 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 profil oluşturucu aracını kullanarak okuma işlemlerinizi ölçün ve Android , Objective-C ve Web SDK'larında hata ayıklama günlüğünü açın. 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 ve küçük REST istekleri, yerel SDK kullanılarak yapılan tek ve sürekli bir bağlantıdan daha maliyetli olabilir. REST API'yi kullanıyorsanız, SSL anlaşmalarından kaynaklanan maliyetleri azaltabilecek bir HTTP canlı tutma veya sunucu tarafından gönderilen olaylar kullanmayı düşünün.
  • TLS oturum biletleri kullanın: TLS oturum biletleri düzenleyerek devam ettirilen bağlantılarda SSL şifreleme ek yükünü azaltın. Bu, özellikle veritabanına sık ve güvenli bağlantılara ihtiyacınız varsa 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üşürmek ve veritabanınızın performansını artırmak gibi iki fayda sağlar. Veritabanınızda dizine eklenmemiş sorguları bulmak için profil oluşturucu aracını kullanın.
  • Dinleyicilerinizi optimize edin: Dinleme operasyonlarınızın döndürdüğü verileri sınırlandırmak için sorgular ekleyin ve yalnızca veri güncellemelerini indiren dinleyicileri kullanın (örneğin, once() yerine on() ). Ek olarak, 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 azaltın: Periyodik temizleme işlerini çalıştırın ve veritabanınızdaki yinelenen verileri azaltın.
  • Kullanım Kuralları: Veritabanınızda olası maliyetli, yetkisiz işlemleri önleyin. Örneğin, Firebase Gerçek Zamanlı Veritabanı Güvenliği Kurallarını kullanmak, kötü niyetli bir kullanıcının veritabanınızın tamamını tekrar tekrar indirdiği bir senaryoyu önleyebilir. Firebase Gerçek Zamanlı Veritabanı Kurallarını kullanma hakkında daha fazla bilgi edinin.

Uygulamanız için en iyi optimizasyon planı, özel kullanım durumunuza bağlıdır. Bu, en iyi uygulamaların kapsamlı bir listesi olmasa da, Slack kanalımızda veya Stack Overflow'ta Firebase uzmanlarından daha fazla tavsiye ve ipucu bulabilirsiniz.