Sự khác biệt giữa Cloud Firestore và Cơ sở dữ liệu thời gian thực Firebase là gì?


252

Google vừa phát hành Cloud Firestore, Cơ sở dữ liệu tài liệu mới của họ cho các ứng dụng.

Tôi đã đọc tài liệu nhưng tôi không thấy nhiều sự khác biệt giữa Firestore và Firebase DB.

Điểm chính là Firestore sử dụng các tài liệu và bộ sưu tập cho phép sử dụng truy vấn dễ dàng so với Firebase, đây là cơ sở dữ liệu noQuery truyền thống có cơ sở JSON.

Tôi muốn biết thêm một chút về sự khác biệt của chúng, hoặc cách sử dụng, hoặc liệu Firestore chỉ đến để thay thế Firebase DB?


1
Đọc nhanh hơn trên Firestore, Writes nhanh hơn trên cơ sở dữ liệu thời gian thực Firebase
DragonFire

Câu trả lời:


380

Vì vậy, tôi đã viết toàn bộ một bài đăng trên blog về chính câu hỏi này và tôi khuyên bạn nên kiểm tra nó (hoặc tài liệu chính thức ) để có câu trả lời đầy đủ hơn.

Nhưng nếu bạn muốn tóm tắt (-ish) nhanh chóng, thì đây là:

Truy vấn tốt hơn và dữ liệu có cấu trúc hơn - Trong khi Cơ sở dữ liệu thời gian thực chỉ là một cây JSON khổng lồ, Cloud Firestore có cấu trúc hơn một chút. Tất cả dữ liệu của bạn bao gồm các tài liệu (về cơ bản là các kho lưu trữ khóa-giá trị) và các bộ sưu tập (là các bộ sưu tập tài liệu). Các tài liệu cũng sẽ thường xuyên trỏ đến các bộ sưu tập con, trong đó có các tài liệu khác, bản thân chúng có thể chứa các tài liệu khác, v.v.

Dữ liệu có cấu trúc này giúp bạn hiểu theo hai cách. Đầu tiên, tất cả các truy vấn đều nông , có nghĩa là bạn có thể yêu cầu một tài liệu mà không cần lấy tất cả dữ liệu bên dưới. Điều này có nghĩa là bạn có thể giữ dữ liệu của mình được lưu trữ theo thứ bậc theo cách có ý nghĩa hơn với bạn mà không phải lo lắng về việc giữ cho cơ sở dữ liệu của bạn nông. Thứ hai, bạn có các truy vấn mạnh mẽ hơn. Chẳng hạn, giờ đây bạn có thể truy vấn trên nhiều trường mà không phải tạo các trường "kết hợp" đó kết hợp (và không chuẩn hóa) dữ liệu từ các phần khác trong cơ sở dữ liệu của bạn. Trong một số trường hợp, Cloud Firestore sẽ chỉ chạy các truy vấn đó trực tiếp và trong các trường hợp khác, nó sẽ tự động tạo và duy trì các chỉ mục cho bạn.

Được thiết kế theo tỷ lệ - Cloud Firestore sẽ có thể mở rộng tốt hơn Cơ sở dữ liệu thời gian thực. Điều quan trọng cần lưu ý là các truy vấn của bạn chia tỷ lệ theo kích thước của tập kết quả, không phải tập dữ liệu của bạn. Vì vậy, tìm kiếm sẽ vẫn nhanh cho dù bộ dữ liệu của bạn có thể trở nên lớn đến mức nào.

Tìm nạp dữ liệu thủ công dễ dàng hơn - Giống như Cơ sở dữ liệu thời gian thực, bạn có thể thiết lập trình nghe trong Cloud Firestore để truyền phát các thay đổi trong thời gian thực. Nhưng nếu bạn không muốn loại hành vi đó và chỉ muốn một cuộc gọi "lấy dữ liệu của tôi" đơn giản, Cloud Firestore cũng có điều đó và nó được tích hợp như một trường hợp sử dụng chính. (Chúng tốt hơn nhiều so với các oncecuộc gọi trong vùng đất cơ sở dữ liệu thời gian thực)

Hỗ trợ đa vùng - Điều này về cơ bản có nghĩa là độ tin cậy cao hơn, vì dữ liệu của bạn được chia sẻ trên nhiều trung tâm dữ liệu cùng một lúc. Nhưng bạn vẫn có tính nhất quán mạnh mẽ, có nghĩa là bạn luôn có thể thực hiện một truy vấn và yên tâm rằng bạn sẽ nhận được phiên bản mới nhất của dữ liệu của mình.

Mô hình định giá khác nhau - Mặc dù Cơ sở dữ liệu thời gian thực chủ yếu tính phí dựa trên lưu trữ hoặc băng thông mạng, Cloud Firestore chủ yếu tính phí dựa trên số lượng hoạt động bạn thực hiện. Điều này sẽ tốt hơn, hay tồi tệ hơn? Nó phụ thuộc vào ứng dụng của bạn.

Để cung cấp sức mạnh cho một ứng dụng tin tức, trò chơi nhiều người chơi theo lượt hoặc một cái gì đó giống như phiên bản Stack Overflow của riêng bạn, Cloud Firestore có thể sẽ trông khá thuận lợi từ quan điểm định giá. Đối với một cái gì đó giống như một ứng dụng vẽ nhóm thời gian thực mà bạn đang gửi qua nhiều bản cập nhật một giây cho nhiều người, nó có thể sẽ đắt hơn Cơ sở dữ liệu thời gian thực.

Tại sao bạn vẫn có thể muốn sử dụng Cơ sở dữ liệu thời gian thực - Có một số lý do. 1) Toàn bộ "có lẽ sẽ rẻ hơn cho các ứng dụng tạo ra nhiều cập nhật thường xuyên" mà tôi đã đề cập trước đây, 2) Nó đã tồn tại trong một thời gian dài và đã được thử nghiệm bởi hàng ngàn ứng dụng, 3) Nó có độ trễ tốt hơn và khi bạn cần thứ gì đó có độ trễ thấp đáng tin cậy để có cảm giác thời gian thực, Cơ sở dữ liệu thời gian thực có thể hoạt động tốt hơn.

Đối với hầu hết các ứng dụng mới, chúng tôi khuyên bạn nên kiểm tra Cloud Firestore. Nhưng nếu bạn có một ứng dụng đã có trên Cơ sở dữ liệu thời gian thực, tôi thực sự khuyên bạn nên chuyển đổi chỉ vì mục đích chuyển đổi, trừ khi bạn có lý do thuyết phục để làm như vậy.

Mong rằng sẽ giúp!


2
Cảm ơn bạn rất nhiều! Tôi thấy bài thông báo nhưng không phải cái này! Tôi hoàn toàn yêu Firestore, đáng buồn là bây giờ tôi sẽ cần phải viết lại toàn bộ RxJava của mình cho xD này.
Francisco Durdin Garcia

1
Google Cloud Datastore phù hợp như thế nào? Rõ ràng là nó có rất nhiều sự trùng lặp với Cloud Firestore. @ToddKerpelman
Jon G

2
Nó có rất nhiều điểm chung với Cloud Datastore. Sự khác biệt lớn nhất là sự tích hợp với Firebase, vì vậy bạn có quyền truy cập vào SDK di động và web cùng với chế độ ngoại tuyến gốc, cũng như các tính năng đồng bộ hóa thời gian thực. Cloud Datastore rất phù hợp để phát triển phía máy chủ quy mô lớn nơi bạn quản lý kết nối của riêng mình với ứng dụng của mình, chẳng hạn như chạy trang web của riêng bạn trên App Engine hoặc thông qua Compute / Container Engine.
Todd Kerpelman

2
"Tính nhất quán mạnh" thực sự có nghĩa là gì? Định lý CAP nói rằng bạn không thể "yên tâm rằng bạn đang nhận được phiên bản mới nhất của dữ liệu" trong môi trường phân tán và có sẵn. Tính nhất quán, sẵn có, dung sai phân vùng => chọn 2.
AjahnCharles

1
@ToddKerpelman Bất kỳ cơ hội nào bạn thực hiện so sánh Cloud Firestore / Cloud Datastore. Hai người có vẻ rất giống nhau.
TheAddonDepot

63

Bạn có thể đọc toàn bộ bài viết tại đây: https://medium.com/@beingrahul/firebase-cloud-firestore-vs-firebase-realtime-database-931d4265d4b0

Firebase Realtime databaseđược đặt dưới dạng cây JSON nhưng Cloud Firestoređược lưu trữ dữ liệu trong các tài liệu (là một tập hợp các cặp khóa-giá trị) và các bộ sưu tập (là tập hợp các tài liệu).

Dữ liệu cấu trúc khác

Cơ sở dữ liệu thời gian thực lưu trữ dữ liệu trong cây JSON nhưng Cloud Firestore lưu trữ dữ liệu trong các tài liệu rất giống với JSON. nhập mô tả hình ảnh ở đây

Trong Cloud FireStore, Tài liệu có thể kết hợp các tập hợp con và các đối tượng lồng nhau (như 'điện thoại' trong hình trên), cả hai đều có thể bao gồm các trường nguyên thủy như chuỗi (như 'tên', 'email', v.v. trong hình trên) hoặc các đối tượng phức tạp như danh sách.

Truy vấn tốt hơn

  • Trong cơ sở dữ liệu Thời gian thực, Chúng tôi chỉ có thể sắp xếp hoặc lọc trên một thuộc tính trong một truy vấn duy nhất, không thể cả sắp xếp và lọc trên một thuộc tính trong Trong Cloud FireStore, Bạn có thể xâu chuỗi các bộ lọc và kết hợp lọc và sắp xếp trên một thuộc tính trong một truy vấn.
  • Nếu bạn muốn tìm nạp dữ liệu theo thứ tự giảm dần thì Cloud fireStore rất hữu ích cho bạn nhưng đối với cơ sở dữ liệu Realtime, không có tính năng truy vấn nào khả dụng. nhập mô tả hình ảnh ở đây
  • Bạn cũng có thể xâu chuỗi nhiều phương thức trong đó các phương thức của người dùng để tạo các truy vấn cụ thể hơn (logic AND) trong Cloud FireStore. nhập mô tả hình ảnh ở đây

Khả năng mở rộng

Cloud Firestore sẽ có thể mở rộng quy mô tốt hơn Cơ sở dữ liệu thời gian thực. Điều quan trọng cần lưu ý là hiệu suất truy vấn của bạn tỷ lệ thuận với kích thước của tập kết quả, không phải tập dữ liệu của bạn. Vì vậy, tìm kiếm sẽ vẫn nhanh cho dù bộ dữ liệu của bạn có thể trở nên lớn đến mức nào.

Lấy dữ liệu thủ công

Chúng tôi có thể nghe dữ liệu thời gian thực trong Cloud FireStore như cơ sở dữ liệu Realtime nhưng trong Cloud FireStore, Chúng tôi cũng có thể tìm nạp dữ liệu thủ công (Nếu bạn chỉ muốn bất kỳ dữ liệu nào một lần).

Bảo vệ

Trong Cơ sở dữ liệu thời gian thực, chúng tôi cần xác thực dữ liệu một cách riêng biệt bằng quy tắc xác thực nhưng trong Cloud FireStore, xác thực dữ liệu sẽ tự động xảy ra.

Viết dữ liệu

Chúng ta có thể thực hiện nhiều hoạt động như một lô duy nhất và hoàn thành chúng một cách nguyên tử, với bất kỳ sự kết hợp nào của set(), update()hoặc delete()các phương thức. nhập mô tả hình ảnh ở đây

Giá cả

Trong cơ sở dữ liệu thời gian thực, chỉ tính phí cho băng thông và lưu trữ, nhưng với tốc độ cao hơn. Khi ở trong Cloud FireStore, các khoản phí chủ yếu cho các hoạt động được thực hiện trong cơ sở dữ liệu của bạn (đọc, viết, xóa) và, ở tốc độ thấp hơn, băng thông và lưu trữ.


12
Sẽ thật tuyệt khi liên kết bài viết gốc: Medium.com/@beingrahul/ Kẻ
Salem Ouerdani

1
Bạn có thể giải thích chi tiết hơn về "xác thực dữ liệu xảy ra tự động" nghĩa là gì không?
SoEzPz

12

Lý do chọn Cloud Firestore trên cơ sở dữ liệu thời gian thực

Đây là một phiên bản cải tiến

Cơ sở dữ liệu Firebase là đủ cho các ứng dụng cơ bản. Nhưng nó không đủ mạnh để xử lý các yêu cầu phức tạp. Đó là lý do Cloud Firestore được giới thiệu. Dưới đây là một số thay đổi lớn.

  • Cấu trúc tập tin cơ bản được cải thiện.
  • Hỗ trợ ngoại tuyến cho máy khách web.
  • Hỗ trợ truy vấn nâng cao hơn.
  • Viết và hoạt động giao dịch là nguyên tử.
  • Cải thiện độ tin cậy và hiệu suất
  • Thu nhỏ sẽ tự động.
  • Sẽ an toàn hơn.

Giá cả

Trong Cloud Firestore, giá đã giảm ngay cả khi nó tính phí chủ yếu cho các hoạt động được thực hiện trong cơ sở dữ liệu của bạn cùng với băng thông và lưu trữ. Bạn cũng có thể đặt giới hạn chi tiêu hàng ngày. Dưới đây là chi tiết đầy đủ về thanh toán.

Kế hoạch tương lai của Google

Khi họ phát hiện ra lỗ hổng với Cơ sở dữ liệu thời gian thực, họ đã tạo ra một sản phẩm khác thay vì cải tiến sản phẩm cũ. Mặc dù không có chi tiết đáng tin cậy tiết lộ vị trí hiện tại của họ trên Cơ sở dữ liệu thời gian thực, nhưng đây là lúc để bắt đầu nghĩ rằng nó có khả năng bị bỏ rơi.




2

Đề xuất liên kết từ google là: Cơ sở dữ liệu thời gian thực Firebase vs FireStore

Trích xuất từ ​​tài liệu google, một sumamry nhỏ ở đây:

FireBase Real Time DB dựa trên JSON NO SQL DB, dành cho các ứng dụng di động, khu vực và thường được sử dụng để lưu trữ và đồng bộ hóa dữ liệu giữa người dùng / thiết bị trong thời gian thực / độ trễ cực thấp.

FireStore là NOSQL DB của JSON có nghĩa là tính đồng thời cao, toàn cầu, dễ dàng tự động mở rộng quy mô, được thiết kế cho mọi khách hàng (không chỉ ứng dụng di động) với các trường hợp sử dụng điển hình như theo dõi tài sản, phân tích thời gian thực, xây dựng danh mục sản phẩm bán lẻ, người dùng xã hội hồ sơ, bảng xếp hạng chơi game, ứng dụng dựa trên trò chuyện, vv

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.