เลือกฐานข้อมูล: Cloud Firestore หรือ Realtime Database

Firebase มีฐานข้อมูลเอกสารแบบคลาวด์ที่ไคลเอ็นต์เข้าถึงได้ 2 ประเภท เราขอแนะนำให้ลูกค้าใหม่เริ่มต้นด้วย Cloud Firestore

  • Cloud Firestore เป็นฐานข้อมูลเอกสารที่ใช้งานร่วมกับ JSON ได้ในระดับองค์กรที่แนะนำ ซึ่งได้รับความไว้วางใจจากนักพัฒนาซอฟต์แวร์กว่า 250,000 คน ซึ่งเหมาะสำหรับแอปพลิเคชันที่มีโมเดลข้อมูลแบบ Rich Data ที่ต้องสามารถค้นหา ปรับขนาด และพร้อมใช้งานสูง รวมถึงการซิงค์ไคลเอ็นต์ที่มีเวลาในการตอบสนองต่ำและการเข้าถึงข้อมูลแบบออฟไลน์

  • Realtime Database คือฐานข้อมูล JSON ของ Firebase แบบคลาสสิก รูปแบบข้อมูลนี้เหมาะสำหรับแอปพลิเคชันที่มีรูปแบบข้อมูลที่เรียบง่ายซึ่งต้องมีการค้นหาที่ง่ายดายและการซิงค์ที่มีเวลาในการตอบสนองต่ำและความสามารถในการปรับขนาดได้จำกัด

สิ่งสำคัญอื่นๆ ที่ควรพิจารณามีอะไรบ้าง

หลังจากพิจารณาถึงข้อควรพิจารณาหลักก่อนหน้านี้แล้ว คุณอาจพร้อมที่จะเลือกฐานข้อมูล หากคุณยังพิจารณาข้อดีและข้อเสียอยู่ ส่วนนี้จะกล่าวถึงความแตกต่างอื่นๆ ระหว่าง Cloud Firestore กับ Realtime Database

โมเดลข้อมูล

ทั้ง Realtime Database และ Cloud Firestore เป็นฐานข้อมูล NoSQL

Cloud Firestore [ แนะนำ ] Realtime Database
จัดเก็บข้อมูลเป็นคอลเล็กชันเอกสาร
  • ข้อมูลแบบง่ายจัดเก็บไว้ในเอกสารได้ง่ายๆ ซึ่งคล้ายกับ JSON มาก
  • ข้อมูลเชิงลําดับชั้นที่ซับซ้อนจะจัดระเบียบได้ง่ายขึ้นเมื่อใช้คอลเล็กชันย่อยภายในเอกสาร
  • ต้องมีการแปลงรูปแบบข้อมูลให้เป็นรูปแบบปกติน้อยลงและการปรับให้ข้อมูลแบนน้อยลง

ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบข้อมูล Cloud Firestore

จัดเก็บข้อมูลเป็นต้นไม้ JSON ขนาดใหญ่ต้นเดียว
  • ข้อมูลแบบง่ายจัดเก็บได้ง่ายมาก
  • ข้อมูลแบบลําดับชั้นที่ซับซ้อนจะจัดระเบียบในระดับที่ใหญ่ขึ้นได้ยาก

ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบข้อมูล Realtime Database

การสนับสนุนแบบเรียลไทม์และออฟไลน์

ทั้ง 2 รายการมี SDK แบบเรียลไทม์ที่เน้นอุปกรณ์เคลื่อนที่ และทั้ง 2 รายการรองรับพื้นที่เก็บข้อมูลในเครื่องสําหรับแอปที่พร้อมใช้งานแบบออฟไลน์

Cloud Firestore [ แนะนำ ] Realtime Database
การรองรับแบบออฟไลน์สำหรับไคลเอ็นต์ Apple, Android และเว็บ การสนับสนุนแบบออฟไลน์สำหรับไคลเอ็นต์ Apple และ Android

การตรวจหาบุคคลในบ้าน

การทราบว่าลูกค้าออนไลน์หรือออฟไลน์อยู่อาจมีประโยชน์ Firebase Realtime Database สามารถบันทึกสถานะการเชื่อมต่อของลูกค้าและแสดงข้อมูลอัปเดตทุกครั้งที่สถานะการเชื่อมต่อของลูกค้ามีการเปลี่ยนแปลง

Cloud Firestore [ แนะนำ ] Realtime Database
ไม่รองรับโดยค่าเริ่มต้น คุณสามารถใช้การรองรับการแสดงข้อมูลในสถานะของ Realtime Database โดยการซิงค์ Cloud Firestore กับ Realtime Database โดยใช้ Cloud Functions ดูการสร้างการแสดงข้อมูลในสถานะของ Cloud Firestore รองรับการตรวจหาบุคคลในบ้าน

การค้นหา

ดึงข้อมูล จัดเรียง และกรองข้อมูลจากฐานข้อมูลผ่านคําค้นหา

Cloud Firestore [ แนะนำ ] Realtime Database
คำค้นหาที่จัดทําดัชนีซึ่งมีการจัดเรียงและกรองแบบผสม
  • คุณสามารถต่อกรองและรวมการกรองและการจัดเรียงในพร็อพเพอร์ตี้ในข้อความค้นหาเดียวได้
  • การค้นหาเป็นแบบตื้น: แสดงเฉพาะเอกสารในคอลเล็กชันหรือกลุ่มคอลเล็กชันหนึ่งๆ เท่านั้น และไม่แสดงข้อมูลคอลเล็กชันย่อย
  • การค้นหาต้องแสดงผลเอกสารทั้งฉบับเสมอ
  • ระบบจะจัดทำดัชนีคำค้นหาโดยค่าเริ่มต้น: ประสิทธิภาพการค้นหาจะสัมพันธ์กับขนาดของชุดผลลัพธ์ ไม่ใช่ชุดข้อมูล
การค้นหาแบบเจาะลึกที่มีฟีเจอร์การจัดเรียงและกรองแบบจํากัด
  • การค้นหาจะจัดเรียงหรือกรองพร็อพเพอร์ตี้ได้ แต่ต้องเลือกอย่างใดอย่างหนึ่ง
  • การค้นหาเป็นแบบเจาะลึกโดยค่าเริ่มต้น ซึ่งจะแสดงผลทั้งซับต้นไม้เสมอ
  • การค้นหาสามารถเข้าถึงข้อมูลในระดับรายละเอียดที่ต้องการได้ ไปจนถึงค่าของโหนดใบแต่ละโหนดในต้นไม้ JSON
  • การค้นหาไม่จำเป็นต้องใช้ดัชนี แต่ประสิทธิภาพของการค้นหาบางอย่างจะลดลงเมื่อชุดข้อมูลมีขนาดใหญ่ขึ้น

การเขียนและธุรกรรม

Cloud Firestore [ แนะนำ ] Realtime Database
การดำเนินการเขียนและธุรกรรมขั้นสูง
  • เขียนการดำเนินการกับข้อมูลผ่านการดำเนินการตั้งค่าและการอัปเดต รวมถึงการเปลี่ยนรูปแบบขั้นสูง เช่น อาร์เรย์และโอเปอเรเตอร์ตัวเลข
  • ธุรกรรม สามารถอ่านและเขียนข้อมูลจากส่วนใดก็ได้ในฐานข้อมูล
การดำเนินการเขียนและธุรกรรมพื้นฐาน
  • เขียนข้อมูลผ่านการดำเนินการตั้งค่าและการอัปเดต
  • ธุรกรรมเป็นข้อมูลย่อยในซับต้นไม้ข้อมูลหนึ่งๆ

ความน่าเชื่อถือและประสิทธิภาพ

Cloud Firestore [ แนะนำ ] Realtime Database
Cloud Firestore เป็นโซลูชันระดับภูมิภาคและหลายภูมิภาคที่ปรับขนาดโดยอัตโนมัติ
  • โซลูชันที่มีเวลาในการตอบสนองต่ำ โดยเวลาในการตอบสนองทั่วไปไม่เกิน 30 มิลลิวินาที
  • จัดเก็บข้อมูลของคุณในศูนย์ข้อมูลหลายแห่งในภูมิภาคต่างๆ เพื่อให้มั่นใจว่าสามารถปรับขนาดได้ทั่วโลกและมีความน่าเชื่อถือสูง
  • พร้อมให้บริการในการกำหนดค่าระดับภูมิภาคหรือหลายภูมิภาคทั่วโลก
อ่านเพิ่มเติมเกี่ยวกับCloud Firestoreลักษณะประสิทธิภาพและความน่าเชื่อถือในข้อตกลงระดับการให้บริการ
Realtime Database เป็นโซลูชันระดับภูมิภาค
  • พร้อมให้บริการในการกําหนดค่าระดับภูมิภาค ฐานข้อมูลจะจํากัดอยู่ที่ความพร้อมให้บริการระดับโซนภายในภูมิภาค
  • เวลาในการตอบสนองต่ำมาก โดยมีเวลาในการตอบสนองทั่วไปไม่เกิน 10 มิลลิวินาที เป็นตัวเลือกที่เหมาะสําหรับการซิงค์สถานะบ่อยครั้ง
อ่านเพิ่มเติมเกี่ยวกับRealtime Databaseลักษณะประสิทธิภาพและความน่าเชื่อถือในข้อตกลงระดับการให้บริการ

ระยะเวลาทำงาน

Cloud Firestore [ แนะนำ ] Realtime Database
ประสิทธิภาพการทํางานที่มีเวลาทํางานสูงมาก
  • ประสิทธิภาพเวลาทํางานโดยทั่วไป 99.999%
  • หากความพร้อมให้บริการมีความสำคัญสูงสุด เช่น ในแอปอีคอมเมิร์ซ ให้ใช้ Cloud Firestore
ประสิทธิภาพการทํางานที่มีเวลาทํางานสูง
  • ประสิทธิภาพเวลาทํางานโดยทั่วไป 99.95%

ความสามารถในการปรับขนาด

Cloud Firestore [ แนะนำ ] Realtime Database
การปรับขนาดเป็นแบบอัตโนมัติ
  • ปรับขนาดโดยอัตโนมัติทั้งหมด ขีดจํากัดการปรับขนาดอยู่ที่ประมาณ 1 ล้านการเชื่อมต่อพร้อมกันและการเขียน 10,000 ครั้งต่อวินาที เราวางแผนที่จะเพิ่มขีดจำกัดเหล่านี้ในอนาคต
  • มีขีดจํากัดอัตราการเขียนไปยังเอกสารหรือดัชนีแต่ละรายการ
การปรับขนาดต้องใช้การแยกข้อมูล
  • ปรับขนาดเป็นการเชื่อมต่อพร้อมกันประมาณ 200,000 ครั้งและการเขียน 1,000 ครั้งต่อวินาทีในฐานข้อมูลเดียว หากต้องการปรับขนาดมากกว่านั้น คุณต้องแบ่งข้อมูลออกเป็นส่วนๆ ในฐานข้อมูลหลายแห่ง
  • ไม่มีขีดจํากัดในเครื่องเกี่ยวกับอัตราการเขียนข้อมูลแต่ละรายการ

ความปลอดภัย

Cloud Firestore [ แนะนำ ] Realtime Database
กฎแบบไม่ทํางานแบบตามลําดับชั้นซึ่งรวมการให้สิทธิ์เข้ากับการตรวจสอบ
  • อ่านและเขียนจาก SDK บนอุปกรณ์เคลื่อนที่ที่ปลอดภัยโดย Cloud Firestore Security Rules
  • อ่านและเขียนจาก SDK ของเซิร์ฟเวอร์ที่ปลอดภัยโดย Identity and Access Management (IAM)
  • กฎจะไม่ทํางานตามลําดับ เว้นแต่คุณจะใช้ไวลด์การ์ด
  • กฎสามารถจํากัดการค้นหาได้: หากผลการค้นหาอาจมีข้อมูลที่ผู้ใช้ไม่มีสิทธิ์เข้าถึง การค้นหาทั้งหมดจะดำเนินการไม่สำเร็จ
ภาษากฎแคสคาดที่แยกการให้สิทธิ์และการตรวจสอบ
  • อ่านและเขียนจาก SDK บนอุปกรณ์เคลื่อนที่ที่ปลอดภัยโดย Realtime Database Security Rules
  • อ่านและเขียนกฎตามลําดับชั้น
  • คุณต้องตรวจสอบข้อมูลแยกต่างหากโดยใช้กฎ validate

ราคา

โซลูชันทั้ง 2 รายการมีให้บริการในแพ็กเกจราคา Spark และ Blaze

Cloud Firestore [ แนะนำ ] Realtime Database
ระบบจะเรียกเก็บเงินตามการดำเนินการในฐานข้อมูล (อ่าน เขียน ลบ) เป็นหลัก และตามอัตราที่ต่ำลงสำหรับแบนด์วิดท์และพื้นที่เก็บข้อมูล

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

อ่านเพิ่มเติมเกี่ยวกับแพ็กเกจราคา Cloud Firestore

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

อ่านเพิ่มเติมเกี่ยวกับแพ็กเกจราคา Realtime Database

การใช้ Cloud Firestore และ Realtime Database

คุณใช้ทั้ง 2 ฐานข้อมูลภายในแอปหรือโปรเจ็กต์ Firebase เดียวกันได้ ฐานข้อมูล NoSQL ทั้ง 2 ประเภทสามารถจัดเก็บข้อมูลประเภทเดียวกันและคลังไคลเอ็นต์ทํางานในลักษณะที่คล้ายกัน โปรดคำนึงถึงความแตกต่างที่ระบุไว้ก่อนหน้านี้หากคุณตัดสินใจใช้ทั้ง 2 ฐานข้อมูลในแอป

ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ที่มีให้ใช้งานทั้งใน Realtime Database และ Cloud Firestore

พร้อมเลือกฐานข้อมูลแล้วหรือยัง

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