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

Firebase จะเรียกเก็บเงินสำหรับข้อมูลที่คุณจัดเก็บไว้ในฐานข้อมูลและการจราจรของข้อมูลในเครือข่ายขาออกทั้งหมดที่เลเยอร์เซสชัน (เลเยอร์ 5) ของโมเดล OSI ระบบจะเรียกเก็บค่าพื้นที่เก็บข้อมูลในราคา $5 ต่อ GB/เดือน โดยประเมินทุกวัน ตำแหน่งของฐานข้อมูลจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนี้ การรับส่งข้อมูลขาออกประกอบด้วยค่าใช้จ่ายในการเชื่อมต่อและการเข้ารหัสจากการดำเนินงานของฐานข้อมูลทั้งหมดและข้อมูลที่ดาวน์โหลดผ่านการอ่านฐานข้อมูล ทั้งการอ่านและเขียนฐานข้อมูลอาจทำให้เกิดค่าใช้จ่ายการเชื่อมต่อในใบเรียกเก็บเงินของคุณ การเข้าชมทั้งหมดที่เข้าและออกจากฐานข้อมูล รวมถึงการดำเนินการที่กฎความปลอดภัยปฏิเสธ จะทำให้เกิดค่าใช้จ่ายที่เรียกเก็บได้

ตัวอย่างการเข้าชมที่มีการเรียกเก็บเงินโดยทั่วไป ได้แก่

  • ข้อมูลที่ดาวน์โหลด: เมื่อไคลเอ็นต์ได้รับข้อมูลจากฐานข้อมูลของคุณ Firebase จะเรียกเก็บเงินสำหรับข้อมูลที่ดาวน์โหลด โดยปกติแล้วจะเป็นค่าใช้จ่ายจากแบนด์วิดท์ แต่ไม่ใช่ปัจจัยเดียวในการเรียกเก็บเงิน
  • ค่าใช้จ่ายของโปรโตคอล: จำเป็นต้องมีการรับส่งข้อมูลเพิ่มเติมระหว่างเซิร์ฟเวอร์และไคลเอ็นต์เพื่อสร้างและบำรุงรักษาเซสชัน การเข้าชมนี้อาจประกอบด้วยโอเวอร์เฮดโปรโตคอลแบบเรียลไทม์ของ Firebase, โอเวอร์เฮด WebSocket และโอเวอร์เฮดส่วนหัว HTTP โดยขึ้นอยู่กับโปรโตคอลที่สำคัญ ทุกครั้งที่มีการเชื่อมต่อ ค่าใช้จ่ายส่วนนี้รวมกับค่าใช้จ่ายในการเข้ารหัส SSL จะนำมาคำนวณเป็นค่าใช้จ่ายในการเชื่อมต่อ แม้ว่าจำนวนแบนด์วิดท์จะไม่มากนักสำหรับคำขอเดียว แต่ก็อาจเป็นค่าใช้จ่ายจำนวนมากในการเรียกเก็บเงินของคุณ หากเพย์โหลดของคุณมีขนาดเล็ก หรือมีการเชื่อมต่อที่สั้นหรือบ่อยครั้ง
  • โอเวอร์เฮดการเข้ารหัส SSL: จะมีค่าใช้จ่ายที่เกี่ยวข้องกับค่าใช้จ่ายในการเข้ารหัส SSL ที่จำเป็นสำหรับการเชื่อมต่อที่ปลอดภัย โดยเฉลี่ยแล้วจะมีค่าใช้จ่ายประมาณ 3.5 KB สำหรับแฮนด์เชคเริ่มต้น และประมาณ 10 ไบต์สำหรับส่วนหัวของระเบียน TLS ในข้อความขาออกแต่ละข้อความ สำหรับแอปส่วนใหญ่ จะเป็นเงินจำนวนเล็กน้อยจากการเรียกเก็บเงิน อย่างไรก็ตาม กรณีนี้อาจเป็นเปอร์เซ็นต์สูงหากกรณีของคุณต้องใช้แฮนด์เชค SSL จำนวนมาก ตัวอย่างเช่น อุปกรณ์ที่ไม่รองรับตั๋วเซสชัน TLS อาจต้องใช้แฮนด์เชคการเชื่อมต่อ SSL จำนวนมาก
  • ข้อมูลคอนโซล Firebase: แม้ว่ามักจะไม่ใช่ค่าใช้จ่ายส่วนสำคัญของ Realtime Database แต่ Firebase จะเรียกเก็บเงินสำหรับข้อมูลที่คุณอ่านและเขียนจากคอนโซล Firebase

ประมาณการใช้งานที่เรียกเก็บเงิน

หากต้องการดูการเชื่อมต่อและปริมาณการใช้อินเทอร์เน็ตของ Realtime Database ในปัจจุบัน โปรดดูแท็บการใช้งานในคอนโซล Firebase คุณสามารถตรวจสอบการใช้งานในช่วงเวลาที่เรียกเก็บเงินปัจจุบัน 30 วันที่ผ่านมา หรือ 24 ชั่วโมงที่ผ่านมา

Firebase จะแสดงสถิติการใช้งานสำหรับเมตริกต่อไปนี้

  • การเชื่อมต่อ: จำนวนการเชื่อมต่อแบบเรียลไทม์พร้อมกันที่กำลังเปิดอยู่กับฐานข้อมูล การเชื่อมต่อแบบเรียลไทม์ ได้แก่ WebSocket กิจกรรมการหยั่งสัญญาณที่ยาวนาน และเหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์ HTML โดยไม่ได้รวมคำขอ RESTful
  • พื้นที่เก็บข้อมูล: ปริมาณข้อมูลที่จัดเก็บไว้ในฐานข้อมูล แต่ไม่รวมโฮสติ้ง Firebase หรือข้อมูลที่จัดเก็บผ่านผลิตภัณฑ์อื่นๆ ของ Firebase
  • การดาวน์โหลด: ไบต์ทั้งหมดที่ดาวน์โหลดจากฐานข้อมูลของคุณ รวมถึงโปรโตคอลและส่วนเกินในการเข้ารหัส
  • โหลด: กราฟนี้แสดงจำนวนฐานข้อมูลที่ใช้งานอยู่และประมวลผลคำขอในช่วง 1 นาทีที่กำหนด คุณอาจพบปัญหาด้านประสิทธิภาพ เนื่องจากฐานข้อมูลใกล้ครบ 100%

เพิ่มประสิทธิภาพการใช้งาน

มีแนวทางปฏิบัติแนะนำ 2-3 ข้อที่คุณสามารถปรับใช้เพื่อเพิ่มประสิทธิภาพการใช้งานฐานข้อมูลและลดต้นทุนแบนด์วิดท์

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

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