Я работаю над структурой данных с движущимися устройствами. Я уже добавил геохэш (открытый код местоположения). И я могу использовать где> = geohash_low и где <= geohash_high для поиска в области. </p>
Если я посмотрю это, я получу результаты в пределах (примерно) этой области. Следующий шаг - оглянуться назад для каждого устройства, когда они вошли или покинули область. Если я оглядываюсь назад, я могу определить это легко, но следующий шаг - определить это в тот момент, когда новое сообщение помещается в базу данных.
Моей первой идеей было бы создание копии каждого входящего сообщения на устройстве / в последний раз. А затем следите за изменениями с помощью облачной функции onChange. А затем определите, происходило ли изменение изнутри наружу или в другой области.
Но эта архитектура добавит дополнительную операцию записи (к последнему сообщению) при каждом входящем сообщении. И это добавит дополнительную операцию чтения (onChange).
Другой подход заключается в дополнительном чтении каждого входящего сообщения, чтобы прочитать последнее состояние внутри или снаружи области. И сравните это с текущей позицией. Это будет «стоить» только дополнительного чтения при каждом входящем сообщении. Если необходимо изменить состояние, выполните дополнительную запись.
В основном проблема в том, что мне нужно управлять состоянием, а функции не сохраняют состояния. Любые другие мысли ...
Большое спасибо за ваши мысли.