Лучший способ подключения к MongoDB из приложения Android

В моем приложении Android я подключаюсь к MongoDB через mLab и ищет некоторые пояснения.

В соответствии с документацией mlab упоминается использование MongoDB Driver для повышения безопасности и производительности вместо использования mLab Data API.

Но хорошо ли подключаться к MongoDB прямо из приложения Android с помощью драйверов. Каков лучший способ подключения wit ниже?

  • Драйверы Mongo DB
  • mlab Data API и потребляет его через приложение Anroid (этот API предоставляет только базовые функции)
  • Создайте веб-API и используйте его в приложении для Android.

Также любые другие предложения, кроме этого?

Ответ 1

Из вариантов, которые предлагаются в вопросе, я считаю, что третий вариант является единственным разумным. Обсуждение ниже:


  • Драйверы Mongo DB

Использование драйвера mongoDB в Android - отличная идея по нескольким причинам.

В соответствии с этим fooobar.com/questions/561726/... драйвер несовместим с Android из коробки. Есть кто-то, у которого разветкил проект на Github и сделал его совместимым с Android, но проект не обновлялся более года.

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

Также будет сложно (невозможно?) защитить содержимое базы данных. Каждое приложение будет иметь доступ ко всей базе данных. Это может быть нормально, если база данных не хранит никаких личных данных. Еще один большой риск для безопасности заключается в том, что приложение будет содержать необходимые учетные данные для непосредственного подключения к базе данных, которые могут быть легко получены.

Кроме того, это решение сделает приложение Android зависимым от внутренних компонентов базы данных. Наличие API добавит гибкость и защитит приложение.

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

  1. API данных mLab

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

В этом случае также применяются большинство проблем с использованием драйвера mongoDB. Приложение, которое вы распространяете, должно содержать ваш ключ API, и в их документации указано:

Your API key will give full access to all data within the databases belonging to your mLab account. If you distribute it to untrusted individuals, they can gain access to your account and your data.

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

  1. Создайте веб-API и используйте его в приложении для Android.

Пользовательский API - это способ, которым большинство приложений разрешают такую ​​ситуацию. Документация MongoDB содержит несколько ссылок на существующие структуры для взаимодействия с базой данных mongoDB через HTTP. Рекомендуется использовать такую ​​структуру для обеспечения надежности, безопасности и поддержки сообщества.

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

Если в будущем планируются другие клиенты (iOs/web/desktop apps, другие серверы...), которые будут использовать одну и ту же базу данных, проектирование вашего API также будет иметь много преимуществ. Разработка новых клиентов будет намного проще. В этом случае усилия, потраченные на создание хорошего API, будут хорошей инвестицией.

Дополнительная опция

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

Надеюсь, это поможет!

Ответ 2

Я определенно настоятельно рекомендую предоставить собственный API API для веб-API. Преимущества огромны. Я рекомендую сделать ваше приложение для Android полностью mongodb агностиком. За вашим собственным API вы делаете то, что вам нравится, возможно, вам захочется рассмотреть возможность перехода в другое хранилище данных в будущем. Вы делаете свое приложение более легким для тестирования/издевки. Что, если ваш монгодб мертв? Как вы кешируете, оптимизируете, обрабатываете ошибки... На самом деле вам нужно реализовать множество логики на сервере и не обязательно иметь всю свою логику, сидящую на вашем Android-приложении. Как еще вы создадите приложение для iPhone, а затем веб-приложение? Есть так много причин/преимуществ, чтобы не перейти непосредственно к mongodb.

Этот вопрос и обратная связь дадут вам больше советов и подробностей о том, почему рассматривать API для отдыха, а не напрямую обращаться к mongodb: https://softwareengineering.stackexchange.com/questions/277701/why-do-people-do-rest-apis-instead-of-dbals

Что касается рассмотрения Rest, Crud или web, я рекомендую вам прочитать приведенный здесь совет: В чем преимущество использования REST вместо не-REST HTTP?, Это даст вам информацию о возможностях, начинающихся с Crud API, Vs Rest. Я чувствую, что это может стать вашим следующим вопросом.

Ответ 3

Простой ответ - БОЛЬШОЙ НЕТ. Вам не следует подключаться к MongoDB или к любой базе данных, для которой нужны вставки данных. Рассмотрим следующие моменты

  • Вы можете хранить данные для нескольких пользователей вашего приложения, как вы запрещаете одному пользователю получать доступ к базе данных локально и создавать беспорядок?
  • Вы также сохраните данные для других пользователей, которые должны быть защищены. Предоставление местоположения и ключа API для вашего местоположения БД предоставляет данные всем, и вы теряете какой-либо контроль.
  • Даже если доступ к БД доступен только для чтения на основе допустимого сценария, в котором у вас есть приложение для чтения только для чтения, все еще выставляя расположение вашего сервера БД, это высокий риск. Хакер может прорваться в БД и изменить всю БД после получения доступа на запись. Местоположение базы данных никогда не должно быть открыто.
  • Отсутствие API означает, что вам понадобится код любой возможной логики в каждом из ваших приложений. Если вы будете поддерживать iOS в будущем и андроид тоже, то у вас возникнет проблема с написанием логики в обоих случаях и сохраните оба обновления на пользовательском телефоне. Это снова БОЛЬШОЕ НЕТ, так как вам нужно заставить пользователя обновлять приложение для чего-то, что можно было легко сделать на стороне сервера.

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

PS: Если вы создаете приложение, которое вы будете использовать, вы можете посмотреть его использование. А потом зачем использовать MongoDB? Просто используйте SQLite и сохраните все данные с самим приложением

Ответ 4

попробуйте стежок. он все еще находится в стадии бета-тестирования, и в настоящее время вы можете использовать его только на атласе, но через несколько дней вы можете использовать его также локально. Пожалуйста, перейдите по ссылке https://www.mongodb.com/cloud/stitch

Ответ 5

Подключение к вашему экземпляру БД из мобильного приложения БОЛЬШОЙ НЕТ, его кто-нибудь может перепроектировать ваше приложение, и ваш экземпляр БД открыт для атак, нарушения данных, It Scary!!

Напишите простой веб-сервис CRUD на выбранном вами языке и используйте их в своем приложении для доступа к БД, добавьте в свою службу некоторую логику аутентификации.

Существует множество инфраструктур веб-сервисов, которые будут работать для вас.

Нет dobut, Вариант 3 - это способ идти...