Cloud Firestore kullanımınızı ve maliyetlerinizi ölçmek için temel bir sohbet uygulamasının gerçek dünyadaki bu örneğini kullanın. Bu kesin bir tahmin 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 göstermek için kullanıcıların iki veya daha fazla katılımcıyla sohbet başlatabileceği örnek bir sohbet uygulamasını ele alalım. 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ükleme sayısının% 10'udur. Günlük etkin kullanıcı sayınızın (GEKS) kaba bir tahminini kullanarak günlük maliyetlerinizi tahmin edebilirsiniz. Bunlar, belirli bir günde uygulamanızı etkin bir şekilde açıp kullanan kullanıcılardır. Bu kullanıcılar genellikle toplam uygulama yükleme sayınızın küçük bir alt kümesini oluşturur. Aşağıdaki hesaplamalarda, DAU'yu toplam uygulama yükleme sayısının% 10'u olarak tahmin ettik.
- Belge boyutları nispeten küçüktür. Doküman boyutunun türe göre dökümü için aşağıdaki tabloya bakın.
- 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 hesaplamalarda her günlük yazma işlemi için bir günlük silme işlemi gösterilmektedir.
- Bu maliyet tahminleri, örnek uygulamanın maliyetlerinin tamamını değil, büyük bir kısmını yansıtır. Bu kılavuzda belirtilen en sık gerçekleştirilen 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 de hesaba katmanız gerekebilir. Hesaplamalarınızı yaparken bu örneği referans olarak kullanabilirsiniz. Ancak Cloud Firestore maliyetleri hakkında daha ayrıntılı açıklamalar için fiyatlandırma sayfasını inceleyin.
İşlemlerin kullanıcı görevine göre dökümü 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 bin yükleme)
50.000 uygulama yüklemesi (5.000 günlük etkin kullanıcı sayısı) için: 12,14 ABD doları/ay
| Okuma/Yazma Maliyetleri | |||||
|---|---|---|---|---|---|
| Toplam aylık maliyet = 11,10 ABD doları/ay | |||||
| Günlük toplam 400 bin okuma | = | 50.000 ücretsiz okuma + (350.000 okuma için 0,06 ABD doları/100.000) | = | 3,5 * 0,06 ABD doları | |
| 0,21 ABD doları / gün * 30 = 6,30 ABD doları | |||||
| Günlük toplam 100.000 yazma işlemi | = | 20.000 ücretsiz yazma + (80.000 yazma, 0,18 ABD doları/100.000) | = | 0,8 * 0,18 ABD doları | |
| 0,14 ABD doları / gün * 30 = 4,20 ABD doları | |||||
| Günlük toplam 100.000 silme işlemi | = | 20.000 ücretsiz silme işlemi + (80.000 silme işlemi için 0,02 ABD doları/100.000) | = | 0,8 * 0,02 ABD doları | |
| 0,02 ABD doları / gün * 30 = 0,60 ABD doları | |||||
| Depolama/Ağ Maliyetleri | |||||||
|---|---|---|---|---|---|---|---|
| Aylık toplam maliyet = 1,04 ABD doları/ay | |||||||
| Günlük çıkış için 20 KB / DAU * 5.000 DAU | = | Günlük 100 MB çıkış * 30 | = | Aylık 3 GB ağ çıkışı | |||
| 3 GB ücretsiz çıkış = Ücretsiz1 | |||||||
| Günlük 15 KB mesaj depolama alanı / DAU + 3 KB depolama alanı / yükleme2 | = | 45 KB depolama alanı / GEKS * 5.000 GEKS | = | 225 MB günlük depolama alanı / DAU * 30 | = | 6,75 GB aylık depolama alanı kullanımı | |
| 1 GB ücretsiz depolama alanı + (5,75 * 0,18 ABD doları) = 1,04 ABD doları / ay | |||||||
1 Cloud Firestore için aylık 10 GB ağ çıkışı ücretsizdir.
2 DAU'ların toplam uygulama yükleme sayısının% 10'u olduğunu varsaydığımız için bu sayı, uygulamanızı yükleyen toplam kullanıcı sayısını gösterir.
Orta
(1 milyon yükleme)
1.000.000 uygulama yüklemesi için (100.000 günlük etkin kullanıcı sayısı): 292,02 ABD doları/ay
| Okuma/Yazma Maliyetleri | |||||
|---|---|---|---|---|---|
| Toplam aylık maliyet = 261,90 ABD doları/ay | |||||
| Günlük toplam 8 milyon okuma | = | 50.000 ücretsiz okuma + (7,95 milyon okuma, 100.000 okuma başına 0,06 ABD doları) | = | 79,5 * 0,06 ABD doları | |
| 4,77 ABD doları / gün * 30 = 143,10 ABD doları | |||||
| Günlük toplam 2 milyon yazma işlemi | = | 20.000 ücretsiz yazma + (1,98 milyon yazma, 0,18 ABD doları/100.000) | = | 19,8 * 0,18 ABD doları | |
| 3,56 ABD doları / gün * 30 = 106,80 ABD doları | |||||
| Günlük toplam 2 milyon silme işlemi | = | 20.000 ücretsiz silme işlemi + (1,98 milyon silme işlemi için 0,02 ABD doları/100.000) | = | 19,8 * 0,02 ABD doları | |
| 0,40 ABD doları / gün * 30 = 12,00 ABD doları | |||||
| Depolama/Ağ Maliyetleri | |||||||
|---|---|---|---|---|---|---|---|
| Aylık toplam maliyet = 30,12 ABD doları/ay | |||||||
| Günlük çıkış için 20 KB / DAU * 100 bin DAU | = | Günlük 2 GB çıkış * 30 | = | 60 GB aylık ağ çıkışı | |||
| 10 GB ücretsiz çıkış + (50 GB çıkış * 0,12 ABD doları/GB) = 6,00 ABD doları / ay | |||||||
| Günlük 15 KB mesaj depolama alanı / DAU + 3 KB depolama alanı / yükleme1 | = | 45 KB depolama alanı / GEKS * 100.000 GEKS | = | 4,5 GB günlük depolama alanı / DAU * 30 | = | 135 GB aylık depolama alanı kullanımı | |
| 1 GB ücretsiz depolama alanı + (134 GB * 0,18 ABD doları/GB) = 24,12 ABD doları / ay | |||||||
1 DAU'ların toplam uygulama yükleme sayısının% 10'u olduğunu varsaydığımız için bu sayı, uygulamanızı yükleyen toplam kullanıcı sayısını gösterir.
Büyük
(10 milyon yükleme)
10.000.000 uygulama yükleme için (1.000.000 günlük etkin kullanıcı sayısı): 2.951,52 ABD doları
| Okuma/Yazma Maliyetleri | |||||
|---|---|---|---|---|---|
| Toplam aylık maliyet = Toplam: 2.637,90 ABD doları/ay | |||||
| Günlük toplam 80 milyon okuma | = | 50.000 ücretsiz okuma + (79,95 milyon okuma, 100.000 okuma başına 0,06 ABD doları) | = | 799,5 * 0,06 ABD doları | |
| 47,97 ABD doları / gün * 30 = 1.439,10 ABD doları | |||||
| Günlük toplam 20 milyon yazma işlemi | = | 20.000 ücretsiz yazma + (100.000 yazma başına 0,18 ABD doları üzerinden 19,98 milyon yazma) | = | 199,8 * 0,18 ABD doları | |
| 35,96 ABD doları / gün * 30 = 1.078,80 ABD doları | |||||
| Günlük toplam 20 milyon silme işlemi | = | 20.000 ücretsiz silme + (19,98 milyon silme işlemi için 0,02 ABD doları/100.000) | = | 199,8 * 0,02 ABD doları | |
| 4,00 ABD doları / gün * 30 = 120,00 ABD doları | |||||
| Depolama/Ağ Maliyetleri | |||||||
|---|---|---|---|---|---|---|---|
| Toplam aylık maliyet = 313,62 ABD doları/ay | |||||||
| Günlük çıkış için 20 KB / DAU * 1 milyon DAU | = | 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) = 70,80 ABD doları / ay | |||||||
| Günlük 15 KB mesaj depolama alanı / DAU + 3 KB depolama alanı / yükleme1 | = | 45 KB depolama alanı / GEKS * 1 milyon GEKS | = | 45 GB günlük depolama alanı / DAU * 30 | = | 1.350 GB aylık depolama alanı kullanımı | |
| (1 GB ücretsiz depolama alanı) + (1.349 GB * 0,18 ABD doları/GB) = 242,82 ABD doları / ay | |||||||
1 DAU'ların toplam uygulama yükleme sayısının% 10'u olduğunu varsaydığımız için bu sayı, uygulamanızı yükleyen toplam kullanıcı sayısını gösterir.
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ıza göre artabilir ve azalabilir.
Döküm: Kullanıcı görevine göre faturalandırılan kullanım
Örnek sohbet uygulamamızın veri yapısı aşağıdaki gibidir:
users/{userId}- Kullanıcı kayıtlarıgroups/{groupId}: 2 veya daha fazla kullanıcı arasındaki sohbetlermessages/{messageId}: Sohbetteki her mesaj.
Veri depolama
Uygulama verilerinin depolanmasıyla ilgili depolama maliyetlerini hesaplamak için doküman boyutlarıyla ilgili aşağıdaki varsayımları uygulayın:
| Toplama | Belge Boyutu (aktarım sırasında) | 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ı, mesaj alanları için dizinleri içerir ancak mesaj içeriği için dizine eklemenin devre dışı bırakıldığını varsayar.
Uygulama, depolama maliyetlerini düşürmek için yalnızca üç aya kadar olan mesajları saklıyor.
Depolama alanı 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 genel görevleri tamamlar:
- Sohbet listesini görme: Kullanıcılar uygulamanın ana ekranını açar ve en son gönderilen mesaja göre sıralanmış sohbetlerin (grup ve doğrudan) listesini görür.
- Sohbetteki mesajları okuma: Kullanıcılar, ana ekrandan sohbetleri seçer ve 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 cinsinden toplam tahmini işlem sayısı aşağıdaki gibidir:
- Okuma: (5 * 10) + (30) = 80 okuma / kullanıcı / gün
- Yazma işlemleri: (10 * 2) = 20 yazma işlemi / kullanıcı / gün
- Ağ çıkışı: (50 * 0,25 KB) + (30 * 0,25 KB) = 20 KB / kullanıcı / gün
- Depolama alanı: (20 * 0,75 KB) = 15 KB / kullanıcı / gün
Kullanıcı görevine göre toplam kullanım
Uygulamadaki işlem, depolama ve ağ maliyetlerinin tam açıklamasını ve dökümünü görmek için her bir kullanıcı görevini seçin.
Sohbet listesini görüntüleme
Uygulamanın ana ekranı en son 25 sohbeti yükler 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 gün kullanıcı başına toplam 125 okuma yapıldığını varsayalım. Ancak aşağıdaki örnekte olduğu gibi daha verimli sorgular bu yükü azaltabilir.
Aşağıdaki örnekte, sorguyu uygulama tarafından depolanan her başarılı getirme işleminin zaman damgasını kullanarak 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 belge okuma işlemi gerçekleştirir.
Sohbetteki mesajları okuma
Kullanıcılar, son mesajları görmek için ana ekrandan sohbet mesaj dizilerini tıklar ve 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 ve bunun her kullanıcı için günde toplam 250 okuma işlemine yol açtığını varsayalım. 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 iletileri getirecek şekilde sınırladığınız için bu, günde yalnızca 30 ileti alınacağı 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 mesaj gönderdiğini varsayalım.
Gönderilen her mesaj iki doküman yazma işlemine neden olur: Biri sohbetin messages alt koleksiyonuna yazma işlemi, 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ı okuma maliyetinin diğer yolculuklarda hesaba katıldığını unutmayın. Bu nedenle, aşağıdaki toplamlar yalnızca bu yazma maliyetini dikkate alır.
Yönetici görevleri için faturalandırılan kullanım
Uygulama sahibi veya yöneticisi olarak, uygulamanızın verilerinden raporlar oluşturmak isteyebilirsiniz. Örneğin, kullanıcılarınız tarafından gönderilen mesaj sayısını günlük olarak takip etmek isteyebilirsiniz. Bunu, messages koleksiyon grubunun count() toplamasıyla yapabilirsiniz.
count() gibi toplama sorguları için sorguyla eşleşen en fazla 1.000 dizin girişinden oluşan her grup için bir belge okuma ücreti alınır. Bu günlük toplama işlemini çalıştırmak, aşağıdaki aylık ücretleri ekler:
Küçük
(50 bin yükleme)
50.000 uygulama yüklemesi (5.000 DAU) için: 0,0009 ABD doları/ay
5.000 etkin kullanıcı * kullanıcı başına 10 yeni mesaj = günde 50.000 yeni mesaj dokümanı
50.000 doküman sayıldı / 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 * 0,06/100.000 okuma fiyatı = ayda 0,0009 ABD doları
Orta
(1 milyon yükleme)
1.000.000 uygulama yüklemesi için (100.000 günlük etkin kullanıcı sayısı): 0,018 ABD doları/ay
100.000 etkin kullanıcı * kullanıcı başına 10 yeni mesaj = günde 1.000.000 yeni mesaj dokümanı
1.000.000 doküman sayıldı / 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
Ayda 30.000 okuma * 0,06/100.000 okuma fiyatı = ayda 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ı sayısı) için: 0,18 ABD doları
1.000.000 etkin kullanıcı * kullanıcı başına 10 yeni mesaj = günde 10.000.000 yeni mesaj dokümanı
10.000.000 doküman sayıldı / 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ı
Dahil olan avantajlar: Uygulamanız için ücretsiz hizmetler
Cloud Firestore işlemleri, depolama alanı ve ağ bant genişliği faturalandırılabilir kullanım olarak kabul edilirken ek ücret ödemeden çeşitli avantajlardan da yararlanabilirsiniz. Cloud Firestore ile diğer veritabanı seçeneklerini karşılaştırırken aşağıdaki ücretsiz hizmetleri de göz önünde bulundurun:
- Doğrudan istemci erişimi: Cloud Firestore, yerel SDK'larımız kullanılarak doğrudan istemci kodunuzdan erişilir. Bu sayede, mobil istemcilerinizi veritabanına bağlamak için bir API sunucusu oluşturup çalıştırmanız gerekmez.
- Yük dengeleme: Cloud Firestore, veritabanınıza gelen trafiği desteklemek için otomatik olarak ölçeklendirildiğ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% 99'un üzerinde çalışma süresi sunar.
- Kimlik doğrulama: Firebase Authentication ile sınırsız sayıda kullanıcının kimliğini basit ve güvenli bir şekilde doğrulayın. Firebase Authentication, doğrudan Cloud Firestore ile entegre olur. Bu sayede kendi kimlik doğrulama hizmetinizi çalıştırmanız gerekmez.
- Push bildirimleri: Cloud Messaging ile mesaj ve bildirim gönderme
- Diğer Firebase ürünleri: A/B Testi, Analytics, Crashlytics ve Performance Monitoring 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.