Я пытаюсь найти наиболее эффективное и масштабируемое решение для обновления данных из взаимодействия с пользователем в ячейке табличного представления.Внутри ячейки пользователь может like
сообщение, share
сообщение или view
видео.Видео может быть просмотрено несколько раз, поэтому счетчик будет нуждаться в обновлении для количества просмотров.
Во всех случаях я планирую запускать облачные функции для обновления данных везде, где данные дублируются, поэтому я сосредоточен на обновлении одного сообщения.
Три варианта, которые я рассматриваю:
1.Обновляйте firebase при каждом взаимодействии.
В основном, если пользователь нажимает «лайкать», делиться или смотреть видео, он обновляет запись в firebase.Если они не совпадают или не делятся сразу после этого, он будет удален из базы.
Это кажется самым простым решением, и оно должно быть немедленным, и это то, к чему я стремлюсь, но потенциально, если пользователь любит / не любит, делится / не общается и смотрит видео 3 раза, это 7 записей для одного поста.для одного пользователя.Кроме того, облачная функция может выполнять эти 7 действий и выполнять запись в другие области базы данных.
2.Как и выше, но обновлять представления в пакетной транзакции
Следуя тому же процессу, что и выше для лайков / акций, но обновляя счетчик просмотров только после исчезновения ячейки табличного представления.После этого запустится транзакция для обновления представлений в записи за одну запись.Следовательно, наихудший сценарий - 5 операций записи / публикация функции облака 5 раз.
Я думаю, что это мое предпочтительное решение и наиболее логичное, хотя пакетную транзакцию нужно будет вызывать, если пользователь прокручивает и ячейка исчезает, если приложение завершается и если приложение переходит в фоновый режим, что я представляюне слишком проблематично.
3.Сохраните все данные и обновите публикацию, когда ячейка табличного представления исчезнет
Вместо записи лайков / публикаций по мере того, как они происходят, сохраните то, что делает пользователь, затем, как только ячейка табличного представления исчезнет, вызовите транзакцию, чтобы обновить подобное., поделиться и просмотров в одной транзакции.
Для масштабируемости это кажется наиболее логичным?Но было бы задержка на подобное уведомление, достигающее пользователя.(Опять же, я думаю, что это не проблема).
Мой предпочтительный вариант - вариант 2, мне просто интересно, насколько эффективным будет, если приложение выросло, а 5 записей становятся 500 записей, но тогда 500 записей может быть приемлемым?
Если у кого-нибудь есть какой-либо совет или, возможно, другой вариант, я был бы признателен.