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 cơ sở dữ liệu tài liệu dựa trên đám mây mà khách hàng có thể truy cập. Chúng tôi khuyên khách hàng mới nên bắt đầu với Cloud Firestore:

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

  • Cơ sở dữ liệu thời gian thực là cơ sở dữ liệu JSON của Firebase cổ điển. Nó phù hợp cho 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ộ hóa có độ trễ thấp với khả năng mở rộng hạn chế.

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 cơ sở dữ liệu . Nếu bạn vẫn đang cân nhắc ưu điểm và nhược điểm, phần này sẽ đề 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.

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian thực
Lưu trữ dữ liệu dưới dạng bộ sưu tập tài liệu.
  • Dữ liệu đơn giản dễ dàng lưu trữ trong các tài liệu, rất giống với JSON.
  • Dữ liệu phức tạp, có thứ bậc dễ dàng 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 chuẩn hóa 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ễ dàng để 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 .

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à đề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.

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian thực
Hỗ trợ ngoại tuyến cho Apple, Android và máy khách web. Hỗ trợ ngoại tuyến cho khách hàng Apple và Android.

Sự hiện diện

Việc biết khi nào khách hàng trực tuyến hoặc ngoại tuyến có thể hữu ích. 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 thông tin cập nhật mỗi khi trạng thái kết nối của máy khách thay đổi.

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian thực
Không được hỗ trợ nguyên bản. Bạn có thể xây dựng dựa trên sự 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 cách sử dụng Chức năng đám mây Xem Xây dựng hiện diện trong Cloud Firestore . Sự hiện diện được hỗ trợ.

Truy vấn

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

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian thực
Các truy vấn được lập chỉ mục với tính năng sắp xếp và lọc kết 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 rất nông: chúng chỉ trả về 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.
  • 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.
Truy vấn sâu với tính 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 chứ không phải cả hai.
  • Theo mặc định, các 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 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.

Viết và giao dịch

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian thực
Hoạt động viết và giao dịch nâng cao.
  • Ghi các thao tác dữ liệu thông qua các thao tác 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 một cách nguyên tử từ bất kỳ phần nào của cơ sở dữ liệu.
Hoạt động 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ể.

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

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian thực
Cloud Firestore là một giải pháp khu vực và đa khu vực có khả năng tự động mở rộng quy mô.
  • 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 toàn cầu và độ tin cậy cao.
  • Có sẵn ở 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 tính độ tin cậy và hiệu suất của Cloud Firestore trong Thỏa thuận cấp độ dịch vụ .
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 ở mức độ sẵn có của 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. Một lựa chọn lý tưởng để đồng bộ hóa trạng thái thường xuyên.
Đọc thêm về các đặc tính độ 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ụ .

Thời gian hoạt động

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian thực
Hiệu suất thời gian hoạt động cực cao.
  • Hiệu suất thời gian hoạt động điển hình là 99,999%.
  • Nếu tính khả dụng là vô cùng quan trọng, 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 điển hình là 99,95%.

Khả năng mở rộng

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian thực
Chia tỷ lệ là tự động.
  • Cân hoàn toàn tự động. Giới hạn mở rộng là khoảng 1 triệu kết nối đồng thời và 10.000 lần ghi/giây. Chúng tôi có kế hoạch 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ô yêu cầu sharding.
  • Mở rộng quy mô lên khoảng 200.000 kết nối đồng thời và 1.000 lần ghi/giây trong một cơ sở dữ liệu. Mở rộng quy mô hơn nữa đòi hỏi phải bảo vệ 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 vào từng phần dữ liệu.

Bảo vệ

Ưu tiên Cloud Firestore Cơ sở dữ liệu thời gian 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ằng 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ừ khi bạn sử dụng ký tự đại diện.
  • 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.
Ngôn ngữ quy tắc xếp tầng phân tách ủy quyền và xác thực.

Định giá

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

Ưu tiên Cloud Firestore 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à ở tốc độ thấp hơn là 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ó thể chấp nhận được.

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

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 giá Cơ sở dữ liệu thời gian thực .

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à thư viện máy khách hoạt động theo cách tương tự. Hãy ghi nhớ những khác biệt đã nêu trước đây 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 sự so sánh này đã giúp bạn giải quyết đượ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 các dự án Firebase của mình.