ทำความเข้าใจการเรียกเก็บเงินฐานข้อมูลเรียลไทม์

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 ขนาดเล็กบ่อยครั้งอาจมีค่าใช้จ่ายสูงกว่าการเชื่อมต่อต่อเนื่องเพียงครั้งเดียวโดยใช้ Native SDK หากคุณใช้ REST API ให้ลองใช้ เหตุการณ์ HTTP Keep-Alive หรือที่เซิร์ฟเวอร์ส่ง ซึ่งสามารถลดต้นทุนจากแฮนด์เชค SSL ได้
  • ใช้ตั๋วเซสชัน TLS: ลดต้นทุนค่าใช้จ่ายในการเข้ารหัส SSL ในการเชื่อมต่อที่กลับมาทำงานต่อโดยการออก ตั๋วเซสชัน TLS สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณต้องการเชื่อมต่อกับฐานข้อมูลบ่อยครั้งและปลอดภัย
  • การสืบค้นแบบดัชนี: การจัดทำดัชนีข้อมูลของคุณ จะลดแบนด์วิดท์ทั้งหมดที่คุณใช้สำหรับการสืบค้น ซึ่งมีประโยชน์สองเท่าในการลดต้นทุนและเพิ่มประสิทธิภาพฐานข้อมูลของคุณ ใช้เครื่องมือสร้างโปรไฟล์เพื่อ ค้นหาแบบสอบถามที่ไม่ได้จัดทำดัชนี ในฐานข้อมูลของคุณ
  • เพิ่มประสิทธิภาพ Listener ของคุณ: เพิ่มการสืบค้นเพื่อจำกัดข้อมูลที่การดำเนินการ Listener ของคุณส่งคืน และใช้ Listener ที่ดาวน์โหลดการอัปเดตไปยังข้อมูลเท่านั้น ตัวอย่างเช่น on() แทนที่จะเป็น once() นอกจากนี้ วางผู้ฟังของคุณให้อยู่ในเส้นทางให้ไกลที่สุดเพื่อจำกัดปริมาณข้อมูลที่พวกเขาจะซิงค์
  • ลดต้นทุนพื้นที่จัดเก็บ: เรียกใช้งานล้างข้อมูลเป็นระยะและลดข้อมูลที่ซ้ำกันในฐานข้อมูลของคุณ
  • ใช้กฎ: ป้องกันการดำเนินการที่อาจมีค่าใช้จ่ายสูงและไม่ได้รับอนุญาตในฐานข้อมูลของคุณ ตัวอย่างเช่น การใช้กฎความปลอดภัยของฐานข้อมูล Firebase Realtime สามารถหลีกเลี่ยงสถานการณ์ที่ผู้ใช้ที่เป็นอันตรายดาวน์โหลดฐานข้อมูลทั้งหมดของคุณซ้ำๆ เรียนรู้เพิ่มเติมเกี่ยวกับ การใช้กฎฐานข้อมูลเรียลไทม์ของ Firebase

แผนการเพิ่มประสิทธิภาพที่ดีที่สุดสำหรับแอปของคุณขึ้นอยู่กับกรณีการใช้งานเฉพาะของคุณ แม้ว่าแนวทางปฏิบัติที่ดีที่สุดจะไม่ใช่รายการที่ครอบคลุมทั้งหมด แต่คุณสามารถดูคำแนะนำและเคล็ดลับเพิ่มเติมจากผู้เชี่ยวชาญ Firebase ได้ใน ช่องทาง Slack ของเราหรือใน Stack Overflow