Cloud Firestore kullanımınızı ve maliyetlerinizi ölçmek için temel bir sohbet uygulamasına ait bu gerçek dünyadan örneği kullanın. Bu tahmin tam olarak doğru değildir ancak Cloud Firestore kullanımınızın nasıl faturalandırıldığını daha iyi anlamanıza yardımcı olabilir.
Genel bakış: Kullanım düzeyine göre maliyetler
Tipik maliyetleri açıklamak için kullanıcıların iki veya daha fazla katılımcıyla sohbet başlatabileceği örnek bir sohbet uygulaması düşünün. Kullanıcılar etkin sohbetlerini bir listede görebilir, mesajları okuyabilir ve mesaj gönderebilir. Bu örnekte, Kuzey Amerika çoklu bölgesi (özellikle nam5
) için fiyatlandırmayı kullanıyoruz.
Varsayımlar
Kullanım ve veri depolama ile ilgili aşağıdaki varsayımları göz önünde bulundurun:
- Günlük etkin kullanıcı sayısı (GEKS), toplam uygulama yüklemelerinin% 10'udur. Günlük etkin kullanıcılarınızın (GEKS) kaba bir tahminini kullanarak günlük maliyetlerinizi tahmin edebilirsiniz. Bunlar, uygulamanızı belirli bir günde etkin bir şekilde açıp kullanan kullanıcılardır. Bu kullanıcılar genellikle toplam uygulama yüklemelerinizin küçük bir alt kümesini oluşturur. Aşağıdaki hesaplamalar için DAU'ları toplam uygulama yükleme sayısının% 10'u olarak tahmin ettik.
- Belge boyutları nispeten küçüktür. Belge boyutunun türüne göre dökümünü aşağıdaki tabloda bulabilirsiniz.
- Veriler yalnızca üç ay boyunca saklanır. Örnek sohbet uygulamasındaki mesajlar yalnızca üç ay boyunca saklanır. Silme işlemlerini hesaba katmak için aşağıdaki hesaplamalar, her günlük yazma işlemi için günlük bir silme işlemi gösterir.
- Bu maliyet tahminleri, örnek uygulamanın maliyetlerinin büyük bir kısmını yansıtır ancak tümünü yansıtmaz. Bu kılavuzda açıklanan en sık kullanıcı görevleri için işlemleri, kullanıcı ve mesaj depolama alanını ve çıkışı hesaplayarak bir uygulamanın maliyetlerinin büyük kısmını hesaba kattık. Ancak uygulamanızın yapısına ve veri ihtiyaçlarına bağlı olarak ek maliyetleri hesaba katmanız gerekebilir. Hesaplamalarınıza rehberlik etmesi için bu örneği kullanın ancak Cloud Firestore maliyetleriyle ilgili daha ayrıntılı açıklamalar için fiyatlandırma sayfasına bakın.
İşlemlerin kullanıcı görevine göre dökümünü görmek için Döküm: Kullanıcı görevine göre faturalandırılan kullanım bölümüne bakın.
Küçük
(50.000 yükleme)
50.000 uygulama yüklemesi (5.000 günlük etkin kullanıcı) için: Ayda 12,14 ABD doları
Okuma/yazma maliyetleri | |||||
---|---|---|---|---|---|
Toplam aylık maliyet = 11,10 ABD doları/ay | |||||
Toplam günlük 400.000 okuma | = | 50.000 ücretsiz okuma + (100.000 okuma başına 0,06 ABD doları karşılığında 350.000 okuma) | = | 3,5 x 0,06 | |
Gün başına 0,21 ABD doları * 30 = 6,30 ABD doları | |||||
Toplam günlük 100.000 yazma işlemi | = | 20.000 ücretsiz yazma işlemi + (100.000 yazma başına 0,18 ABD doları karşılığında 80.000 yazma işlemi) | = | 0,8 * 0,18 ABD doları | |
Günlük 0,14 ABD doları * 30 = 4,20 ABD doları | |||||
Toplam günlük 100.000 silme | = | 20.000 ücretsiz silme + (100.000/0,02 ABD doları karşılığında 80.000 silme) | = | 0,8 * 0,02 ABD doları | |
0,02 ABD doları / gün * 30 = 0,60 ABD doları |
Depolama Alanı/Ağ Maliyetleri | |||||||
---|---|---|---|---|---|---|---|
Toplam aylık maliyet = ayda 1,04 ABD doları | |||||||
Günlük çıkış için 20 KB / GEKS * 5.000 GEKS | = | 100 MB günlük çıkış * 30 | = | Aylık 3 GB ağ çıkışı | |||
3 GB Ücretsiz çıkış = Ücretsiz1 | |||||||
15 KB günlük mesaj depolama alanı / GEKS + 3 KB depolama alanı / yükleme2 | = | 45 KB depolama alanı / GEKS * 5.000 GEKS | = | 225 MB günlük depolama alanı / GEKS * 30 | = | Aylık 6,75 GB depolama alanı kullanımı | |
1 GB ücretsiz depolama alanı + (5,75 * 0,18 ABD doları) = ayda 1,04 ABD doları |
1 Cloud Firestore için aylık 10 GB ağ çıkışı ücretsizdir.
2 DAU'ların toplam uygulama yüklemelerinin% 10'unu oluşturduğu varsayıldığında bu sayı, uygulamanızı yükleyen toplam kullanıcı sayısını ifade eder.
Orta
(1 milyon yükleme)
1.000.000 uygulama yüklemesi (100.000 günlük etkin kullanıcı) için: Ayda 292,02 ABD doları
Okuma/yazma maliyetleri | |||||
---|---|---|---|---|---|
Aylık toplam maliyet = ayda 261,90 ABD doları | |||||
Toplam günlük 8 milyon okuma | = | 50.000 ücretsiz okuma + (100.000 okuma başına 0,06 ABD doları karşılığında 7,95 milyon okuma) | = | 79,5 x 0,06 ABD doları | |
4,77 ABD doları / gün * 30 = 143,10 ABD doları | |||||
Toplam günlük 2 milyon yazma işlemi | = | 20.000 ücretsiz yazma işlemi + (100.000 yazma başına 0,18 ABD doları karşılığında 1.98 milyon yazma işlemi) | = | 19,8 * 0,18 ABD doları | |
3,56 ABD doları / gün * 30 = 106,80 ABD doları | |||||
Toplam günlük 2 milyon silme işlemi | = | 20.000 ücretsiz silme + (100.000 öğe başına 0,02 ABD doları ücretle 1.980.000 silme) | = | 19,8 * 0,02 ABD doları | |
0,40 ABD doları / gün * 30 = 12,00 ABD doları |
Depolama Alanı/Ağ Maliyetleri | |||||||
---|---|---|---|---|---|---|---|
Toplam aylık maliyet = ayda 30,12 ABD doları | |||||||
Günlük çıkış için 20 KB / GEKS * 100.000 GEKS | = | 2 GB günlük çıkış * 30 | = | Aylık 60 GB ağ çıkışı | |||
10 GB ücretsiz çıkış + (50 GB çıkış * 0,12 ABD doları/GB) = ayda 6,00 ABD doları | |||||||
15 KB günlük mesaj depolama alanı / GEKS + 3 KB depolama alanı / yükleme1 | = | 45 KB depolama alanı / GEKS * 100.000 GEKS | = | 4,5 GB günlük depolama alanı / DAU * 30 | = | Aylık 135 GB depolama alanı kullanımı | |
1 GB ücretsiz depolama alanı + (134 GB * 0,18 ABD doları/GB) = ayda 24,12 ABD doları |
1 GEKS'lerin toplam uygulama yüklemelerinin% 10'unu oluşturduğu varsayıldığında bu sayı, uygulamanızı yükleyen toplam kullanıcı sayısını ifade eder.
Büyük
(10 milyon yükleme)
10.000.000 uygulama yüklemesi (1.000.000 günlük etkin kullanıcı) için: 2.951,52 ABD doları
Okuma/yazma maliyetleri | |||||
---|---|---|---|---|---|
Toplam aylık maliyet = Toplam: ayda 2.637,90 ABD doları | |||||
Toplam günlük 80 milyon okuma | = | 50.000 ücretsiz okuma + (100.000 okuma başına 0,06 ABD doları karşılığında 79,95 milyon okuma) | = | 799,5 x 0,06 ABD doları | |
47,97 ABD doları / gün * 30 = 1.439,10 ABD doları | |||||
Toplam günlük 20 milyon yazma işlemi | = | 20.000 ücretsiz yazma işlemi + (100.000 yazma başına 0,18 ABD doları karşılığında 19.980.000 yazma işlemi) | = | 199,8 * 0,18 | |
35,96 ABD doları / gün * 30 = 1.078,80 ABD doları | |||||
Toplam günlük 20 milyon silme işlemi | = | 20.000 ücretsiz silme işlemi + (100.000 öğe başına 0,02 ABD doları karşılığında 19.980.000 silme işlemi) | = | 199,8 * 0,02 ABD doları | |
4,00 ABD doları / gün * 30 = 120,00 ABD doları |
Depolama Alanı/Ağ Maliyetleri | |||||||
---|---|---|---|---|---|---|---|
Toplam aylık maliyet = 313,62 ABD doları/ay | |||||||
Günlük çıkış için 20 KB / GEKS * 1 milyon GEKS | = | 20 GB günlük çıkış * 30 | = | Aylık 600 GB ağ çıkışı | |||
10 GB ücretsiz çıkış + (590 GB çıkış * 0,12 ABD doları/GB) = ayda 70,80 ABD doları | |||||||
15 KB günlük mesaj depolama alanı / GEKS + 3 KB depolama alanı / yükleme1 | = | 45 KB depolama alanı / GEKS * 1 milyon GEKS | = | 45 GB günlük depolama alanı / DAU * 30 | = | Aylık 1.350 GB depolama alanı kullanımı | |
(1 GB ücretsiz depolama alanı) + (1.349 GB * 0,18 ABD doları/GB) = aylık 242,82 ABD doları |
1 GEKS'lerin toplam uygulama yüklemelerinin% 10'unu oluşturduğu varsayıldığında bu sayı, uygulamanızı yükleyen toplam kullanıcı sayısını ifade eder.
Cloud Firestore faturalandırma modelinin dikkate değer bir avantajı, yalnızca kullandığınız kadar ödeme yapmanızdır. Bu nedenle faturanız, DAU sayınızla birlikte artıp azalabilir.
Ayrıntı: Kullanıcı görevine göre faturalandırılan kullanım
Örnek sohbet uygulamamızda veri yapısı şu şekildedir:
users/{userId}
: Kullanıcı kayıtlarıgroups/{groupId}
: 2 veya daha fazla kullanıcı arasındaki sohbetlermessages/{messageId}
: Sohbetteki her mesaj.
Veri depolama
Uygulamanın verilerini depolamayla ilgili depolama maliyetlerini hesaplamak için belge boyutlarıyla ilgili aşağıdaki varsayımları uygulayın:
Toplama | Belge boyutu (aktarımda) | Belge Boyutu (diskte)* |
---|---|---|
kullanıcılar | 1KB | 3KB |
groups | 0,5 KB | 1,5 KB |
mesajlar | 0,25 KB | 0,75 KB |
*Bu boyut hesaplaması, ileti alanlarının dizinlerini içerir ancak ileti içeriği için dizine eklemenin devre dışı bırakıldığı varsayılır.
Uygulama, depolama maliyetlerini düşürmek için yalnızca üç aydan eski mesajları depolar.
Depolama maliyetlerini hesaplama hakkında daha fazla bilgi için Depolama alanı boyutu hesaplamalarını anlama başlıklı makaleyi inceleyin.
İşlemler
Kullanıcılar genellikle uygulamada aşağıdaki yaygın görevleri tamamlar:
- Sohbet listesini görme: Kullanıcılar uygulamanın ana ekranını açtığında, gönderilen en son mesaja göre sıralanmış sohbetlerin (grup ve doğrudan) listesini görür.
- Sohbetlerdeki mesajları okuma: Kullanıcılar ana ekrandan sohbetleri seçip sohbetlerdeki son mesajları okur.
- Sohbete mesaj gönderme: Kullanıcılar sohbetlere (grup veya doğrudan) mesaj gönderir.
Örnek uygulamanın, üç tipik kullanıcı görevi için Cloud Firestore'te toplam tahmini işlemleri aşağıdaki gibidir:
- Okuma sayısı: (5 * 10) + (30) = kullanıcı başına günlük 80 okuma
- Yazma: (10 * 2) = kullanıcı başına günlük 20 yazma işlemi
- Ağ Çıkışı: (50 * 0,25 KB) + (30 * 0,25 KB) = kullanıcı başına günlük 20 KB
- Depolama alanı: (20 * 0,75 KB) = 15 KB / kullanıcı / gün
Kullanıcı görevine göre toplam kullanım
Uygulamadaki işlemler, depolama alanı ve ağ maliyetlerinin tam açıklamasını ve dökümünü görmek için her kullanıcı görevini seçin.
Sohbetler listesini görme
Uygulamanın ana ekranında en son 25 sohbet yüklenir ve 25 belge okuma işlemi için ücret alınır. Etkin bir kullanıcının uygulamayı günde 5 kez açtığını ve her kullanıcının günde toplam 125 okuma yaptığını varsayalım. Ancak aşağıdaki örnekteki gibi daha verimli sorgular bu yükü azaltabilir.
Aşağıdaki örnekte, her başarılı getirme işleminin uygulama tarafından saklanan zaman damgasını kullanarak sorguyu yeni sohbetlerle sınırlandırıyoruz:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
Kullanıcı uygulamayı her kontrol ettiğinde ortalama 10 güncellenmiş sohbet olduğunu varsayalım. Bu sorgu yalnızca 10 doküman okuma işlemi gerçekleştirir.
Sohbetlerdeki mesajları okuma
Kullanıcılar, son mesajları görmek için ana ekrandan sohbet mesaj dizilerini tıkladığında ilk yüklemede en son 50 mesaj yüklenir.
Tipik bir kullanıcının bu işlemi günde 5 kez (ana ekranı her açtığında bir kez) gerçekleştirdiğini varsayalım. Bu durumda, her kullanıcının her gün toplam 250 okuması olur. Sorgumuzu, son getirme zamanından sonraki yeni mesajlarla da sınırlayabiliriz:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
Bir kullanıcının tüm sohbetlerde günde yaklaşık 30 mesaj aldığını varsayalım. Sorguyu yeni iletiler getirmekle sınırlandırdığınız için bu, günde yalnızca 30 ileti getirileceği anlamına gelir.
Sohbete mesaj gönderme
Kullanıcılar sohbete katıldıktan sonra diğer katılımcılara mesaj gönderebilir. Etkin bir kullanıcının günde yaklaşık 10 ileti gönderdiğini varsayalım.
Gönderilen her mesaj, iki doküman yazma işlemine neden olur: Biri sohbetin messages
alt koleksiyonuna, diğeri ise lastUpdated
zaman damgasını ve diğer meta verileri güncellemek için sohbet üst dokümanına yazma işlemi.
Bu mesajların okunma maliyetinin diğer yolculuklarda hesaba katıldığını, bu nedenle aşağıdaki toplamların yalnızca bu yazma maliyetini dikkate aldığını unutmayın.
Yönetici görevleri için faturalandırılan kullanım
Uygulama sahibi veya yöneticisi olarak, uygulamanızın verilerinden rapor oluşturmak isteyebilirsiniz. Örneğin, kullanıcılarınızın gönderdiği mesaj sayısını günlük olarak saymak isteyebilirsiniz. Bunu, messages
koleksiyon grubunun count()
toplamasıyla yapabilirsiniz.
count()
gibi toplama sorguları için, sorgu tarafından eşleşen 1.000'e kadar dizine ekleme girişi içeren her grup için bir belge okuması ücreti alınır. Bu günlük toplama işleminin çalıştırılması aşağıdaki aylık ücretleri ekler:
Küçük
(50.000 yükleme)
50.000 uygulama yüklemesi (5.000 GEKS) için: Aylık 0,0009 ABD doları
5.000 etkin kullanıcı * kullanıcı başına 10 yeni ileti = günde 50.000 yeni ileti dokümanı
Sayılan 50.000 belge / okuma ücreti başına 1.000 dizin eşleşmesi = 50 okuma
Günde 50 okuma * 30 gün = Ayda 1.500 okuma
Ayda 1.500 okuma * 100.000 okuma başına 0,06 ABD doları = Ayda 0,0009 ABD doları
Orta
(1 milyon yükleme)
1.000.000 uygulama yüklemesi (100.000 günlük etkin kullanıcı) için: Ayda 0,018 ABD doları
100.000 etkin kullanıcı * kullanıcı başına 10 yeni ileti = günde 1.000.000 yeni ileti dokümanı
Sayılan 1.000.000 belge / okuma ücreti başına 1.000 dizin eşleşmesi = 1.000 okuma
Günde 1.000 okuma * 30 gün = Ayda 30.000 okuma
Aylık 30.000 okuma * 0,06/100.000 okuma fiyatı = Aylık 0,018 ABD doları
Büyük
(10 milyon yükleme)
10.000.000 uygulama yüklemesi (1.000.000 günlük etkin kullanıcı) için: 0,18 ABD doları
1.000.000 etkin kullanıcı * kullanıcı başına 10 yeni ileti = günde 10.000.000 yeni ileti dokümanı
Sayılan 10.000.000 belge / okuma ücreti başına 1.000 dizin eşleşmesi = 10.000 okuma
Günde 10.000 okuma * 30 gün = Ayda 300.000 okuma
Ayda 300.000 okuma * 0,06/100.000 okuma fiyatı = Ayda 0,18 ABD doları
Sunulan avantajlar: Uygulamanız için ücretsiz hizmetler
Cloud Firestore işlemleri, depolama alanı ve ağ bant genişliğinin tümü faturalandırılabilir kullanım olarak kabul edilirken ek maliyet yansıtılmaksızın çeşitli diğer avantajlardan da yararlanabilirsiniz. Cloud Firestore'ü diğer veritabanı seçenekleriyle karşılaştırırken aşağıdaki ücretsiz hizmetleri göz önünde bulundurun:
- Doğrudan istemci erişimi: Cloud Firestore'ye, yerel SDK'larımız kullanılarak doğrudan istemci kodunuzdan erişilir. Bu, mobil istemcilerinizi veritabanına bağlamak için bir API sunucusu oluşturmanız ve çalıştırmanız gerekmediği anlamına gelir.
- Yük dengeleme: Cloud Firestore, veritabanınıza gelen trafiği desteklemek için otomatik olarak ölçeklendiğinden yük dengeleyici çalıştırmanız gerekmez.
- Sunucu çalışma süresi: Cloud Firestore veritabanları Google Cloud sunucularında çalışır ve aylık çalışma süresi% 99'un üzerindedir.
- Kimlik doğrulama: Firebase Authentication ile sınırsız sayıda kullanıcının kimliğini kolay ve güvenli bir şekilde doğrulayın. Firebase Authentication, kendi kimlik doğrulama hizmetinizi çalıştırmanız gerekmeyecek şekilde doğrudan Cloud Firestore ile entegre olur.
- Push bildirimleri: Cloud Messaging ile mesaj ve bildirim gönderin.
- Diğer Firebase ürünleri: A/B Testi, Analytics, Crashlytics, Performans İzleme ve Remote Config gibi diğer Firebase ürünlerini ücretsiz olarak entegre edin. Diğer Firebase ürünleri ve Firebase fiyatlandırması hakkında daha fazla bilgi edinin.