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

Firebase cung cấp hai cơ sở dữ liệu tài liệu dựa trên đám mây mà ứng dụng có thể truy cập. Bạn nên bắt đầu với Cloud Firestore cho khách hàng mới:

  • Cloud Firestore là cơ sở dữ liệu tài liệu tương thích với JSON cấp doanh nghiệp nên dùng, được hơn 250.000 nhà phát triển tin tưởng. Loại này phù hợp với các ứng dụng có mô hình dữ liệu phong phú đòi hỏi khả năng truy vấn, khả năng mở rộng và khả năng sẵn sàng cao. API này cũng cung cấp tính năng đồng bộ hoá ứng dụng có độ trễ thấp và truy cập dữ liệu ngoại tuyến.

  • Realtime Database là cơ sở dữ liệu JSON Firebase cổ điển. Loại này phù hợp với các ứng dụng có mô hình dữ liệu đơn giản, yêu cầu tra cứu đơn giản và đồng bộ hoá độ trễ thấp với khả năng mở rộng hạn chế.

Những điều quan trọng khác cần cân nhắc là gì?

Sau khi cân nhắc những yếu tố chính 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 các ưu và khuyết điểm, phần này sẽ trình bày các điểm khác biệt khác giữa Cloud FirestoreRealtime Database.

Mô hình dữ liệu

Cả Realtime DatabaseCloud Firestore đều là Cơ sở dữ liệu NoSQL.

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Lưu trữ dữ liệu dưới dạng tập hợp tài liệu.
  • Dữ liệu đơn giản rất dễ lưu trữ trong các tài liệu, rất giống với JSON.
  • Dữ liệu phức tạp, phân cấp dễ dàng được sắp xếp trên quy mô lớn hơ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 thao tác huỷ chuẩn hoá và làm phẳng dữ liệu hơn.

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

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, phân cấp khó sắp xếp hơn trên quy mô lớn.

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

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

Cả hai đều có SDK theo thời gian thực, ưu tiên thiết bị di động và đều hỗ trợ bộ nhớ dữ liệu cục bộ cho các ứng dụng có thể dùng khi không có mạng.

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Hỗ trợ ngoại tuyến cho ứng dụng Apple, Android và web. Hỗ trợ ngoại tuyến cho ứng dụng Apple và Android.

Sự hiện diện

Bạn có thể biết được thời điểm ứng dụng khách đang trực tuyến hoặc ngoại tuyến. Firebase Realtime Database có thể ghi lại trạng thái kết nối của ứng dụng và cung cấp thông tin cập nhật mỗi khi trạng thái kết nối của ứng dụng thay đổi.

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Không được hỗ trợ gốc. Bạn có thể xây dựng dựa trên tính năng hỗ trợ trạng thái hiện diện của Realtime Database bằng cách đồng bộ hoá Cloud FirestoreRealtime Database bằng Cloud Functions. Xem phần Tạo trạng thái hiện diện trong Cloud Firestore. Hỗ trợ tính năng Hiện diện.

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.

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Truy vấn được lập chỉ mục bằng tính năng sắp xếp và lọc phức hợp.
  • Bạn có thể tạo chuỗi bộ lọc và kết hợp tính năng lọc và sắp xếp trên một tài sản trong một truy vấn.
  • Truy vấn nô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 bộ sưu tập con.
  • 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.
Truy vấn sâu có các tính năng sắp xếp và lọc bị hạn chế.
  • Truy vấn có thể sắp xếp hoặc lọc theo một tài sản, nhưng không được làm cả hai.
  • Theo mặc định, các truy vấn sẽ truy vấn sâu: chúng luôn trả về toàn bộ cây con.
  • Các truy vấn có thể truy cập vào dữ liệu ở bất kỳ mức độ chi tiết nào, cho đến từng giá trị nút lá trong cây JSON.
  • Các 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.

Hoạt động ghi và giao dịch

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Các thao tác ghi và giao dịch nâng cao.
  • Ghi các thao tác dữ liệu thông qua các thao tác đặt và cập nhật cũng như các phép biến đổi nâng cao như toán tử số và mảng.
  • Giao dịch có thể đọc và ghi dữ liệu một cách nguyên tử từ bất kỳ phần nào của cơ sở dữ liệu.
Các thao tác cơ bản về ghi và giao dịch.
  • Ghi dữ liệu thông qua các thao tác đặt và cập nhật.
  • Giao dịch là nguyên tử trên một cây con dữ liệu cụ thể.

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

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Cloud Firestore là một giải pháp khu vực và đa khu vực tự động mở rộng quy mô.
  • Một giải pháp có độ trễ thấp, với thời gian phản hồi thông thường không lớn hơn 30 mili giây.
  • 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 khác nhau, đảm bảo khả năng mở rộng trên toàn cầu và độ tin cậy cao.
  • Có sẵn ở các cấu hình theo khu vực hoặc nhiều khu vực trên thế giới.
Đọc thêm về hiệu suất và đặc điểm độ tin cậy của Cloud Firestore trong Thoả thuận mức độ cung cấp dịch vụ.
Realtime Database là giải pháp theo khu vực.
  • Có trong cấu hình theo khu vực. Cơ sở dữ liệu chỉ được cung cấp ở một số vùng trong một khu vực.
  • Độ trễ cực thấp, với thời gian phản hồi thông thường không lớn hơn 10 mili giây. Đây là lựa chọn lý tưởng để đồng bộ hoá trạng thái thường xuyên.
Đọc thêm về hiệu suất và đặc điểm độ tin cậy của Realtime Database trong Thoả thuận mức độ cung cấp dịch vụ.

Thời gian hoạt động

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Hiệu suất thời gian hoạt động cực cao.
  • Hiệu suất thời gian hoạt động thông thường là 99,999%.
  • Nếu khả năng sử 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ử, hãy sử dụng Cloud Firestore.
Hiệu suất thời gian hoạt động cao.
  • Hiệu suất thời gian hoạt động thông thường là 99,95%.

Khả năng mở rộng

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Tự động mở rộng quy mô.
  • Tự động điều chỉnh theo tỷ lệ. Giới hạn mở rộng là khoảng 1 triệu kết nối đồng thời và 10.000 lượt ghi/giây. Chúng tôi dự định sẽ tăng các giới hạn này trong tương lai.
  • giới hạn về tốc độ ghi vào từng tài liệu hoặc chỉ mục.
Bạn cần phân đoạn để mở rộng quy mô.
  • Mở rộng quy mô lên khoảng 200.000 kết nối đồng thời và 1.000 lượt ghi/giây trong một cơ sở dữ liệu. Để mở rộng quy mô hơn nữa, bạn cần phân đoạn dữ liệu trên nhiều cơ sở dữ liệu.
  • Không có giới hạn cục bộ về tốc độ ghi vào từng phần dữ liệu.

Bảo mật

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Quy tắc không theo kiểu thác nước kết hợp việc uỷ quyền và xác thực.
  • Đọc và ghi từ các SDK dành cho thiết bị di động được bảo mật bằng Cloud Firestore Security Rules.
  • Đọc và ghi từ các SDK máy chủ được bảo mật bằng tính năng Quản lý danh tính và quyền truy cập (IAM).
  • Các quy tắc sẽ không được áp dụng theo kiểu thác nước trừ phi bạn sử dụng ký tự đại diện.
  • Quy tắc có thể ràng buộc truy vấn: Nếu kết quả của một 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.
Ngôn ngữ quy tắc dạng lũy thừa phân tách việc uỷ quyền và xác thực.

Giá

Cả hai giải pháp này đều có trong các gói giá Spark và Blaze.

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Phí chủ yếu là do các thao tác thực hiện trong cơ sở dữ liệu của bạn (đọc, ghi, xoá) và băng thông và bộ nhớ ở mức thấp hơn.

Cloud Firestore hỗ trợ hạn mức 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 giá của Cloud Firestore.

Chỉ tính phí băng thông và bộ nhớ, nhưng ở mức giá cao hơn.

Đọc thêm về các gói giá của Realtime Database.

Sử dụng Cloud FirestoreRealtime Database

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 một loại dữ liệu và thư viện ứng dụng hoạt động theo cách tương tự. Hãy lưu ý những điểm khác biệt đã nêu trước đó nếu bạn quyết định sử dụng cả hai cơ sở dữ liệu trong ứng dụng.

Tìm hiểu thêm về các tính năng có trong cả Realtime DatabaseCloud Firestore.

Bạn đã sẵn sàng chọn cơ sở dữ liệu chưa?

Hy vọng thông tin so sánh này đã giúp bạn chọn được giải pháp cơ sở dữ liệu Firebase. Bây giờ, bạn có thể tìm hiểu cách thêm cơ sở dữ liệu vào dự án Firebase.