Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

Firebase นำเสนอโซลูชันฐานข้อมูลบนระบบคลาวด์ที่ไคลเอนต์เข้าถึงได้ 2 โซลูชันที่รองรับการซิงค์ข้อมูลแบบเรียลไทม์:

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

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

Firebase แนะนำฐานข้อมูลใด

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

โซลูชั่นทั้งสองนำเสนอ:

  • SDK ที่คำนึงถึงไคลเอ็นต์เป็นอันดับแรก โดยไม่มีเซิร์ฟเวอร์ให้ปรับใช้และบำรุงรักษา
  • การอัปเดตตามเวลาจริง
  • เทียร์ฟรี แล้วจ่ายตามที่คุณใช้

ข้อควรพิจารณาที่สำคัญ

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

บทบาทของฐานข้อมูล
แอปของฉันใช้ฐานข้อมูลสำหรับ...
การซิงโครไนซ์ข้อมูลเบื้องต้นด้วยการสอบถามพื้นฐาน
หากคุณไม่ต้องการการสืบค้น การเรียงลำดับ และการทำธุรกรรมขั้นสูง เราขอแนะนำ Realtime Database
การสืบค้น การเรียงลำดับ และธุรกรรมขั้นสูง
หากคุณต้องการการโต้ตอบที่ซับซ้อนกับข้อมูลของคุณ เช่น ในแอปอีคอมเมิร์ซ เราขอแนะนำ Cloud Firestore
การดำเนินการกับข้อมูล
การใช้ฐานข้อมูลของแอปของฉันดูเหมือนว่า...
ข้อมูลไม่กี่ GB หรือน้อยกว่าที่เปลี่ยนแปลงบ่อย
หากแอปของคุณจะส่งสตรีมการอัปเดตเล็กๆ น้อยๆ เช่น ในแอปไวท์บอร์ดดิจิทัล เราขอแนะนำ ฐานข้อมูลเรียลไทม์
ข้อมูลหลายร้อย GB ถึง TB ที่อ่านบ่อยกว่าที่มีการเปลี่ยนแปลง
สำหรับชุดข้อมูลขนาดใหญ่มากและเมื่อจำเป็นต้องดำเนินการเป็นชุดบ่อยๆ เราขอแนะนำ Cloud Firestore
แบบจำลองข้อมูล
ฉันชอบจัดโครงสร้างข้อมูลของฉันเป็น...
ต้นไม้ JSON อย่างง่าย
สำหรับข้อมูลที่ไม่มีโครงสร้าง JSON เราขอแนะนำ Realtime Database
เอกสารที่จัดเป็นคอลเลกชัน
สำหรับเอกสารที่มีโครงสร้างและคอลเลกชัน เราขอแนะนำ Cloud Firestore
ความพร้อมใช้งาน
ความต้องการความพร้อมของฉันคือ...
รับประกันความพร้อมใช้งานสูงมากถึง 99.999%
หากความพร้อมใช้งานมีความสำคัญสูงสุด เช่น ในแอปอีคอมเมิร์ซ เราขอแนะนำ Cloud Firestore
รับประกันเวลาทำงานอย่างน้อย 99.95%
เมื่อยอมรับความพร้อมใช้งานที่สูงมากแต่ไม่ถึงระดับวิกฤต เราขอแนะนำ Cloud Firestore หรือ Realtime Database
แบบสอบถามออฟไลน์เกี่ยวกับข้อมูลในเครื่อง
แอปของฉันจะต้องดำเนินการค้นหาบนอุปกรณ์ที่มีการเชื่อมต่อจำกัดหรือไม่มีเลย...
บ่อย.
สำหรับความสามารถในการสืบค้นที่ซับซ้อนบนข้อมูลในเครื่องเมื่อผู้ใช้ออฟไลน์ เราขอแนะนำ Cloud Firestore
น้อยครั้งหรือไม่เคยเลย
หากคุณคาดหวังให้ผู้ใช้ออนไลน์อย่างสม่ำเสมอ เราขอแนะนำ Cloud Firestore หรือ Realtime Database
จำนวนอินสแตนซ์ของฐานข้อมูล
ในแต่ละโครงการของฉัน ฉันต้องใช้...
ฐานข้อมูลจำนวนมาก เช่น ฐานข้อมูลของลูกค้ารายใหญ่แต่ละราย
เนื่องจากช่วยให้คุณเพิ่มฐานข้อมูลหลายฐานข้อมูลในโครงการ Firebase เดียวได้ เราจึงขอแนะนำ Realtime Database
เพียงฐานข้อมูลเดียว
หากคุณต้องการฐานข้อมูลเดียว เราขอแนะนำ Cloud Firestore หรือ Realtime Database

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

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

แบบจำลองข้อมูล

ทั้งฐานข้อมูลเรียลไทม์และ Cloud Firestore เป็นฐานข้อมูล NoSQL

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

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

เก็บข้อมูลเป็นชุดเอกสาร
  • ข้อมูลธรรมดาจัดเก็บง่ายในเอกสาร ซึ่งคล้ายกับ JSON มาก
  • ข้อมูลเชิงลำดับชั้นที่ซับซ้อนนั้นง่ายต่อการจัดระเบียบตามขนาด โดยใช้การรวบรวมย่อยภายในเอกสาร
  • ต้องการ denormalization น้อยลงและแบนข้อมูล

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

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

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

ฐานข้อมูลเรียลไทม์ Cloud Firestore
การสนับสนุนแบบออฟไลน์สำหรับลูกค้า Apple และ Android การสนับสนุนแบบออฟไลน์สำหรับไคลเอนต์ Apple, Android และเว็บ

การมีอยู่

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

ฐานข้อมูลเรียลไทม์ Cloud Firestore
รองรับการแสดงตน ไม่รองรับโดยกำเนิด คุณสามารถใช้ประโยชน์จากการรองรับการแสดงตนของฐานข้อมูลเรียลไทม์ได้โดยการซิงค์ Cloud Firestore และฐานข้อมูลเรียลไทม์โดยใช้ฟังก์ชันคลาวด์ ดู สถานะการสร้างใน Cloud Firestore

กำลังสอบถาม

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

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

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

ฐานข้อมูลเรียลไทม์ Cloud Firestore
การดำเนินการเขียนและการทำธุรกรรมขั้นพื้นฐาน การดำเนินการเขียนและธุรกรรมขั้นสูง

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

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

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

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

ความปลอดภัย

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

ราคา

โซลูชันทั้งสองมีอยู่ใน แผนราคา Spark และ Blaze

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

อ่านเพิ่มเติมเกี่ยวกับ แผนการกำหนดราคา Realtime Database

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

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

อ่านเพิ่มเติมเกี่ยวกับ แผนการกำหนดราคาของ Cloud Firestore

การใช้ Cloud Firestore และฐานข้อมูลเรียลไทม์

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

เรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัติที่มีอยู่ในทั้ง Realtime Database และ Cloud Firestore

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

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