Я использую firebase firestore для своего собственного приложения, я создаю приложение, которое будет отправлять геолокацию пользователя в firestore и генерировать тепловую карту, и приложение будет отправлять местоположение пользователя каждые 5 минут, мои данные выглядят так
Сейчас у меня около 1000 документов, каждый раз, когда я обновляю приложение, оно пытается получить все координаты для создания тепловой карты.
Проблема, с которой я сталкиваюсь, заключается в том, что когда он генерирует тепловую карту, ему нужно будет прочитать все 1000 документов, что, если у меня есть 5000 координат/документов, и у меня есть 10 пользователей, чтобы использовать его, он достигнет предела чтения документов в firebase бесплатно тариф 50к/день.
Я знаю, что могу заплатить немного денег, чтобы увеличить лимит чтения, но мне просто интересно, столкнется ли кто-нибудь с этим и найдет ли оптимальный способ решить эту проблему. Спасибо!
Да, это то, что я хочу сделать, я нашел это сегодня firebase.google.com/docs/firestore/query-data/…, даже думаю, что следует добавить это в облачную функцию, это еще больше уменьшит чтение.
@YiZhou На самом деле не рекомендуется использовать прослушиватель (например, onSnapshot) в облачной функции, поскольку срок его службы обычно очень короткий.
Я использую это прямо сейчас firebase.google.com/docs/firestore/…

Я не знаю всех ограничений вашего приложения, но вы могли бы хранить все координаты одного месяца в одном документе, в массиве, уменьшив на 8928 число чтений документа.
Если я правильно сделал математику, основываясь на этой странице документации https://firebase.google.com/docs/firestore/размер хранилища, которая объясняет расчеты размера хранилища, вы можете рассчитать, что документ с 3 массивами с именами lat, long и ts в вашей коллекции coords, в которой хранятся данные для 288 * 31 триплетных значений ( 288 = каждые 5 минут в течение одного дня) будет иметь максимальный размер 857 088 байт, что меньше максимально возможного размера документа (т. е. 1 048 576 байт), как показано здесь: https://firebase.google.com/docs/firestore/quotas
Конечно, вам придется иметь дело с полями массива, но для этого вы можете использовать firebase.firestore.FieldValue.arrayUnion();, см. https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array
@Yi Zhou Привет, у тебя было время посмотреть на предложенное решение?
Разве вас не интересуют только координаты, которые изменились с момента последнего обновления тепловой карты? Кроме того, почему вы принудительно обновляете свои данные ... что, если они статичны в течение нескольких часов? Не лучше ли просто наблюдать за измененными узлами и обновлять данные только при необходимости?