เลือกฐานข้อมูล: 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 [ แนะนำ ] Realtime Database
จัดเก็บข้อมูลเป็นคอลเล็กชันของเอกสาร
  • จัดเก็บข้อมูลแบบง่ายในเอกสารได้ง่าย ซึ่งคล้ายกับ JSON มาก
  • จัดระเบียบข้อมูลที่ซับซ้อนและเป็นลำดับชั้นได้ง่ายขึ้นในระดับใหญ่โดยใช้คอลเล็กชันย่อยภายในเอกสาร
  • ต้องมีการยกเลิกการทำข้อมูลให้เป็นบรรทัดเดียวและการทำให้ข้อมูลแบนราบน้อยลง

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

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

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

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

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

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

การมีบุคคลอยู่

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

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

การค้นหา

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

Cloud Firestore [ แนะนำ ] Realtime Database
การค้นหาที่จัดทำดัชนีด้วยการจัดเรียงและการกรองแบบผสม
  • คุณสามารถเชื่อมโยงตัวกรองและรวมการกรองและการจัดเรียงในพร็อพเพอร์ตี้ในการค้นหาครั้งเดียวได้
  • การค้นหาเป็นแบบตื้น ซึ่งจะแสดงผลเฉพาะเอกสารในคอลเล็กชัน หรือกลุ่มคอลเล็กชันที่เฉพาะเจาะจง และไม่แสดงผลข้อมูลคอลเล็กชันย่อย
  • การค้นหาต้องแสดงผลเอกสารทั้งหมดเสมอ
  • การค้นหาจะจัดทำดัชนีโดยค่าเริ่มต้น ประสิทธิภาพการค้นหาจะแปรผันตามขนาดของชุดผลลัพธ์ ไม่ใช่ชุดข้อมูล
การค้นหาแบบลึกที่มีฟีเจอร์การจัดเรียงและการกรองที่จำกัด
  • การค้นหาสามารถจัดเรียง หรือ กรองในพร็อพเพอร์ตี้ได้ แต่จะทำทั้ง 2 อย่างพร้อมกันไม่ได้
  • การค้นหาเป็นแบบลึกโดยค่าเริ่มต้น ซึ่งจะแสดงผลทั้งซับทรีเสมอ
  • การค้นหาสามารถเข้าถึงข้อมูลได้ทุกระดับความละเอียดลงไปจนถึงค่าโหนดลีฟแต่ละรายการในต้นไม้ 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
การปรับขนาดเป็นไปโดยอัตโนมัติ
  • ปรับขนาดโดยอัตโนมัติอย่างสมบูรณ์ ไม่มีข้อจำกัดเกี่ยวกับการเชื่อมต่อพร้อมกันหรืออัตราการเขียนฐานข้อมูลโดยรวมต่อวินาที
  • มีข้อจำกัดเกี่ยวกับอัตราการเขียนเอกสารหรือดัชนีแต่ละรายการ
การปรับขนาดต้องใช้การแบ่งพาร์ติชัน
  • ปรับขนาดเป็นการเชื่อมต่อพร้อมกันประมาณ 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 รองรับงบประมาณและการแจ้งเตือนรายเดือน เพื่อหลีกเลี่ยงการใช้จ่ายมากกว่าที่คุณต้องการ

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

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

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

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

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

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

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

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