استخدِم هذا المثال الواقعي لتطبيق دردشة أساسي من أجل قياس Cloud Firestore ومعرفة التكاليف. هذا ليس تقديرًا دقيقًا، ولكن يمكن أن يساعدك في فهم أفضل لطريقة احتساب رسوم استخدام Cloud Firestore.
نظرة عامة: التكاليف حسب مستوى الاستخدام
لتوضيح التكاليف النموذجية، لنأخذ مثالاً على تطبيق دردشة يمكن للمستخدمين من خلاله بدء محادثات مع مشاركين اثنين أو أكثر. يمكن للمستخدمين الاطّلاع على محادثاتهم النشطة في قائمة، وقراءة الرسائل، وإرسال الرسائل. في هذا المثال، سنستخدم الأسعار الخاصة بالمنطقة المتعددة في أمريكا الشمالية (nam5
تحديدًا).
الافتراضات
يجب مراعاة الافتراضات التالية بشأن الاستخدام وتخزين البيانات:
- المستخدمون النشطون يوميًا يمثّلون% 10 من إجمالي عمليات تثبيت التطبيق. يمكنك تقدير تكاليفك اليومية باستخدام تقدير تقريبي لعدد المستخدمين النشطين يوميًا. هؤلاء هم المستخدمون الذين يفتحون تطبيقك ويستخدمونه بنشاط في يوم محدّد، وهم عادةً مجموعة فرعية صغيرة من إجمالي عمليات تثبيت تطبيقك. بالنسبة إلى العمليات الحسابية أدناه، قدّرنا عدد المستخدمين النشطين يوميًا بنسبة% 10 من إجمالي عدد عمليات تثبيت التطبيق.
- أحجام المستندات صغيرة نسبيًا. اطّلِع على الجدول أدناه للاطّلاع على تفاصيل حجم المستند حسب النوع.
- يتم تخزين البيانات لمدة ثلاثة أشهر فقط. يتم تخزين الرسائل في تطبيق المحادثة الوارد في المثال لمدة ثلاثة أشهر فقط. لأخذ عمليات الحذف في الاعتبار، تعرض العمليات الحسابية أدناه عملية حذف يومية لكل عملية كتابة يومية.
- تعكس تقديرات التكلفة هذه الجزء الأكبر من تكاليف التطبيق النموذجي، ولكن ليس كلها. لقد أخذنا في الاعتبار معظم تكاليف التطبيق من خلال احتساب العمليات ومساحة تخزين المستخدمين والرسائل وعمليات نقل البيانات الصادرة لأكثر مهام المستخدمين شيوعًا الموضّحة في هذا الدليل. ومع ذلك، قد تحتاج إلى أخذ تكاليف إضافية في الاعتبار، وذلك حسب بنية تطبيقك واحتياجاته من البيانات. استخدِم هذا المثال للاسترشاد به في عمليات حساباتك، ولكن يُرجى الرجوع إلى صفحة الأسعار للحصول على توضيحات أكثر تفصيلاً بشأن تكاليف Cloud Firestore.
للاطّلاع على تفاصيل العمليات حسب مهمة المستخدم، يُرجى الانتقال إلى قسم التفاصيل: الاستخدام المحسوب حسب مهمة المستخدم.
صغير
(50 ألف عملية تثبيت)
مقابل 50,000 عملية تثبيت للتطبيق (5,000 مستخدم نشط يوميًا): 12.14 دولار أمريكي في الشهر
تكاليف القراءة/الكتابة | |||||
---|---|---|---|---|---|
إجمالي التكلفة الشهرية = 11.10 دولار أمريكي في الشهر | |||||
إجمالي 400 ألف قراءة يومية | = | 50 ألف قراءة بدون تكلفة + (350 ألف قراءة بسعر 0.06 دولار أمريكي لكل 100 ألف قراءة) | = | 3.5 * 0.06 دولار أمريكي | |
0.21 دولار أمريكي في اليوم * 30 يومًا = 6.30 دولار أمريكي | |||||
إجمالي عدد عمليات الكتابة اليومية: 100 ألف | = | 20,000 عملية كتابة بدون تكلفة + (80,000 عملية كتابة بسعر 0.18 دولار أمريكي لكل 100,000 عملية) | = | .8 * $0.18 | |
0.14 دولار أمريكي في اليوم * 30 يومًا = 4.20 دولار أمريكي | |||||
100 ألف عملية حذف إجمالية يوميًا | = | 20 ألف عملية حذف بدون تكلفة + (80 ألف عملية حذف بتكلفة 0.02 دولار أمريكي لكل 100 ألف عملية حذف) | = | .8 * $0.02 | |
0.02 دولار أمريكي في اليوم * 30 يومًا = 0.60 دولار أمريكي |
تكاليف التخزين/الاتصال بالشبكات | |||||||
---|---|---|---|---|---|---|---|
إجمالي التكلفة الشهرية = 1.04 دولار أمريكي في الشهر | |||||||
20 كيلوبايت / مستخدم نشط يوميًا من معدّل نقل البيانات اليومي * 5 آلاف مستخدم نشط يوميًا | = | 100 ميغابايت من حركة الخروج اليومية * 30 | = | 3 غيغابايت من نقل البيانات خارج الشبكة شهريًا | |||
3 غيغابايت من حركة الخروج بدون تكلفة = بدون تكلفة1 | |||||||
مساحة تخزين الرسائل اليومية 15 كيلوبايت / المستخدمون النشطون يوميًا + مساحة تخزين 3 كيلوبايت / عملية تثبيت2 | = | 45 كيلوبايت من مساحة التخزين / مستخدم نشط يوميًا * 5000 مستخدم نشط يوميًا | = | 225 ميغابايت من مساحة التخزين اليومية / المستخدمون النشطون يوميًا * 30 | = | استخدام 6.75 غيغابايت من مساحة التخزين شهريًا | |
مساحة تخزين مجانية بسعة 1 غيغابايت + (5.75 * 0.18 دولار أمريكي) = 1.04 دولار أمريكي في الشهر |
1 لا تتوفّر تكلفة لنقل البيانات خارج الشبكة بسعة 10 غيغابايت شهريًا
Cloud Firestore.
2 بما أنّنا نفترض أنّ المستخدمين النشطين يوميًا يمثّلون% 10 من إجمالي عمليات تثبيت التطبيق، يمثّل هذا الرقم إجمالي عدد المستخدمين الذين ثبّتوا تطبيقك.
متوسطة
(مليون عملية تثبيت)
مقابل مليون عملية تثبيت للتطبيق (100,000 مستخدم نشط يوميًا): 292.02 دولار أمريكي في الشهر
تكاليف القراءة/الكتابة | |||||
---|---|---|---|---|---|
إجمالي التكلفة الشهرية = 261.90 دولار أمريكي في الشهر | |||||
8 مليون قراءة إجمالية يوميًا | = | 50 ألف قراءة بدون تكلفة + (7.95 مليون قراءة بسعر 0.06 دولار أمريكي لكل 100 ألف قراءة) | = | 79.5 * $0.06 | |
4.77 دولار أمريكي في اليوم * 30 يومًا = 143.10 دولار أمريكي | |||||
2 مليون عملية كتابة إجمالية يوميًا | = | 20 ألف عملية كتابة بدون تكلفة + (1.98 مليون عملية كتابة بسعر 0.18 دولار أمريكي لكل 100 ألف عملية) | = | 19.8 * $0.18 | |
3.56 دولار أمريكي في اليوم * 30 يومًا = 106.80 دولار أمريكي | |||||
إجمالي عمليات الحذف اليومية: 2 مليون | = | 20,000 عملية حذف بدون تكلفة + (1,980,000 عملية حذف بسعر 0.02 دولار أمريكي لكل 100,000 عملية حذف) | = | 19.8 * $0.02 | |
0.40 دولار أمريكي في اليوم * 30 = 12.00 دولار أمريكي |
تكاليف التخزين/الاتصال بالشبكات | |||||||
---|---|---|---|---|---|---|---|
إجمالي التكلفة الشهرية = 30.12 دولار أمريكي في الشهر | |||||||
20 كيلوبايت / مستخدم نشط يوميًا من معدل نقل البيانات اليومي * 100 ألف مستخدم نشط يوميًا | = | غيغابايتَين من نقل البيانات خارج الخدمة يوميًا * 30 | = | نقل بيانات الشبكة الصادر شهريًا بسعة 60 غيغابايت | |||
10 غيغابايت من حركة الخروج بدون تكلفة + (50 غيغابايت من حركة الخروج * 0.12 دولار أمريكي لكل غيغابايت) = 6.00 دولار أمريكي في الشهر | |||||||
مساحة تخزين الرسائل اليومية 15 كيلوبايت / المستخدِمون النشطون يوميًا + مساحة تخزين 3 كيلوبايت / عملية تثبيت1 | = | 45 كيلوبايت من مساحة التخزين / مستخدم نشط يوميًا * 100,000 مستخدم نشط يوميًا | = | 4.5 غيغابايت من مساحة التخزين اليومية / المستخدم النشط يوميًا * 30 | = | استخدام مساحة تخزين تبلغ 135 غيغابايت شهريًا | |
مساحة تخزين مجانية بسعة 1 غيغابايت + (134 غيغابايت × 0.18 دولار أمريكي/غيغابايت) = 24.12 دولار أمريكي في الشهر |
1 بما أنّنا نفترض أنّ المستخدمين النشطين يوميًا يمثّلون% 10 من إجمالي عمليات تثبيت التطبيق، يمثّل هذا الرقم إجمالي عدد المستخدمين الذين ثبَّتوا تطبيقك.
كبير
(10 مليون عملية تثبيت)
مقابل 10,000,000 عملية تثبيت للتطبيق (1,000,000 مستخدم نشط يوميًا): 2951.52 دولار أمريكي
تكاليف القراءة/الكتابة | |||||
---|---|---|---|---|---|
إجمالي التكلفة الشهرية = الإجمالي: 2637.90 دولار أمريكي في الشهر | |||||
80 مليون قراءة يومية إجمالية | = | 50 ألف عملية قراءة بدون تكلفة + (79.95 مليون عملية قراءة بسعر 0.06 دولار أمريكي لكل 100 ألف عملية قراءة) | = | 799.5 * 0.06 دولار أمريكي | |
47.97 دولار أمريكي في اليوم * 30 = 1439.10 دولار أمريكي | |||||
20 مليون عملية كتابة إجمالية يوميًا | = | 20,000 عملية كتابة بدون تكلفة + (19.98 مليون عملية كتابة بسعر 0.18 دولار أمريكي لكل 100,000 عملية) | = | 199.8 * $0.18 | |
35.96 دولار أمريكي في اليوم * 30 = 1078.80 دولار أمريكي | |||||
20 مليون عملية حذف إجمالية يوميًا | = | 20,000 عملية حذف بدون تكلفة + (19,980,000 عملية حذف بسعر 0.02 دولار أمريكي لكل 100,000 عملية حذف) | = | 199.8 * $0.02 | |
$4.00 / day * 30 = $120.00 |
تكاليف التخزين/الاتصال بالشبكات | |||||||
---|---|---|---|---|---|---|---|
إجمالي التكلفة الشهرية = 313.62 دولار أمريكي في الشهر | |||||||
20 كيلوبايت لكل مستخدم نشط يوميًا من معدل نقل البيانات اليومي * مليون مستخدم نشط يوميًا | = | 20 غيغابايت من حركة الخروج اليومية * 30 | = | نقل بيانات خارج الشبكة شهريًا بسعة 600 غيغابايت | |||
10 غيغابايت من حركة الخروج بدون تكلفة + (590 غيغابايت من حركة الخروج * 0.12 دولار أمريكي/غيغابايت) = 70.80 دولار أمريكي في الشهر | |||||||
مساحة تخزين الرسائل اليومية 15 كيلوبايت / المستخدِمون النشطون يوميًا + مساحة تخزين 3 كيلوبايت / عملية تثبيت1 | = | 45 كيلوبايت من مساحة التخزين / المستخدم النشط يوميًا * مليون مستخدم نشط يوميًا | = | 45 غيغابايت من مساحة التخزين اليومية / المستخدم النشط يوميًا * 30 | = | استخدام مساحة تخزين تبلغ 1350 غيغابايت شهريًا | |
(مساحة تخزين مجانية بسعة 1 غيغابايت) + (1349 غيغابايت * 0.18 دولار أمريكي/غيغابايت) = 242.82 دولار أمريكي في الشهر |
1 بما أنّنا نفترض أنّ المستخدمين النشطين يوميًا يمثّلون% 10 من إجمالي عمليات تثبيت التطبيق، يمثّل هذا الرقم إجمالي عدد المستخدمين الذين ثبَّتوا تطبيقك.
من مزايا نموذج الفوترة Cloud Firestore التي يجب أخذها في الاعتبار أنّك تدفع فقط مقابل ما تستخدمه. نتيجةً لذلك، قد تزيد قيمة فاتورتك أو تنخفض حسب عدد المستخدمين النشطين يوميًا.
التقسيم: الاستخدام الخاضع للفوترة حسب مهمة المستخدم
بالنسبة إلى مثال تطبيق الدردشة، تكون بنية البيانات على النحو التالي:
users/{userId}
: سجلات المستخدمينgroups/{groupId}
— المحادثات بين مستخدمَين أو أكثرmessages/{messageId}
: كل رسالة في محادثة
تخزين البيانات
لاحتساب تكاليف تخزين بيانات التطبيق، يجب تطبيق الافتراضات التالية بشأن أحجام المستندات:
التجميع | حجم المستند (أثناء النقل) | حجم المستند (على القرص)* |
---|---|---|
المستخدمون | 1 كيلوبايت | 3 كيلوبايت |
مجموعات | 0.5 كيلوبايت | 1.5 كيلوبايت |
الرسائل | 0.25 كيلوبايت | 0.75 كيلوبايت |
*يتضمّن احتساب الحجم هذا فهارس لحقول الرسائل، ولكنّه يفترض أنّ الفهرسة غير مفعّلة لمحتوى الرسائل.
يخزّن التطبيق أيضًا الرسائل التي تم إنشاؤها منذ مدة تصل إلى ثلاثة أشهر فقط، وذلك لخفض تكاليف التخزين.
لمزيد من المعلومات حول احتساب تكاليف التخزين، يُرجى الاطّلاع على التعرّف على عمليات احتساب حجم التخزين.
العمليات
عادةً ما يكمل المستخدمون المهام الشائعة التالية في التطبيق:
- الاطّلاع على قائمة المحادثات: يفتح المستخدمون الشاشة الرئيسية للتطبيق ويطّلعون على قائمة بالمحادثات (الجماعية والمباشرة) مرتّبة حسب أحدث رسالة تم نشرها.
- قراءة الرسائل في محادثة: يختار المستخدمون المحادثات من الشاشة الرئيسية ويقرأون الرسائل الأخيرة فيها.
- إرسال رسالة إلى محادثة: يرسل المستخدمون رسائل إلى المحادثات (الجماعية أو المباشرة).
إجمالي العمليات المقدَّرة التي يجريها التطبيق النموذجي في Cloud Firestore لمهام المستخدم الثلاث النموذجية هي كما يلي:
- عدد القراءات: (5 * 10) + (30) = 80 قراءة / مستخدم / يوم
- عمليات الكتابة: (10 * 2) = 20 عملية كتابة / مستخدم / يوم
- الخروج من الشبكة: (50 * 0.25 كيلوبايت) + (30 * 0.25 كيلوبايت) = 20 كيلوبايت / مستخدم / يوم
- مساحة التخزين: (20 * 0.75 كيلوبايت) = 15 كيلوبايت / مستخدم / يوم
إجمالي الاستخدام حسب مهمة المستخدم
اختَر كل مهمة من مهام المستخدمين للاطّلاع على وصف كامل وتفاصيل عن تكاليف العمليات ومساحة التخزين والشبكات في التطبيق.
الاطّلاع على قائمة المحادثات
تحمّل الشاشة الرئيسية للتطبيق آخر 25 محادثة، ما يؤدي إلى تحمّل تكاليف قراءة 25 مستندًا. لنفترض أنّ مستخدمًا نشطًا يفتح التطبيق 5 مرات في اليوم، ما يؤدي إلى إجمالي 125 قراءة لكل مستخدم كل يوم. ومع ذلك، يمكن أن تقلّل الاستعلامات الأكثر كفاءة، مثل الاستعلام الوارد في المثال التالي، من هذا الحمل.
في المثال أدناه، نحدّ من طلب البحث ليشمل المحادثات الجديدة فقط باستخدام طابع زمني لكل عملية جلب ناجحة يخزّنها التطبيق:
db.collection('groups') .where('participants', 'array-contains', 'user123') .where('lastUpdated', '>', lastFetchTimestamp) .orderBy('lastUpdated', 'desc') .limit(25)
لنفترض أنّ هناك 10 محادثات معدَّلة في المتوسط في كل مرة يتحقّق فيها المستخدم من التطبيق. لا يؤدي طلب البحث هذا إلا إلى 10 عمليات قراءة للمستندات.
قراءة الرسائل في محادثة
ينقر المستخدمون على سلاسل المحادثات من الشاشة الرئيسية للاطّلاع على الرسائل الحديثة، ويتم تحميل آخر 50 رسالة عند التحميل الأوّلي.
لنفترض أنّ المستخدم العادي ينفّذ هذا الإجراء 5 مرات يوميًا (مرة واحدة في كل مرة يفتح فيها الشاشة الرئيسية)، ما يؤدي إلى إجمالي 250 عملية قراءة لكل مستخدم يوميًا. يمكننا أيضًا حصر الاستعلام على الرسائل الجديدة منذ آخر وقت تم فيه استرجاع البيانات:
db.collection('groups') .doc('group234') .collection('messages') .where('sentTime', '>', lastFetchTimestamp) .orderBy('sentTime', 'desc') .limit(50)
لنفترض أنّ المستخدم يتلقّى حوالي 30 رسالة يوميًا في جميع المحادثات. بما أنّك حصرت طلب البحث في استرداد الرسائل الجديدة، سيؤدي ذلك إلى استرداد 30 رسالة فقط في اليوم.
إرسال رسالة إلى محادثة
يمكن للمستخدمين إرسال رسائل إلى المشاركين الآخرين بعد الانضمام إلى محادثة. لنفترض أنّ المستخدم النشط يرسل حوالي 10 رسائل في اليوم.
ستؤدي كل رسالة مُرسَلة إلى كتابة مستندَين: أحدهما في المجموعة الفرعية messages
للمحادثة والآخر في المستند الرئيسي للمحادثة لتعديل الطابع الزمني lastUpdated
والبيانات الوصفية الأخرى.
يُرجى العِلم أنّه تم احتساب تكلفة قراءة هذه الرسائل في الرحلات الأخرى، لذا لا تأخذ المجموعات أدناه في الاعتبار سوى تكلفة الكتابة هذه.
الاستخدام الذي تتم فوترته لمهام المشرف
بصفتك مالكًا أو مشرفًا على تطبيق، من المحتمل أنّك تريد إنشاء تقارير من بيانات تطبيقك. على سبيل المثال، قد تحتاج إلى الاحتفاظ بعدد يومي للرسائل التي يرسلها المستخدمون. يمكنك إجراء ذلك باستخدام عملية تجميع count()
لمجموعة messages
.
بالنسبة إلى طلبات البحث الخاصة بالتجميع، مثل count()
، يتم تحصيل رسوم قراءة مستند واحد
لكل مجموعة من ما يصل إلى 1,000 إدخال فهرس مطابق لطلب البحث. يؤدي تنفيذ عملية التجميع اليومي هذه إلى إضافة الرسوم الشهرية التالية:
صغير
(50 ألف عملية تثبيت)
مقابل 50,000 عملية تثبيت للتطبيق (5,000 مستخدم نشط يوميًا): 0.0009 دولار أمريكي شهريًا
5,000 مستخدم نشط * 10 رسائل جديدة لكل مستخدم = 50,000 مستند رسالة جديدة في اليوم
50,000 مستند تم احتسابه / 1,000 تطابق فهرس لكل رسوم قراءة = 50 قراءة
50 قراءة في اليوم × 30 يومًا = 1,500 قراءة في الشهر
1,500 قراءة شهريًا * 0.06/100,000 سعر القراءة = 0.0009 دولار أمريكي شهريًا
متوسطة
(مليون عملية تثبيت)
مقابل مليون عملية تثبيت للتطبيق (100,000 مستخدم نشط يوميًا): 0.018 دولار أمريكي شهريًا
100,000 مستخدم نشط × 10 رسائل جديدة لكل مستخدم = 1,000,000 مستند رسالة جديد في اليوم
1,000,000 مستند تم احتسابه / 1,000 تطابق فهرس لكل رسوم قراءة = 1,000 قراءة
1,000 قراءة في اليوم * 30 يومًا = 30,000 قراءة في الشهر
30,000 قراءة في الشهر * 0.06 دولار أمريكي لكل 100,000 قراءة = 0.018 دولار أمريكي في الشهر
كبير
(10 مليون عملية تثبيت)
مقابل 10,000,000 عملية تثبيت للتطبيق (1,000,000 مستخدم نشط يوميًا): 0.18 دولار أمريكي
مليون مستخدم نشط * 10 رسائل جديدة لكل مستخدم = 10 ملايين مستند رسالة جديدة في اليوم
10,000,000 مستند تم احتسابه / 1,000 تطابق فهرس لكل رسوم قراءة = 10,000 قراءة
10,000 قراءة في اليوم * 30 يومًا = 300,000 قراءة في الشهر
300,000 قراءة في الشهر * 0.06 دولار أمريكي لكل 100,000 قراءة = 0.18 دولار أمريكي في الشهر
المزايا المضمّنة: خدمات بدون أي تكلفة لتطبيقك
في حين أنّ عمليات Cloud Firestore ومساحة التخزين وعرض النطاق الترددي للشبكة تُعدّ جميعها من الاستخدامات الخاضعة للفوترة، يمكنك أيضًا الاستفادة من مجموعة متنوّعة من المزايا الأخرى بدون أي تكلفة إضافية. ننصحك بالاطّلاع على الخدمات التالية التي لا تتوفّر بدون تكلفة أثناء مقارنة Cloud Firestore بخيارات قواعد البيانات الأخرى:
- الوصول المباشر إلى العميل: يمكن الوصول إلى Cloud Firestore مباشرةً من رمز العميل باستخدام حِزم SDK الأصلية. وهذا يعني أنّه ليس عليك إنشاء خادم لواجهة برمجة التطبيقات وتشغيله لربط أجهزة العميل الجوّالة بقاعدة البيانات.
- موازنة التحميل: بما أنّ Cloud Firestore يتم توسيعه تلقائيًا للتعامل مع عدد الزيارات إلى قاعدة البيانات، لن تحتاج إلى تشغيل أداة موازنة التحميل.
- مدة تشغيل الخادم: تعمل قواعد بيانات Cloud Firestore على خوادم Google Cloud، ما يوفّر مدة تشغيل شهرية تزيد عن% 99.
- المصادقة: يمكنك المصادقة على عدد غير محدود من المستخدمين بسهولة وأمان باستخدام Firebase Authentication. Firebase Authentication يتكامل مباشرةً مع Cloud Firestore، لذا لن تحتاج إلى تشغيل خدمة مصادقة خاصة بك.
- الإشعارات الفورية: إرسال الرسائل والإشعارات باستخدام Cloud Messaging
- منتجات Firebase الأخرى: يمكنك دمج منتجات Firebase الأخرى بدون أي تكلفة، بما في ذلك "اختبار A/B" و"إحصاءات Google" وCrashlytics و"مراقبة الأداء" و"الإعداد عن بُعد". مزيد من المعلومات حول منتجات Firebase الأخرى وأسعار Firebase