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 once
cuộ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!