Cloud Firestore และ Firebase Realtime Database แตกต่างกันอย่างไร


252

Google เพิ่งเปิดตัว Cloud Firestore ซึ่งเป็นฐานข้อมูลเอกสารใหม่สำหรับแอพ

ฉันอ่านเอกสารแล้วแต่ฉันไม่เห็นความแตกต่างมากมายระหว่าง Firestore กับ Firebase DB

ประเด็นหลักคือ Firestore ใช้เอกสารและคอลเล็กชันที่อนุญาตให้ใช้การสืบค้นได้ง่ายเมื่อเทียบกับ Firebase ซึ่งเป็นฐานข้อมูล noSQL ดั้งเดิมที่มีฐาน JSON

ฉันต้องการทราบเพิ่มเติมเกี่ยวกับความแตกต่างของพวกเขาหรือประเพณีหรือว่า Firestore เพิ่งมาแทนที่ Firebase DB หรือไม่?


1
การอ่านเร็วขึ้นใน Firestore การเขียนเร็วขึ้นบนฐานข้อมูลแบบเรียลไทม์ Firebase
DragonFire

คำตอบ:


380

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

แต่ถ้าคุณต้องการสรุปอย่างย่อ (-ish) นี่คือ:

การสืบค้นที่ดีขึ้นและข้อมูลที่มีโครงสร้างมากขึ้น - ในขณะที่ฐานข้อมูลเรียลไทม์เป็นเพียงต้นไม้ JSON ขนาดใหญ่ Cloud Firestore มีโครงสร้างที่เล็กน้อย ข้อมูลทั้งหมดของคุณประกอบด้วยเอกสาร (ซึ่งโดยทั่วไปเป็นร้านค้าคีย์ - ค่า) และคอลเลกชัน (ซึ่งเป็นชุดของเอกสาร) เอกสารจะชี้ไปที่การจัดเก็บย่อยบ่อยครั้งซึ่งมีเอกสารอื่นซึ่งพวกเขาสามารถมีเอกสารอื่น ๆ ได้เป็นต้น

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

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

การดึงข้อมูลด้วยตนเองง่ายขึ้น - เช่นเดียวกับฐานข้อมูลเรียลไทม์คุณสามารถตั้งค่าผู้ฟังใน Cloud Firestore เพื่อสตรีมในการเปลี่ยนแปลงตามเวลาจริง แต่ถ้าคุณไม่ต้องการมีพฤติกรรมแบบนั้นและต้องการเพียงแค่เรียก "เรียกข้อมูลของฉัน" อย่างง่ายๆ Cloud Firestore ก็มีเช่นกันและมันก็ถูกสร้างขึ้นในรูปแบบการใช้งานหลัก (พวกเขาดีกว่าการonceโทรในฐานข้อมูลเรียลไทม์ที่ดิน)

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

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

สำหรับการเปิดแอพข่าวเกมแบบผู้เล่นหลายคนเทิร์นเบสหรือสิ่งอื่น ๆ เช่น Stack Overflow เวอร์ชั่นของคุณเอง Cloud Firestore อาจดูดีจากมุมมองด้านราคา สำหรับบางสิ่งบางอย่างเช่นแอปการวาดภาพกลุ่มแบบเรียลไทม์ซึ่งคุณส่งการอัปเดตหลาย ๆ ครั้งต่อวินาทีไปยังหลาย ๆ คนอาจจะมีราคาแพงกว่าฐานข้อมูลเรียลไทม์

สาเหตุที่คุณยังอาจต้องการใช้ฐานข้อมูล Realtime - เหตุผลสองสามข้อ 1) ทั้งหมด "มันอาจจะถูกกว่าสำหรับแอพที่มีการอัปเดตบ่อย ๆ " สิ่งที่ฉันกล่าวถึงก่อนหน้านี้ 2) มันใช้เวลานานและได้รับการทดสอบการต่อสู้จากแอพนับพัน 3) มีความหน่วงแฝงที่ดีขึ้น และเมื่อคุณต้องการบางสิ่งที่มีความหน่วงแฝงต่ำที่เชื่อถือได้สำหรับความรู้สึกแบบเรียลไทม์ฐานข้อมูลแบบเรียลไทม์อาจทำงานได้ดีขึ้น

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

หวังว่าจะช่วย!


2
ขอบคุณมาก Todd! ฉันเห็นโพสต์ประกาศ แต่ไม่ใช่โพสต์นี้! ฉันหลงรัก Firestore อย่างสิ้นเชิงตอนนี้น่าเศร้าที่ฉันจะต้องเขียน RxJava ใหม่ทั้งหมดที่ห่อไว้สำหรับ xD นี้
Francisco Durdin Garcia

1
Google Cloud Datastore เหมาะสมอย่างไร ดูเหมือนจะไร้เดียงสาซ้อนทับกับ Cloud Firestore มาก @ToddKerpelman
Jon G

2
มันมีจำนวนมากเหมือนกันกับ Cloud Datastore ความแตกต่างที่ยิ่งใหญ่ที่สุดคือการรวมเข้ากับ Firebase ดังนั้นคุณจึงสามารถเข้าถึง SDK มือถือและเว็บพร้อมกับโหมดออฟไลน์เนทีฟและคุณสมบัติการซิงโครไนซ์แบบเรียลไทม์ Cloud Datastore เหมาะอย่างยิ่งสำหรับการพัฒนาฝั่งเซิร์ฟเวอร์ขนาดใหญ่ที่คุณจัดการการเชื่อมต่อของคุณเองกับแอพของคุณเช่นการรันเว็บไซต์ของคุณเองบน App Engine หรือผ่าน Compute / Container Engine
ทอดด์ Kerpelman

2
"ความมั่นคงที่แข็งแกร่ง" หมายถึงอะไรจริง ๆ ? ทฤษฎีบทของ CAP ระบุว่าคุณไม่สามารถ "มั่นใจได้ว่าคุณได้รับข้อมูลเวอร์ชันล่าสุด" ในสภาพแวดล้อมแบบกระจายและพร้อมใช้งาน ความสอดคล้อง, ความพร้อมใช้งาน, ความอดทนของพาร์ติชัน => เลือก 2
AjahnCharles

1
@ToddKerpelman โอกาสใดก็ตามที่คุณจะทำการเปรียบเทียบ Cloud Firestore / Cloud Datastore ทั้งสองดูเหมือนคล้ายกันมาก
TheAddonDepot

63

คุณสามารถอ่านบทความทั้งหมดได้ที่นี่: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseที่ถูก stuctured เป็นทรี JSON แต่Cloud Firestoreถูกเก็บข้อมูลในเอกสาร (ซึ่งเป็นชุดของคู่คีย์ - ค่า) และการรวบรวม (ซึ่งเป็นชุดของเอกสาร) รูปแบบ

ข้อมูลโครงสร้างเพิ่มเติม

ฐานข้อมูลเรียลไทม์จัดเก็บข้อมูลในทรี JSON แต่คลาวด์ได้รับการจัดเก็บข้อมูลในเอกสารซึ่งคล้ายกับ JSON มาก ป้อนคำอธิบายรูปภาพที่นี่

ใน Cloud FireStore เอกสารสามารถ conatins subcollections และวัตถุที่ซ้อนกัน (เช่น 'โทรศัพท์' ในรูปด้านบน) ซึ่งทั้งสองสามารถมีฟิลด์ดั้งเดิมเช่นสตริง (เช่น 'ชื่อ', 'อีเมล' และอื่น ๆ ในรูปด้านบน) หรือวัตถุที่ซับซ้อนเช่น รายการ

การค้นหาที่ดีขึ้น

  • ในฐานข้อมูลเรียลไทม์เราสามารถเรียงลำดับหรือกรองเฉพาะคุณสมบัติในแบบสอบถามเดียวไม่ได้ทั้งเรียงลำดับและกรองบนคุณสมบัติในขณะที่ใน Cloud FireStore คุณสามารถโยงตัวกรองและรวมตัวกรองและเรียงลำดับในคุณสมบัติในแบบสอบถามเดียว
  • หากคุณต้องการดึงข้อมูลตามลำดับจากมากไปน้อย Cloud fireStore มีประโยชน์มากสำหรับคุณ แต่สำหรับฐานข้อมูลแบบเรียลไทม์จะไม่มีคุณสมบัติการสืบค้น ป้อนคำอธิบายรูปภาพที่นี่
  • นอกจากนี้คุณยังสามารถเชื่อมโยงหลายวิธี“ ที่ไหน” เพื่อสร้างแบบสอบถามที่เฉพาะเจาะจงมากขึ้น (ตรรกะ AND) ใน Cloud FireStore ป้อนคำอธิบายรูปภาพที่นี่

scalability

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

การดึงข้อมูลด้วยตนเอง

เราสามารถฟังข้อมูลเรียลไทม์ใน Cloud FireStore เช่นฐานข้อมูลเรียลไทม์ แต่ใน Cloud FireStore เรายังสามารถดึงข้อมูล manualy (ถ้าคุณต้องการข้อมูลใด ๆ เพียงครั้งเดียว)

ความปลอดภัย

ในฐานข้อมูลเรียลไทม์เราต้องตรวจสอบข้อมูลแยกต่างหากโดยใช้กฎการตรวจสอบ แต่ใน Cloud FireStore การตรวจสอบข้อมูลจะเกิดขึ้นโดยอัตโนมัติ

กำลังเขียนข้อมูล

เราสามารถดำเนินการการดำเนินงานหลายเป็นชุดเดียวและให้พวกเขาอะตอมที่มีการรวมกันของใด ๆset(), update()หรือdelete()วิธีการ ป้อนคำอธิบายรูปภาพที่นี่

การตั้งราคา

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


12
มันจะเป็นการดีที่จะเชื่อมโยงบทความต้นฉบับ: medium.com/@beingrahul/ …
Salem Ouerdani

1
คุณช่วยอธิบายโดยละเอียดได้มากขึ้นว่า 'การตรวจสอบความถูกต้องของข้อมูลเกิดขึ้นโดยอัตโนมัติ' หมายถึงอะไร?
SoEzPz

12

เหตุผลในการเลือก Cloud Firestore ผ่านฐานข้อมูลเรียลไทม์

มันเป็นรุ่นปรับปรุง

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

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

การตั้งราคา

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

แผนการในอนาคตของ Google

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




2

ลิงก์แนะนำจาก google เช่นกัน: Firebase ฐานข้อมูลเรียลไทม์เทียบกับ FireStore

สกัดจาก google docs sumamry ขนาดเล็กที่นี่:

FireBase Real Time DBเป็นฐานข้อมูล NO SQL ของ JSON สำหรับแอพมือถือภูมิภาคและโดยทั่วไปใช้เพื่อจัดเก็บและซิงค์ข้อมูลระหว่างผู้ใช้ / อุปกรณ์ในแบบเรียลไทม์ / เวลาแฝงที่ต่ำมาก

FireStoreคือ JSON 'เช่น' NOSQL DB สำหรับการทำงานพร้อมกันสูงทั่วโลกง่ายต่อการปรับขนาดอัตโนมัติออกแบบมาสำหรับลูกค้า (ไม่เพียง แต่แอพมือถือ) ที่มีกรณีการใช้งานทั่วไปเช่นการติดตามสินทรัพย์การวิเคราะห์ตามเวลาจริงการสร้างแคตตาล็อกผลิตภัณฑ์ค้าปลีก โปรไฟล์ลีดเดอร์บอร์ดเกมแอปพลิเคชันที่ใช้การแชท ฯลฯ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.