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

Chọn cơ sở dữ liệu: Cloud Firestore hoặc Cơ sở dữ liệu thời gian thực

Firebase cung cấp hai giải pháp cơ sở dữ liệu dựa trên đám mây, có thể truy cập từ máy khách, hỗ trợ đồng bộ hóa dữ liệu theo thời gian thực:

  • Cloud Firestore là cơ sở dữ liệu mới nhất của Firebase để phát triển ứng dụng dành cho thiết bị di động. Nó được xây dựng dựa trên những thành công của Cơ sở dữ liệu thời gian thực với một mô hình dữ liệu mới, trực quan hơn. Cloud Firestore cũng có các truy vấn phong phú hơn, nhanh hơn và mở rộng hơn Cơ sở dữ liệu thời gian thực.

  • Realtime Database là cơ sở dữ liệu gốc của Firebase. Đó là một giải pháp hiệu quả, độ trễ thấp cho các ứng dụng dành cho thiết bị di động yêu cầu trạng thái được đồng bộ hóa giữa các máy khách trong thời gian thực.

Firebase đề xuất cơ sở dữ liệu nào?

Lựa chọn giải pháp cơ sở dữ liệu của bạn sẽ phụ thuộc vào nhiều yếu tố, nhưng khi nói đến một số tính năng nhất định, chúng tôi có thể đưa ra đề xuất về cơ sở dữ liệu nào phù hợp với bạn.

Cả hai giải pháp đều cung cấp:

  • SDK ưu tiên máy khách, không cần triển khai và bảo trì máy chủ
  • Cập nhật theo thời gian thực
  • Bậc miễn phí, sau đó trả tiền cho những gì bạn sử dụng

cân nhắc chính

Ngoài các tính năng cốt lõi tuyệt vời chung cho cả hai cơ sở dữ liệu, hãy nghĩ xem bất kỳ hoặc tất cả các yếu tố cần cân nhắc được liệt kê bên dưới sẽ ảnh hưởng như thế nào đến sự thành công của ứng dụng của bạn.

Vai trò của cơ sở dữ liệu
Ứng dụng của tôi sử dụng cơ sở dữ liệu cho...
Chủ yếu đồng bộ hóa dữ liệu, với truy vấn cơ bản.
Nếu bạn không cần truy vấn, sắp xếp và giao dịch nâng cao, chúng tôi khuyên dùng Cơ sở dữ liệu thời gian thực .
Truy vấn, sắp xếp và giao dịch nâng cao.
Nếu bạn cần các tương tác phức tạp với dữ liệu của mình, chẳng hạn như trong các ứng dụng thương mại điện tử, chúng tôi khuyên dùng Cloud Firestore .
Thao tác trên dữ liệu
Việc sử dụng cơ sở dữ liệu của ứng dụng của tôi trông giống như...
Một vài GB hoặc ít hơn dữ liệu thay đổi thường xuyên.
Nếu ứng dụng của bạn sẽ gửi một luồng cập nhật nhỏ, chẳng hạn như trong ứng dụng bảng trắng kỹ thuật số, thì chúng tôi khuyên dùng Cơ sở dữ liệu thời gian thực .
Hàng trăm GB đến TB dữ liệu được đọc thường xuyên hơn nhiều so với thay đổi.
Đối với các tập dữ liệu rất lớn và khi cần thao tác hàng loạt thường xuyên, chúng tôi khuyên dùng Cloud Firestore .
Mô hình dữ liệu
Tôi thích cấu trúc dữ liệu của mình như ...
Một cây JSON đơn giản.
Đối với dữ liệu phi cấu trúc JSON, chúng tôi khuyên dùng Cơ sở dữ liệu thời gian thực .
Tài liệu được tổ chức thành các bộ sưu tập.
Đối với các bộ sưu tập và tài liệu có cấu trúc, chúng tôi khuyên dùng Cloud Firestore .
khả dụng
Nhu cầu sẵn có của tôi là...
Đảm bảo thời gian hoạt động cực cao 99,999%.
Nếu tính khả dụng là quan trọng nhất, chẳng hạn như trong các ứng dụng thương mại điện tử, thì chúng tôi khuyên dùng Cloud Firestore .
Đảm bảo ít nhất 99,95% thời gian hoạt động.
Khi mức độ khả dụng rất cao nhưng không quá quan trọng có thể chấp nhận được, chúng tôi khuyên dùng Cloud Firestore hoặc Cơ sở dữ liệu thời gian thực .
Truy vấn ngoại tuyến trên dữ liệu cục bộ
Ứng dụng của tôi sẽ cần thực hiện các truy vấn trên các thiết bị có kết nối hạn chế hoặc không có kết nối...
Thường xuyên.
Để có khả năng truy vấn tinh vi trên dữ liệu cục bộ khi người dùng ngoại tuyến, chúng tôi khuyên dùng Cloud Firestore .
Hiếm khi hoặc không bao giờ.
Nếu bạn muốn người dùng của mình trực tuyến nhất quán, chúng tôi khuyên dùng Cloud Firestore hoặc Cơ sở dữ liệu thời gian thực .
Số lượng phiên bản cơ sở dữ liệu
Trong các dự án cá nhân của tôi, tôi cần sử dụng ...
Nhiều cơ sở dữ liệu, ví dụ một cơ sở dữ liệu cho mỗi khách hàng lớn.
Vì nó cho phép bạn thêm nhiều cơ sở dữ liệu vào một dự án Firebase duy nhất nên chúng tôi khuyên dùng Cơ sở dữ liệu thời gian thực .
Chỉ cần một cơ sở dữ liệu duy nhất.
Nếu bạn cần một cơ sở dữ liệu duy nhất, chúng tôi khuyên dùng Cloud Firestore hoặc Cơ sở dữ liệu thời gian thực .

Một số điều quan trọng khác cần xem xét là gì?

Sau khi suy nghĩ về những cân nhắc quan trọng trước đó, bạn có thể sẵn sàng chọn một cơ sở dữ liệu . Nếu bạn vẫn đang cân nhắc ưu và nhược điểm, thì phần này đề cập đến những điểm khác biệt khác giữa Cloud Firestore và Cơ sở dữ liệu thời gian thực.

Mô hình dữ liệu

Cả Cơ sở dữ liệu thời gian thực và Cloud Firestore đều là Cơ sở dữ liệu NoSQL.

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Lưu trữ dữ liệu dưới dạng một cây JSON lớn.
  • Dữ liệu đơn giản rất dễ lưu trữ.
  • Dữ liệu phức tạp, có thứ bậc khó tổ chức hơn trên quy mô lớn.

Tìm hiểu thêm về mô hình dữ liệu Cơ sở dữ liệu thời gian thực .

Lưu trữ dữ liệu dưới dạng tập hợp các tài liệu.
  • Dữ liệu đơn giản dễ lưu trữ trong tài liệu, rất giống với JSON.
  • Dữ liệu phức tạp, có thứ bậc sẽ dễ tổ chức hơn trên quy mô lớn bằng cách sử dụng các bộ sưu tập con trong tài liệu.
  • Yêu cầu ít không chuẩn hóa và làm phẳng dữ liệu.

Tìm hiểu thêm về mô hình dữ liệu Cloud Firestore .

Hỗ trợ thời gian thực và ngoại tuyến

Cả hai đều có SDK thời gian thực, ưu tiên thiết bị di động và cả hai đều hỗ trợ lưu trữ dữ liệu cục bộ cho các ứng dụng sẵn sàng ngoại tuyến.

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Hỗ trợ ngoại tuyến cho khách hàng Apple và Android. Hỗ trợ ngoại tuyến cho ứng dụng khách Apple, Android và web.

Sự hiện diện

Có thể hữu ích khi biết khi nào khách hàng trực tuyến hoặc ngoại tuyến. Cơ sở dữ liệu thời gian thực Firebase có thể ghi lại trạng thái kết nối của máy khách và cung cấp các bản cập nhật mỗi khi trạng thái kết nối của máy khách thay đổi.

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Sự hiện diện được hỗ trợ. Không được hỗ trợ nguyên bản. Bạn có thể tận dụng hỗ trợ hiện diện của Cơ sở dữ liệu thời gian thực bằng cách đồng bộ hóa Cloud Firestore và Cơ sở dữ liệu thời gian thực bằng Chức năng đám mây. Xem Xây dựng sự hiện diện trong Cloud Firestore .

truy vấn

Truy xuất, sắp xếp và lọc dữ liệu từ một trong hai cơ sở dữ liệu thông qua các truy vấn.

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Truy vấn sâu với chức năng sắp xếp và lọc hạn chế.
  • Truy vấn có thể sắp xếp hoặc lọc trên một thuộc tính, nhưng không phải cả hai.
  • Các truy vấn sâu theo mặc định: chúng luôn trả về toàn bộ cây con.
  • Các truy vấn có thể truy cập dữ liệu ở bất kỳ mức độ chi tiết nào, cho đến các giá trị nút lá riêng lẻ trong cây JSON.
  • Truy vấn không yêu cầu chỉ mục; tuy nhiên, hiệu suất của một số truy vấn nhất định sẽ giảm khi tập dữ liệu của bạn tăng lên.
Các truy vấn được lập chỉ mục với sắp xếp và lọc phức hợp.
  • 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.
  • Các truy vấn nông cạn: chúng chỉ trả về các tài liệu trong một bộ sưu tập hoặc nhóm bộ sưu tập cụ thể và không trả về dữ liệu của bộ sưu tập con.
  • Các truy vấn phải luôn trả về toàn bộ tài liệu.
  • Các truy vấn được lập chỉ mục theo mặc định: Hiệu suất truy vấn tỷ lệ thuận với kích thước của tập kết quả chứ không phải tập dữ liệu của bạn.

Viết và giao dịch

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Thao tác viết và giao dịch cơ bản.
  • Ghi dữ liệu thông qua các hoạt động thiết lập và cập nhật.
  • Các giao dịch là nguyên tử trên một cây con dữ liệu cụ thể.
Thao tác ghi và giao dịch nâng cao.
  • Viết các phép toán dữ liệu thông qua các phép toán thiết lập và cập nhật cũng như các phép biến đổi nâng cao như toán tử mảng và số.
  • Các giao dịch có thể đọc và ghi dữ liệu nguyên tử từ bất kỳ phần nào của cơ sở dữ liệu.

Độ tin cậy và hiệu suất

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Cơ sở dữ liệu thời gian thực là một giải pháp khu vực.
  • Có sẵn trong cấu hình khu vực. Cơ sở dữ liệu được giới hạn ở tính khả dụng của khu vực trong một khu vực.
  • Độ trễ cực thấp, tùy chọn lý tưởng để đồng bộ hóa trạng thái thường xuyên.
Đọc thêm về các đặc điểm về độ tin cậy và hiệu suất của Cơ sở dữ liệu thời gian thực trong Thỏa thuận cấp độ dịch vụ .
Cloud Firestore là một giải pháp khu vực và đa khu vực tự động mở rộng quy mô.
  • Lưu trữ dữ liệu của bạn trên nhiều trung tâm dữ liệu ở các khu vực riêng biệt, đảm bảo khả năng mở rộng toàn cầu và độ tin cậy cao.
  • Có sẵn trong các cấu hình khu vực hoặc đa khu vực trên toàn thế giới.
Đọc thêm về các đặc điểm về độ tin cậy và hiệu suất của Cloud Firestore trong Thỏa thuận cấp độ dịch vụ .

khả năng mở rộng

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Mở rộng quy mô yêu cầu sharding.
  • Mở rộng tới khoảng 200.000 kết nối đồng thời và 1.000 ghi/giây trong một cơ sở dữ liệu. Mở rộng quy mô vượt ra ngoài yêu cầu phân mảnh dữ liệu của bạn trên nhiều cơ sở dữ liệu.
  • Không có giới hạn cục bộ về tốc độ ghi cho từng phần dữ liệu.
Mở rộng quy mô là tự động.
  • Cân hoàn toàn tự động. Hiện tại, giới hạn mở rộng là khoảng 1 triệu kết nối đồng thời và 10.000 ghi/giây. Chúng tôi dự định tăng các giới hạn này trong tương lai.
  • giới hạn về tỷ lệ ghi vào các tài liệu hoặc chỉ mục riêng lẻ.

Bảo vệ

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Ngôn ngữ quy tắc xếp tầng phân tách ủy quyền và xác thực. Quy tắc không xếp tầng kết hợp ủy quyền và xác thực.
  • Đọc và ghi từ SDK di động được bảo mật bởi Quy tắc bảo mật của Cloud Firestore .
  • Đọc và ghi từ SDK máy chủ được bảo mật bởi Quản lý truy cập và nhận dạng (IAM) .
  • Các quy tắc không xếp tầng trừ khi bạn sử dụng ký tự đại diện.
  • Các quy tắc có thể hạn chế truy vấn: Nếu kết quả của truy vấn có thể chứa dữ liệu mà người dùng không có quyền truy cập, thì toàn bộ truy vấn sẽ không thành công.

định giá

Cả hai giải pháp đều có sẵn trên gói giá Spark và Blaze .

Cơ sở dữ liệu thời gian thực Cửa hàng lửa trên đám mây
Chỉ tính phí cho băng thông và dung lượng lưu trữ nhưng ở mức cao hơn.

Đọc thêm về các gói định giá Cơ sở dữ liệu thời gian thực .

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, ghi, xóa) và, ở mức thấp hơn, băng thông và dung lượng lưu trữ.

Cloud Firestore hỗ trợ giới hạn chi tiêu hàng ngày cho các dự án App Engine, để đảm bảo bạn không vượt quá mức chi phí mà bạn cảm thấy thoải mái.

Đọc thêm về các gói định giá của Cloud Firestore .

Sử dụng Cloud Firestore và Cơ sở dữ liệu thời gian thực

Bạn có thể sử dụng cả hai cơ sở dữ liệu trong cùng một ứng dụng hoặc dự án Firebase. Cả hai cơ sở dữ liệu NoSQL đều có thể lưu trữ cùng loại dữ liệu và các thư viện máy khách hoạt động theo cách tương tự. Hãy ghi nhớ những điểm khác biệt nêu trên nếu bạn quyết định sử dụng cả hai cơ sở dữ liệu trong ứng dụng của mình .

Tìm hiểu thêm về các tính năng có sẵn trong cả Cơ sở dữ liệu thời gian thựcCloud Firestore .

Sẵn sàng để chọn một cơ sở dữ liệu?

Hy vọng rằng so sánh này đã giúp bạn giải quyết một giải pháp cơ sở dữ liệu Firebase. Giờ đây, bạn có thể tìm hiểu cách thêm cơ sở dữ liệu vào dự án Firebase của mình.