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 trên đám mây mà ứng dụng có thể truy cập. Khách hàng mới nên bắt đầu bằng Cloud Firestore:

  • Cloud Firestore là cơ sở dữ liệu tài liệu tương thích với JSON cấp doanh nghiệp được đề xuất, được hơn 250.000 nhà phát triển tin tưởng. Đây là lựa chọn phù hợp cho 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à tính sẵn sàng cao. Nền tảng 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 cổ điển của Firebase. Nền tảng 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 các hoạt động tra cứu đơn giản và đồng bộ hoá có độ trễ thấp với khả năng mở rộng hạn chế.

Bạn cần cân nhắc những điều quan trọng nào khác?

Sau khi cân nhắc những điểm chính nêu trên, 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 những ưu điểm và nhược điểm, thì phần này sẽ đề cập đến những đ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 các 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, tương tự như JSON.
  • Dữ liệu phân cấp, phức tạp sẽ dễ dàng sắp xếp hơ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 bước 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.
  • Bạn có thể lưu trữ dữ liệu đơn giản một cách dễ dàng.
  • Dữ liệu phân cấp, phức tạp sẽ khó sắp xếp hơ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à khi không có mạng

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ể hoạt động khi không có mạng.

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

Trạng thái hiện diện

Bạn nên biết thời điểm một ứng dụng đ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ợ nguyên bản. Bạn có thể dựa vào khả năng hỗ trợ trạng thái hoạt động của Realtime Database bằng cách đồng bộ hoá Cloud FirestoreRealtime Database bằng Cloud Functions. Hãy xem phần Tạo trạng thái hoạt động trong Cloud Firestore. Hỗ trợ tính năng nhận biết sự có mặt.

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 với sắp xếp và lọc phức tạp.
  • Bạn có thể xâu chuỗi các bộ lọc và kết hợp việc lọc và sắp xếp trên một thuộc tính trong một truy vấn duy nhất.
  • Truy vấn có độ sâu hạn chế: truy vấn 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.
  • Các truy vấn phải luôn trả về toàn bộ tài liệu.
  • Theo mặc định, các truy vấn được lập chỉ mục: 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 với các tính năng lọc và sắp xếp bị hạn chế.
  • Các truy vấn có thể sắp xếp hoặc lọc theo một thuộc tính, nhưng không được sắp xếp và lọc cùng lúc.
  • Theo mặc định, các truy vấn có độ 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 ở mọi mức độ chi tiết, cho đến các giá trị nút lá riêng 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 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.
  • Thao tác ghi 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ử mảng và toán tử số.
  • Giao dịch có thể đọc và ghi dữ liệu từ bất kỳ phần nào của cơ sở dữ liệu một cách tự động.
Các thao tác ghi và giao dịch cơ bản.
  • 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 đa khu vực và theo khu vực có khả năng 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 quá 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 riêng biệt, đảm bảo khả năng mở rộng trên toàn cầu và độ tin cậy cao.
  • Có nhiều cấu hình theo khu vực hoặc nhiều khu vực trên toàn thế giới.
Đọc thêm về các đặc điểm hiệu suất và độ tin cậy của Cloud Firestore trong Thoả thuận mức độ cung cấp dịch vụ.
Realtime Database là một giải pháp theo khu vực.
  • Có sẵn trong các cấu hình theo khu vực. Cơ sở dữ liệu chỉ có thể được cung cấp theo 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 quá 10 mili giây. Đây là lựa chọn lý tưởng để đồng bộ hoá trạng thái thường xuyên.
Tìm hiểu thêm về các đặc điểm hiệu suất và độ 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 kỳ cao.
  • Thời gian hoạt động thường đạt 99,999%.
  • Nếu tính sẵn có là yếu tố quan trọng nhất (ví dụ: 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.
  • Thời gian hoạt động thường đạt 99,95%.

Khả năng mở rộng

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Tính năng mở rộng quy mô hoạt động tự động.
  • Tự động điều chỉnh quy mô hoàn toàn. 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.
Việc mở rộng quy mô đòi hỏi phải phân đoạn.
  • 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 duy nhất. Để mở rộng quy mô vượt quá mức đó, 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 đối với từng phần dữ liệu.

Bảo mật

Cloud Firestore [ ƯU TIÊN ] Realtime Database
Các quy tắc không xếp tầng kết hợp việc uỷ quyền và xác thực.
  • Đọc và ghi từ các SDK 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 Giải pháp quản lý danh tính và quyền truy cập (IAM).
  • Các quy tắc không xếp tầng trừ phi 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 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 xếp tầng tách biệt việc uỷ quyền và xác thực.

Giá

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

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

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ó thể chấp nhận.

Đọc thêm về Cloud Firestore các gói giá.

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

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

Đang 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 loại dữ liệu và các 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 của mình.

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 một 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 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 các dự án Firebase.