В чем преимущество Android Room перед Cloud Firestore для постоянного локального хранилища? - PullRequest
0 голосов
/ 10 января 2019

Мое приложение Android использует нетривиальный объем структурированных данных, чтобы предоставить пользователю подходящие рекомендации, поэтому локальная база данных может показаться подходящей. Room / DAO / ViewModel выглядит как хорошая архитектура и имеет достаточную абстракцию базовой реализации. Данные внутри не будут меняться очень часто, и когда это происходит, они передаются только в одну сторону: с сервера на локальную базу данных на устройстве пользователя, и никак иначе; Для большинства запросов имеет смысл обслуживать локальные данные, хотя приложение, скорее всего, будет регулярно подключаться к сети.

Я использую Google Firebase для работы с бэкэнд-сервисами и базу данных Cloud Firestore для хранения данных на стороне сервера. Firestore предоставляет локальный кеш пользовательских данных для автономного использования, что было бы намного проще, чем реализация и синхронизация моей собственной базы данных. Есть ли веские причины избегать такого подхода?

Есть несколько похожих вопросов, таких как: Насколько надежно Firestore как механизм автономного сохранения? или Частичная автономная синхронизация в Firebase Cloud Firestore . Я думаю, что это не так, потому что я не ищу долговременную автономную постоянную работу, а надежную локальную копию, чтобы избежать ненужной передачи данных.

1 Ответ

0 голосов
/ 10 января 2019

Существует огромная разница между этими двумя типами баз данных. Постоянная библиотека Room предоставляет уровень абстракции поверх SQLite, чтобы обеспечить более надежный доступ к базе данных, в то время как Cloud Firestore - это гибкая, масштабируемая база данных в реальном времени для разработки на мобильных устройствах, в Интернете и на серверах.

Firestore не предназначен для использования в качестве автономной базы данных только , поскольку вы можете использовать Room, он действительно разработан как онлайновая база данных в реальном времени, которая может работать в течение коротких или промежуточных периодов отключения. Cloud Firestore использует SQLite для своего механизма сохранения. Поэтому, если вы говорите, что ваши пользователи будут в основном онлайн, у вас не должно быть проблем с производительностью или долговечностью.

Данные внутри не будут меняться очень часто, и когда они это делают, они текут только в одну сторону:

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

Так что, если вы планируете использовать автономную персистентную функцию Cloud Firestore , обратите внимание, что она на самом деле включена по умолчанию на Android и iOS, поэтому вам ничего не нужно делать.

И чтобы ответить на ваш первоначальный вопрос:

В чем преимущество Android Room перед Cloud Firestore для постоянного локального хранилища?

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

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