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

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

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

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

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

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

โมเดลข้อมูล

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

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

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

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

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

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

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

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

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

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

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

การสอบถาม

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

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

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

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

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

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

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

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

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

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

ความปลอดภัย

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

ราคา

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

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

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

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

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

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

ใช้ทั้ง Cloud Firestore และ Realtime Database

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

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

พร้อมเลือกฐานข้อมูลแล้วใช่ไหม

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