从Android App连接到MongoDB的更好方法

10 android mongodb

从我的Android应用程序,我连接到MongoDB通过mLab,并寻求一些澄清.

根据mlab文档,提到使用它来MongoDB Driver获得更好的安全性和性能而不是使用mLab Data API.

但是使用驱动程序直接从Android应用程序连接到MongoDB是一个好习惯.下面连接智能的哪种方式更好?

  1. Mongo数据库驱动程序
  2. mLab Data API并通过Anroid App使用它(此API仅提供基本功能)
  3. 创建Web API并通过Android App使用它

除此之外还有其他任何建议吗?

Ire*_*Ire 6

根据问题中建议的选项,我认为第三种选择是唯一合理的选择.讨论如下:


  1. Mongo数据库驱动程序

出于多种原因,在Android中使用mongoDB驱动程序并不是一个好主意.

根据StackOverflow的回答,驱动程序与开箱即用的Android不兼容.有人在Github分配了项目并使其与Android兼容,但该项目已经超过一年没有更新.

在更高级别上,数据库驱动程序不是通过您无法控制的网络连接到数据库的好方法,尤其是从移动设备.

保护数据库内容也更难(不可能?).每个应用程序都可以访问所有数据库.如果数据库不存储任何私有数据,则可能没问题.另一个很大的安全风险是,您的应用程序将包含直接连接到数据库的必要凭据,这很容易获得.

此外,此解决方案将使Android应用程序依赖于数据库内部.拥有API可以增加灵活性并保护应用程序.

这不是一个完整的列表,在移动应用程序中不使用数据库驱动程序的许多其他原因可能也适用,这也取决于您正在构建的应用程序类型.

  1. mLab数据API

我对mLab的Data API不是很熟悉.从我通过阅读他们的文档收集到的内容看起来它只是一个简单的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.
Run Code Online (Sandbox Code Playgroud)

使用此方法会将应用程序与数据库紧密耦合,并且无法为数据提供足够的保护.

  1. 创建Web API并通过Android App使用它

自定义API是大多数应用程序解决此类情况的方式.MongoDB的文档有几个现有框架的引用,可以通过HTTP与mongoDB数据库进行交互.建议使用这样的框架来提供稳健性,安全性和社区支持.

开发自定义API将为您提供更好地适应您的应用程序需求的解决方案,同时保持比其他选项更大的灵活性.它需要在后端进行一些工作,但它将能够提供身份验证和授权,这对于保护数据库及其内容至关重要.

如果将来计划使用相同数据库的其他客户端(iOs/web /桌面应用程序,其他服务器......),那么设计API也将具有许多优势.开发新客户将更容易.在这种情况下,用于制作良好API的努力将是一项很好的投资.

额外选择

Stitch(在另一个答案中也引用)看起来是一个很好的解决方案,除非它永远不会出现测试版.很多都是开箱即用的,它允许一定程度的定制和灵活性.使用针脚可能有助于减少后端的工作量.

希望这可以帮助!