Откройте eXpress, и отправьте в чат простое "Привет". Обратите внимание на то, сколько времени прошло между тем, как вы нажали на кнопку "отправить", и тем, как сообщение появилось в чате. Для человеческого глаза отображение отправленного сообщения в чате происходит мгновенно. Это современный стандарт - действия в чате должны происходить максимально быстро. В идеальном случае никаких задержек быть не должно.
Отправка сообщения, тем не менее - это сложная операция, которая требует проделать большой объем работы. Самая существенная её часть - это работа с локальной базой данных. eXpress спроектирован как offline-first, и много данных хранит локально. У одного пользователя могут быть тысячи активных чатов, и десятки/сотни тысяч сообщений, и работа со всеми ними должна оставаться быстрой.
Меня зовут Воронская Дарья, я работаю в Android Core команде eXpress и занимаюсь оптимизацией работы приложения. Я расскажу про подходы, которые мы использовали, чтобы довести скорость отправки и рендера сообщения до того самого идеального результата.
В этой статье речь пойдет только о работе с локальной базой данных. Оптимизация БД - лишь часть большой работы, мы расскажем про наши решения по оптимизации presentation слоя в других статьях.
Наш стек: Kotlin, Room, Coroutines, WebSocket, OkHttp.