Firestore: эффективный способ обновления данных из ячейки - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь найти наиболее эффективное и масштабируемое решение для обновления данных из взаимодействия с пользователем в ячейке табличного представления.Внутри ячейки пользователь может like сообщение, share сообщение или view видео.Видео может быть просмотрено несколько раз, поэтому счетчик будет нуждаться в обновлении для количества просмотров.

Во всех случаях я планирую запускать облачные функции для обновления данных везде, где данные дублируются, поэтому я сосредоточен на обновлении одного сообщения.


Три варианта, которые я рассматриваю:

1.Обновляйте firebase при каждом взаимодействии.

В основном, если пользователь нажимает «лайкать», делиться или смотреть видео, он обновляет запись в firebase.Если они не совпадают или не делятся сразу после этого, он будет удален из базы.

Это кажется самым простым решением, и оно должно быть немедленным, и это то, к чему я стремлюсь, но потенциально, если пользователь любит / не любит, делится / не общается и смотрит видео 3 раза, это 7 записей для одного поста.для одного пользователя.Кроме того, облачная функция может выполнять эти 7 действий и выполнять запись в другие области базы данных.

2.Как и выше, но обновлять представления в пакетной транзакции

Следуя тому же процессу, что и выше для лайков / акций, но обновляя счетчик просмотров только после исчезновения ячейки табличного представления.После этого запустится транзакция для обновления представлений в записи за одну запись.Следовательно, наихудший сценарий - 5 операций записи / публикация функции облака 5 раз.

Я думаю, что это мое предпочтительное решение и наиболее логичное, хотя пакетную транзакцию нужно будет вызывать, если пользователь прокручивает и ячейка исчезает, если приложение завершается и если приложение переходит в фоновый режим, что я представляюне слишком проблематично.

3.Сохраните все данные и обновите публикацию, когда ячейка табличного представления исчезнет

Вместо записи лайков / публикаций по мере того, как они происходят, сохраните то, что делает пользователь, затем, как только ячейка табличного представления исчезнет, ​​вызовите транзакцию, чтобы обновить подобное., поделиться и просмотров в одной транзакции.

Для масштабируемости это кажется наиболее логичным?Но было бы задержка на подобное уведомление, достигающее пользователя.(Опять же, я думаю, что это не проблема).


Мой предпочтительный вариант - вариант 2, мне просто интересно, насколько эффективным будет, если приложение выросло, а 5 записей становятся 500 записей, но тогда 500 записей может быть приемлемым?

Если у кого-нибудь есть какой-либо совет или, возможно, другой вариант, я был бы признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...