ดูตัวอย่างราคา Cloud Firestore

ใช้ตัวอย่างแอปแชทพื้นฐานในโลกแห่งความเป็นจริงเพื่อประเมินการใช้งานและต้นทุน Cloud Firestore ของคุณ นี่ไม่ใช่การประมาณการที่แน่นอน แต่ช่วยให้คุณเข้าใจวิธีเรียกเก็บเงินการใช้งาน Cloud Firestore ได้ดีขึ้น

ภาพรวม: ต้นทุนตามระดับการใช้งาน

เพื่ออธิบายค่าใช้จ่ายทั่วไป ลองพิจารณาตัวอย่างแอปแชทที่ผู้ใช้สามารถเริ่มแชทกับผู้เข้าร่วมตั้งแต่สองคนขึ้นไป ผู้ใช้สามารถดูการแชทที่ใช้งานอยู่ในรายการ อ่านข้อความ และส่งข้อความได้ สำหรับตัวอย่างนี้ เรากำลังใช้การกำหนดราคาสำหรับหลายภูมิภาคในอเมริกาเหนือ (โดยเฉพาะ nam5 )

สมมติฐาน

พิจารณาสมมติฐานต่อไปนี้เกี่ยวกับการใช้งานและการจัดเก็บข้อมูล:

  • ผู้ใช้ที่ใช้งานรายวัน (DAU) คือ 10% ของการติดตั้งแอปทั้งหมด คุณสามารถประมาณค่าใช้จ่ายรายวันได้โดยใช้การประมาณการคร่าวๆ ของผู้ใช้ที่ใช้งานรายวัน (DAU) ผู้ใช้เหล่านี้คือผู้ใช้ที่เปิดและใช้แอปของคุณอย่างแข็งขันในวันที่กำหนด ซึ่งโดยปกติแล้วจะเป็นส่วนย่อยเล็กๆ ของการติดตั้งแอปทั้งหมดของคุณ สำหรับการคำนวณด้านล่าง เราประมาณ DAU ไว้ที่ 10% ของจำนวนการติดตั้งแอปทั้งหมด
  • ขนาดเอกสารค่อนข้างเล็ก ดู ตารางด้านล่าง สำหรับรายละเอียดขนาดเอกสารตามประเภท
  • ข้อมูลจะถูกเก็บไว้เพียงสามเดือนเท่านั้น ข้อความในแอปแชทตัวอย่างจะถูกเก็บไว้เป็นระยะเวลาสามเดือนเท่านั้น เพื่อพิจารณาการดำเนินการลบ การคำนวณด้านล่างจะแสดงการลบรายวันสำหรับการเขียนทุกๆ วัน
  • การประมาณการต้นทุนเหล่านี้สะท้อนถึงต้นทุนส่วนใหญ่ของแอปตัวอย่าง แต่ไม่ใช่ทั้งหมด เราได้รับผิดชอบค่าใช้จ่ายส่วนใหญ่ของแอปโดยการคำนวณการดำเนินงาน พื้นที่จัดเก็บผู้ใช้และข้อความ และทางออกสำหรับงานของผู้ใช้บ่อยที่สุดตามที่ระบุไว้ในคู่มือนี้ อย่างไรก็ตาม คุณอาจต้องคำนึงถึงค่าใช้จ่ายเพิ่มเติม ทั้งนี้ขึ้นอยู่กับโครงสร้างแอปและความต้องการข้อมูลของคุณ ใช้ตัวอย่างนี้เพื่อเป็นแนวทางในการคำนวณ แต่โปรดดู หน้าราคา เพื่อดูคำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับต้นทุน Cloud Firestore

สำหรับรายละเอียดการดำเนินการตามงานของผู้ใช้ โปรดดูส่วน รายละเอียด: การใช้งานที่เรียกเก็บเงินตามงานของผู้ใช้

เล็ก
(การติดตั้ง 50,000 ครั้ง)

สำหรับการติดตั้งแอป 50,000 ครั้ง (ผู้ใช้งานรายวัน 5,000 ราย): $12.14/เดือน

ค่าใช้จ่ายในการอ่าน/เขียน
ค่าใช้จ่ายรายเดือนทั้งหมด = $11.10/เดือน
อ่านรวม 400,000 ครั้งต่อวัน = การอ่านแบบไม่มีค่าใช้จ่าย 50K + (350K อ่านที่ $0.06/100K) = 3.5 * 0.06 ดอลลาร์
$0.21 / วัน * 30 = $6.30
การเขียนทั้งหมด 100,000 ครั้งต่อวัน = 20K เขียนแบบไม่มีค่าใช้จ่าย + (80K เขียนที่ $0.18/100K) = .8 * 0.18 ดอลลาร์
0.14 USD / วัน * 30 = 4.20 USD
การลบรายวันทั้งหมด 100,000 ครั้ง = 20K การลบแบบไม่มีค่าใช้จ่าย + (80K ลบที่ $0.02/100K) = .8 * 0.02 ดอลลาร์
0.02 USD / วัน * 30 = 0.60 USD
ต้นทุนการจัดเก็บ/เครือข่าย
ค่าใช้จ่ายรายเดือนทั้งหมด = 1.04 USD/เดือน
20KB / DAU ของการออกรายวัน * 5K DAU = 100MB ของการเข้าออกรายวัน * 30 = เครือข่ายขาออก 3GB ต่อเดือน
ขาออกที่ไม่มีค่าใช้จ่าย 3 GB = ไม่มีค่าใช้จ่าย 1
พื้นที่จัดเก็บข้อความรายวัน 15KB / DAU + พื้นที่จัดเก็บ 3KB / ติดตั้ง 2 = พื้นที่จัดเก็บ 45KB / DAU * 5K DAU = พื้นที่เก็บข้อมูลรายวัน 225MB / DAU * 30 = การใช้งานพื้นที่เก็บข้อมูล 6.75GB ต่อเดือน
พื้นที่จัดเก็บแบบไม่มีค่าใช้จ่าย 1GB + (5.75 * 0.18 USD) = 1.04 USD / เดือน

1 เครือข่ายขาออกขนาด 10GB ต่อเดือนไม่มีค่าใช้จ่ายสำหรับ Cloud Firestore
2 เนื่องจากสมมติฐานของเราคือ DAU คิดเป็น 10% ของการติดตั้งแอปทั้งหมด จำนวนนี้จึงถือเป็นจำนวนผู้ใช้ทั้งหมดที่ติดตั้งแอปของคุณ

ปานกลาง
(การติดตั้ง 1 ล้านครั้ง)

สำหรับการติดตั้งแอป 1,000,000 ครั้ง (ผู้ใช้งานรายวัน 100,000 ราย): $292.02/เดือน

ค่าใช้จ่ายในการอ่าน/เขียน
ค่าใช้จ่ายรายเดือนทั้งหมด = $261.90/เดือน
อ่านทั้งหมด 8 ล้านครั้งต่อวัน = การอ่านแบบไม่มีค่าใช้จ่าย 50K + (7.95M อ่านที่ $0.06/100K) = 79.5 * 0.06 ดอลลาร์
$4.77 / วัน * 30 = $143.10
การเขียนทั้งหมด 2 ล้านครั้งต่อวัน = 20K เขียนแบบไม่มีค่าใช้จ่าย + (1.98M เขียนที่ $0.18/100K) = 19.8 * 0.18 ดอลลาร์
$3.56 / วัน * 30 = $106.80
ลบทั้งหมด 2 ล้านครั้งต่อวัน = 20K การลบแบบไม่มีค่าใช้จ่าย + (1.98M ลบที่ $0.02/100K) = 19.8 * 0.02 ดอลลาร์
$0.40 / วัน * 30 = $12.00
ต้นทุนการจัดเก็บ/เครือข่าย
ค่าใช้จ่ายรายเดือนทั้งหมด = $30.12/เดือน
20KB / DAU ของการออกรายวัน * 100K DAU = ทางเข้าออกรายวัน 2GB * 30 = เครือข่ายขาออก 60GB ต่อเดือน
ขาออกแบบไม่มีค่าใช้จ่าย 10 GB + (ขาออก 50GB * 0.12 USD/GB) = 6.00 USD / เดือน
พื้นที่จัดเก็บข้อความรายวัน 15KB / DAU + พื้นที่จัดเก็บ 3KB / ติดตั้ง 1 = พื้นที่จัดเก็บ 45KB / DAU * 100,000 DAU = พื้นที่เก็บข้อมูลรายวัน 4.5GB / DAU * 30 = การใช้งานพื้นที่เก็บข้อมูล 135GB ต่อเดือน
พื้นที่จัดเก็บแบบไม่มีค่าใช้จ่าย 1GB + (134GB * 0.18 USD/GB) = 24.12 USD / เดือน

1 เนื่องจากสมมติฐานของเราคือ DAU คิดเป็น 10% ของการติดตั้งแอปทั้งหมด จำนวนนี้จึงถือเป็นจำนวนผู้ใช้ทั้งหมดที่ติดตั้งแอปของคุณ

ใหญ่
(การติดตั้ง 10 ล้านครั้ง)

สำหรับการติดตั้งแอป 10,000,000 ครั้ง (ผู้ใช้งานรายวัน 1,000,000 ราย): 2951.52 ดอลลาร์

ค่าใช้จ่ายในการอ่าน/เขียน
ค่าใช้จ่ายรายเดือนทั้งหมด = รวม: $2637.90/เดือน
อ่านรวม 80 ล้านครั้งต่อวัน = การอ่านแบบไม่มีค่าใช้จ่าย 50K + (79.95M อ่านที่ $0.06/100K) = 799.5 * 0.06 ดอลลาร์
$47.97 / วัน * 30 = $1439.10
การเขียนทั้งหมด 20M ต่อวัน = 20K เขียนแบบไม่มีค่าใช้จ่าย + (19.98M เขียนที่ $0.18/100K) = 199.8 * 0.18 ดอลลาร์
$35.96 / วัน * 30 = $1,078.80
ลบทั้งหมด 20 ล้านครั้งต่อวัน = 20K การลบแบบไม่มีค่าใช้จ่าย + (19.98M ลบที่ $0.02/100K) = 199.8 * 0.02 ดอลลาร์
$4.00 / วัน * 30 = $120.00
ต้นทุนการจัดเก็บ/เครือข่าย
ค่าใช้จ่ายรายเดือนทั้งหมด = $313.62/เดือน
20KB / DAU ของข้อมูลออกรายวัน * 1M DAU = ทางเข้าออกรายวัน 20GB * 30 = เครือข่ายขาออก 600GB ต่อเดือน
ขาออกแบบไม่มีค่าใช้จ่าย 10 GB + (ขาออก 590GB * 0.12 USD/GB) = 70.80 USD / เดือน
พื้นที่จัดเก็บข้อความรายวัน 15KB / DAU + พื้นที่จัดเก็บ 3KB / ติดตั้ง 1 = พื้นที่จัดเก็บ 45KB / DAU * 1M DAU = พื้นที่เก็บข้อมูลรายวัน 45GB / DAU * 30 = การใช้งานพื้นที่เก็บข้อมูล 1350GB ต่อเดือน
(พื้นที่จัดเก็บที่ไม่มีค่าใช้จ่าย 1GB) + (1349GB * 0.18 USD/GB) = 242.82 USD / เดือน

1 เนื่องจากสมมติฐานของเราคือ DAU คิดเป็น 10% ของการติดตั้งแอปทั้งหมด จำนวนนี้จึงถือเป็นจำนวนผู้ใช้ทั้งหมดที่ติดตั้งแอปของคุณ

ประโยชน์ของรูปแบบการเรียกเก็บเงิน Cloud Firestore ที่คุ้มค่าแก่การพิจารณาก็คือ คุณจะจ่ายเฉพาะส่วนที่คุณใช้เท่านั้น ด้วยเหตุนี้ การเรียกเก็บเงินของคุณจึงอาจเพิ่มขึ้นและลดลงตามจำนวน DAU ของคุณ

รายละเอียด: การใช้งานที่เรียกเก็บเงินตามงานของผู้ใช้

สำหรับแอปแชทตัวอย่างของเรา โครงสร้างข้อมูลจะเป็นดังนี้:

  • users/{userId} — บันทึกผู้ใช้
  • groups/{groupId} — แชทระหว่างผู้ใช้ 2 คนขึ้นไป
    • messages/{messageId} — แต่ละข้อความในการแชท

การจัดเก็บข้อมูล

ในการคำนวณต้นทุนพื้นที่จัดเก็บข้อมูลสำหรับการจัดเก็บข้อมูลของแอป ให้ใช้สมมติฐานต่อไปนี้เกี่ยวกับขนาดเอกสาร:

ของสะสม ขนาดเอกสาร (อยู่ระหว่างการขนส่ง) ขนาดเอกสาร (บนดิสก์)*
ผู้ใช้ 1กิโลไบต์ 3กิโลไบต์
กลุ่ม 0.5KB 1.5KB
ข้อความ 0.25KB 0.75KB

*การคำนวณขนาดนี้รวมดัชนีสำหรับช่องข้อความ แต่ถือว่าการจัดทำดัชนีถูกปิดใช้งานสำหรับเนื้อหาข้อความ

แอพนี้ยังจัดเก็บเฉพาะข้อความที่มีอายุสูงสุดสามเดือนเท่านั้น เพื่อลดต้นทุนการจัดเก็บ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการคำนวณต้นทุนพื้นที่เก็บข้อมูล โปรดดูที่ การทำความเข้าใจการคำนวณขนาดพื้นที่เก็บข้อมูล

การดำเนินงาน

โดยทั่วไปแล้วผู้ใช้จะทำงานทั่วไปต่อไปนี้ในแอป:

การดำเนินการโดยประมาณทั้งหมดของแอปตัวอย่างใน Cloud Firestore สำหรับงานผู้ใช้ทั่วไปสามงานมีดังนี้:

  • อ่าน: (5 * 10) + (30) = 80 อ่าน / ผู้ใช้ / วัน
  • เขียน: (10 * 2) = 20 เขียน / ผู้ใช้ / วัน
  • เครือข่ายขาออก : (50 * 0.25KB) + (30 * 0.25KB) = 20KB / ผู้ใช้ / วัน
  • พื้นที่เก็บข้อมูล : (20 * 0.75KB) = 15 KB / ผู้ใช้ / วัน

การใช้งานทั้งหมดตามงานของผู้ใช้

เลือกงานของผู้ใช้แต่ละงานเพื่อดูคำอธิบายทั้งหมดและรายละเอียดการดำเนินงาน พื้นที่จัดเก็บ และต้นทุนเครือข่ายในแอป

ดูรายการแชท

หน้าจอหลักของแอปโหลดการแชทล่าสุด 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,000 ครั้ง)

สำหรับการติดตั้งแอป 50,000 ครั้ง (5,000 DAU): 0.0009 USD/เดือน

ผู้ใช้ที่ใช้งานอยู่ 5,000 ราย * 10 ข้อความใหม่ต่อผู้ใช้ = เอกสารข้อความใหม่ 50,000 ฉบับต่อวัน

นับเอกสารได้ 50,000 ฉบับ / จับคู่ดัชนี 1,000 รายการต่อค่าบริการอ่าน = 50 การอ่าน

50 อ่านต่อวัน * 30 วัน = 1,500 อ่านต่อเดือน

การอ่าน 1,500 ครั้งต่อเดือน * .06/100,000 ราคาการอ่าน = 0.0009 USD ต่อเดือน

ปานกลาง
(การติดตั้ง 1 ล้านครั้ง)

สำหรับการติดตั้งแอป 1,000,000 ครั้ง (ผู้ใช้งานรายวัน 100,000 ราย): 0.018 USD/เดือน

ผู้ใช้ที่ใช้งานอยู่ 100,000 ราย * 10 ข้อความใหม่ต่อผู้ใช้ = เอกสารข้อความใหม่ 1,000,000 ครั้งต่อวัน

นับเอกสาร 1,000,000 ฉบับ / การจับคู่ดัชนี 1,000 รายการต่อค่าบริการอ่าน = 1,000 การอ่าน

1,000 อ่านต่อวัน * 30 วัน = 30,000 อ่านต่อเดือน

การอ่าน 30,000 ครั้งต่อเดือน * .06/100,000 ราคาการอ่าน = 0.018 USD ต่อเดือน

ใหญ่
(การติดตั้ง 10 ล้านครั้ง)

สำหรับการติดตั้งแอป 10,000,000 ครั้ง (ผู้ใช้งานรายวัน 1,000,000 ราย): 0.18 USD

ผู้ใช้ที่ใช้งานอยู่ 1,000,000 ราย * 10 ข้อความใหม่ต่อผู้ใช้ = เอกสารข้อความใหม่ 10,000,000 ครั้งต่อวัน

นับเอกสารได้ 10,000,000 ฉบับ / การจับคู่ดัชนี 1,000 รายการต่อค่าบริการการอ่าน = การอ่าน 10,000 ครั้ง

10,000 อ่านต่อวัน * 30 วัน = 300,000 อ่านต่อเดือน

การอ่าน 300,000 ครั้งต่อเดือน * .06/100000 ราคาการอ่าน = 0.18 USD ต่อเดือน

สิทธิประโยชน์ที่มีให้: บริการที่ไม่มีค่าใช้จ่ายสำหรับแอปของคุณ

แม้ว่าการดำเนินการ การจัดเก็บ และแบนด์วิดท์เครือข่ายของ Cloud Firestore ล้วนถือเป็นการใช้งานที่เรียกเก็บเงินได้ แต่คุณยังได้รับสิทธิประโยชน์อื่นๆ มากมายโดยไม่มีค่าใช้จ่ายเพิ่มเติม พิจารณาบริการต่อไปนี้ที่ไม่มีค่าใช้จ่ายเมื่อคุณเปรียบเทียบ Cloud Firestore กับตัวเลือกฐานข้อมูลอื่นๆ:

  • การเข้าถึงไคลเอ็นต์โดยตรง: Cloud Firestore เข้าถึงได้โดยตรงจากรหัสไคลเอ็นต์ของคุณโดยใช้ SDK ดั้งเดิมของเรา ซึ่งหมายความว่าคุณไม่จำเป็นต้องสร้างและเรียกใช้เซิร์ฟเวอร์ API เพื่อเชื่อมต่อไคลเอนต์มือถือของคุณกับฐานข้อมูล
  • โหลดบาลานซ์: เนื่องจาก Cloud Firestore ปรับขนาดโดยอัตโนมัติเพื่อรองรับการรับส่งข้อมูลไปยังฐานข้อมูลของคุณ คุณจึงไม่จำเป็นต้องเรียกใช้โหลดบาลานเซอร์
  • เวลาทำงานของเซิร์ฟเวอร์: ฐานข้อมูล Cloud Firestore ทำงานบนเซิร์ฟเวอร์ Google Cloud ซึ่งให้ เวลาทำงานต่อเดือนมากกว่า 99%
  • การรับรองความถูกต้อง: รับรองความถูกต้องผู้ใช้ไม่จำกัดอย่างง่ายดายและปลอดภัยด้วย Firebase Authentication Firebase Authentication ผสานรวมกับ Cloud Firestore โดยตรง ดังนั้นคุณไม่จำเป็นต้องเรียกใช้บริการการตรวจสอบสิทธิ์ของคุณเอง
  • การแจ้งเตือนแบบพุช: ส่งข้อความและการแจ้งเตือนด้วย Cloud Messaging
  • ผลิตภัณฑ์ Firebase อื่นๆ: ผสานรวมผลิตภัณฑ์ Firebase อื่นๆ โดยไม่มีค่าใช้จ่าย รวมถึงการทดสอบ A/B, การวิเคราะห์, Crashlytics, การตรวจสอบประสิทธิภาพ และการกำหนดค่าระยะไกล เรียนรู้เพิ่มเติมเกี่ยวกับ ผลิตภัณฑ์ Firebase อื่นๆ และ ราคา Firebase