Firebase จะเรียกเก็บเงินสำหรับข้อมูลที่คุณจัดเก็บไว้ในฐานข้อมูลและการรับส่งข้อมูลเครือข่ายขาออกทั้งหมดที่เลเยอร์เซสชัน (เลเยอร์ 5) ของโมเดล OSI พื้นที่เก็บข้อมูลถูกเรียกเก็บเงิน $5 สำหรับแต่ละ GB/เดือน ประเมินเป็นรายวัน การเรียกเก็บเงินไม่ได้รับผลกระทบจากตำแหน่งของฐานข้อมูลของคุณ ทราฟฟิกขาออกรวมถึงโอเวอร์เฮดการเชื่อมต่อและการเข้ารหัสจากการทำงานของฐานข้อมูลทั้งหมดและข้อมูลที่ดาวน์โหลดผ่านการอ่านฐานข้อมูล ทั้งการอ่านและเขียนฐานข้อมูลอาจนำไปสู่ค่าใช้จ่ายในการเชื่อมต่อในใบเรียกเก็บเงินของคุณ การรับส่งข้อมูลทั้งหมดเข้าและออกจากฐานข้อมูลของคุณ รวมถึงการดำเนินการที่ถูกปฏิเสธโดยกฎความปลอดภัย นำไปสู่ค่าใช้จ่ายที่เรียกเก็บได้
ตัวอย่างทั่วไปของการเข้าชมที่เรียกเก็บเงิน ได้แก่:
- ข้อมูลที่ดาวน์โหลด: เมื่อไคลเอ็นต์ได้รับข้อมูลจากฐานข้อมูลของคุณ Firebase จะเรียกเก็บเงินสำหรับข้อมูลที่ดาวน์โหลด โดยทั่วไปแล้ว ค่านี้คิดเป็นค่าใช้จ่ายแบนด์วิธจำนวนมาก แต่นั่นไม่ใช่ปัจจัยเดียวในการเรียกเก็บเงินของคุณ
- โอเวอร์เฮดโปรโตคอล: การรับส่งข้อมูลเพิ่มเติมบางอย่างระหว่างเซิร์ฟเวอร์และไคลเอ็นต์จำเป็นต่อการสร้างและดูแลเซสชัน การรับส่งข้อมูลนี้อาจรวมถึง: โอเวอร์เฮดโปรโตคอลเรียลไทม์ของ Firebase Realtime Database, โอเวอร์เฮดของ WebSocket และโอเวอร์เฮด HTTP ทั้งนี้ขึ้นอยู่กับโปรโตคอลพื้นฐาน ทุกครั้งที่สร้างการเชื่อมต่อ โอเวอร์เฮดนี้เมื่อรวมกับโอเวอร์เฮดการเข้ารหัส SSL ใดๆ จะทำให้เกิดค่าใช้จ่ายในการเชื่อมต่อ แม้ว่านี่จะไม่ใช่แบนด์วิดท์จำนวนมากสำหรับคำขอเดียว แต่ก็สามารถเป็นส่วนสำคัญในการเรียกเก็บเงินของคุณได้หากเพย์โหลดของคุณมีขนาดเล็กหรือคุณทำการเชื่อมต่อสั้น ๆ บ่อย ๆ
- ค่าใช้จ่ายในการเข้ารหัส SSL: มีค่าใช้จ่ายที่เกี่ยวข้องกับค่าใช้จ่ายในการเข้ารหัส SSL ที่จำเป็นสำหรับการเชื่อมต่อที่ปลอดภัย โดยเฉลี่ยแล้ว ค่าใช้จ่ายนี้จะอยู่ที่ประมาณ 3.5KB สำหรับการจับมือครั้งแรก และประมาณสิบไบต์สำหรับส่วนหัวของบันทึก TLS ในแต่ละข้อความขาออก สำหรับแอปส่วนใหญ่ นี่เป็นเปอร์เซ็นต์เล็กน้อยของค่าบริการของคุณ อย่างไรก็ตาม สิ่งนี้อาจกลายเป็นเปอร์เซ็นต์ที่มากหากกรณีเฉพาะของคุณต้องการการจับมือ SSL จำนวนมาก ตัวอย่างเช่น อุปกรณ์ที่ไม่รองรับ ตั๋วเซสชัน TLS อาจต้องใช้การเชื่อมต่อ SSL จำนวนมาก
- ข้อมูลคอนโซล Firebase: แม้ว่าโดยปกติแล้วจะไม่ใช่ส่วนสำคัญของค่าใช้จ่ายฐานข้อมูลเรียลไทม์ แต่ Firebase จะเรียกเก็บเงินสำหรับข้อมูลที่คุณอ่านและเขียนจากคอนโซล Firebase
ประมาณการการใช้งานที่เรียกเก็บเงินของคุณ
หากต้องการดูการเชื่อมต่อฐานข้อมูลเรียลไทม์และการใช้ข้อมูลในปัจจุบัน ให้ตรวจสอบแท็บ การใช้งาน ในคอนโซล Firebase คุณสามารถตรวจสอบการใช้งานในช่วงบิลปัจจุบัน 30 วันที่ผ่านมา หรือ 24 ชั่วโมงที่ผ่านมา
Firebase แสดงสถิติการใช้งานสำหรับเมตริกต่อไปนี้:
- การเชื่อมต่อ: จำนวนของการเชื่อมต่อตามเวลาจริงที่เปิดพร้อมกันกับฐานข้อมูลของคุณ ซึ่งรวมถึงการเชื่อมต่อตามเวลาจริงต่อไปนี้: WebSocket, การหยั่งเสียงแบบยาว และเหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์ HTML ไม่รวมถึงคำขอ RESTful
- ที่เก็บข้อมูล: จำนวนข้อมูลที่เก็บไว้ในฐานข้อมูลของคุณ ซึ่งไม่รวมถึงโฮสติ้ง Firebase หรือข้อมูลที่จัดเก็บผ่านผลิตภัณฑ์ Firebase อื่นๆ
- ดาวน์โหลด: ไบต์ทั้งหมดที่ดาวน์โหลดจากฐานข้อมูลของคุณ รวมถึงโปรโตคอลและโอเวอร์เฮดการเข้ารหัส
- โหลด: กราฟนี้แสดงจำนวนฐานข้อมูลของคุณที่ใช้งาน การประมวลผลคำขอ ในช่วง 1 นาทีที่กำหนด คุณอาจพบปัญหาด้านประสิทธิภาพเมื่อฐานข้อมูลของคุณเข้าใกล้ 100%
เพิ่มประสิทธิภาพการใช้งาน
มีวิธีปฏิบัติที่ดีที่สุดสองสามข้อที่คุณสามารถใช้เพื่อเพิ่มประสิทธิภาพการใช้ฐานข้อมูลและต้นทุนแบนด์วิธของคุณ
- ใช้ SDK ดั้งเดิม: หากเป็นไปได้ ให้ใช้ SDK ที่สอดคล้องกับแพลตฟอร์มของแอปของคุณ แทน REST API SDK รักษาการเชื่อมต่อแบบเปิด ลดต้นทุนการเข้ารหัส SSL ซึ่งโดยทั่วไปจะรวมกับ REST API
- ตรวจหาจุดบกพร่อง: หากแบนด์วิธของคุณแพงเกินคาด ให้ตรวจสอบว่าแอปของคุณไม่ได้ซิงค์ข้อมูลเพิ่มหรือซิงค์บ่อยกว่าที่คุณตั้งใจไว้ในตอนแรก หากต้องการระบุปัญหา ให้ใช้ เครื่องมือสร้างโปรไฟล์ เพื่อวัดการดำเนินการอ่านของคุณและเปิดการบันทึกการแก้ไขจุดบกพร่องใน Android , Objective-C และ Web SDK ตรวจสอบพื้นหลังและกระบวนการซิงค์ในแอปเพื่อให้แน่ใจว่าทุกอย่างทำงานตามที่คุณต้องการ
- ลดการเชื่อมต่อ: หากเป็นไปได้ ให้พยายามปรับแบนด์วิธการเชื่อมต่อให้เหมาะสม คำขอ REST ขนาดเล็กที่ใช้บ่อยอาจมีค่าใช้จ่ายสูงกว่าการเชื่อมต่อแบบต่อเนื่องเพียงครั้งเดียวโดยใช้ SDK ดั้งเดิม หากคุณใช้ REST API ให้พิจารณาใช้ HTTP keep-alive หรือ server-sent events ซึ่งสามารถลดต้นทุนจากการจับมือ SSL
- ใช้ตั๋วเซสชัน TLS: ลดค่าใช้จ่ายในการเข้ารหัส SSL สำหรับการเชื่อมต่อที่กลับมาทำงานต่อโดยการออก ตั๋วเซสชัน TLS สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณต้องการเชื่อมต่อกับฐานข้อมูลบ่อยครั้งและปลอดภัย
- การสืบค้นด้วยดัชนี: การทำดัชนีข้อมูลของคุณ ช่วยลดแบนด์วิธทั้งหมดที่คุณใช้สำหรับการสืบค้น ซึ่งมีประโยชน์สองเท่าในการลดค่าใช้จ่ายและเพิ่มประสิทธิภาพของฐานข้อมูล ใช้เครื่องมือสร้างโปรไฟล์เพื่อ ค้นหาข้อความค้นหาที่ไม่ได้จัดทำดัชนี ในฐานข้อมูลของคุณ
- ปรับ Listener ของคุณให้เหมาะสม: เพิ่มการสืบค้นเพื่อจำกัดข้อมูลที่การดำเนินการฟังของคุณส่งคืน และใช้ Listener ที่ดาวน์โหลดเฉพาะการอัปเดตข้อมูลเท่านั้น ตัวอย่างเช่น
on()
แทนที่จะเป็นonce()
นอกจากนี้ วางผู้ฟังของคุณให้ไกลที่สุดเท่าที่จะทำได้เพื่อจำกัดจำนวนข้อมูลที่พวกเขาจะซิงค์ - ลดค่าใช้จ่ายในการจัดเก็บ: เรียกใช้งานการล้างข้อมูลเป็นระยะและลดข้อมูลที่ซ้ำกันในฐานข้อมูลของคุณ
- ใช้กฎ: ป้องกันการดำเนินการใด ๆ ที่อาจมีค่าใช้จ่ายสูงและไม่ได้รับอนุญาตบนฐานข้อมูลของคุณ ตัวอย่างเช่น การใช้กฎความปลอดภัยของฐานข้อมูลเรียลไทม์ของ Firebase สามารถหลีกเลี่ยงสถานการณ์ที่ผู้ใช้ที่ประสงค์ร้ายดาวน์โหลดฐานข้อมูลทั้งหมดของคุณซ้ำๆ เรียนรู้เพิ่มเติมเกี่ยวกับ การใช้กฎฐานข้อมูลเรียลไทม์ของ Firebase
แผนการเพิ่มประสิทธิภาพที่ดีที่สุดสำหรับแอปของคุณขึ้นอยู่กับกรณีการใช้งานเฉพาะของคุณ แม้ว่านี่จะไม่ใช่แนวทางปฏิบัติที่ดีที่สุดที่ครบถ้วนสมบูรณ์ แต่คุณสามารถค้นหาคำแนะนำและเคล็ดลับเพิ่มเติมจากผู้เชี่ยวชาญ Firebase ใน ช่อง Slack ของเราหรือบน Stack Overflow