Bạn hiện có 3 lựa chọn:
Lựa chọn 1: Khách hàng bên
này về cơ bản là phương pháp mà bạn đề cập. Chọn tất cả từ bộ sưu tập và đếm ở phía khách hàng. Điều này hoạt động tốt đủ cho các tập dữ liệu nhỏ nhưng rõ ràng là không hoạt động nếu tập dữ liệu lớn hơn.
Phương án 2: Viết thời gian nhất nỗ lực
Với phương pháp này, bạn có thể sử dụng đám mây Chức năng để cập nhật một bộ đếm cho mỗi lần thêm và xóa từ bộ sưu tập.
Điều này phù hợp với bất kỳ kích thước tập dữ liệu nào, miễn là bổ sung/xóa chỉ xảy ra với tốc độ nhỏ hơn hoặc bằng 1 mỗi giây. Điều này cung cấp cho bạn một tài liệu để đọc để cung cấp cho bạn số lượng gần như hiện tại ngay lập tức.
Nếu cần vượt quá 1 mỗi giây, bạn cần triển khai distributed counters per our documentation.
Lựa chọn 3: Viết thời gian chính xác
Thay vì sử dụng đám mây Chức năng, trong ứng dụng của bạn, bạn có thể cập nhật bộ đếm cùng một lúc khi bạn thêm hoặc xóa một tài liệu. Điều này có nghĩa là bộ đếm cũng sẽ là hiện tại, nhưng bạn sẽ cần đảm bảo bao gồm logic này ở bất cứ nơi nào bạn thêm hoặc xóa tài liệu.
Giống như phương án 2, bạn sẽ cần phải thực hiện phân phối quầy nếu bạn muốn vượt qua mỗi giây
Nguồn
2017-10-03 22:04:35
Chỉ cần tự hỏi, có khả năng là những cách khác để thực hiện việc này trong tương lai không? Một cái gì đó đơn giản như hàm tổng hợp SQL COUNT sẽ hoạt động trên các tập dữ liệu lớn trong khi vẫn duy trì hiệu năng tốt? – saricden
@saricden COUNT tổng hợp thực tế có rất nhiều vấn đề về hiệu suất tiềm năng.Hệ thống Cloud Firestore được thiết kế cho các hoạt động giữ cho các đặc tính hiệu suất giống nhau bất kể kích thước tập dữ liệu, mà COUNT không. Chúng tôi đang tìm kiếm các tùy chọn trong tương lai để đạt được sự cân bằng. –