我应该直接访问mongodb吗?

时间:2014-01-12 20:44:09

标签: android mongodb

我们正在制作Android应用程序,它需要从mongodb数据库中获取数据。数据库中会有很多条目,并且会经常发出请求。我们应该直接访问它还是制作一个PHP脚本,它会访问它并以JSON格式返回所需的结果?

3 个答案:

答案 0 :(得分:6)

  

我们应该直接访问吗

肯定不希望直接将您的MongoDB服务器暴露给Android应用程序,尤其是如果应用程序具有允许写入访问权限的用户角色数据库。任何有权访问Android应用程序的人都可能会发现并提取这些凭据,如果您的Android应用程序旨在从更广泛的网络连接,则会不必要地暴露您的MongoDB服务器。您可能还在打开MongoDB服务器以进行可能的拒绝服务攻击或恶意查询。

MongoDB文档有一个关于Security Concepts的详细部分,包括网络暴露和安全性。任何数据库部署的最佳实践是限制可以直接连接的网络地址范围。通常,直接连接应限于您的应用程序服务器和监视应用程序,这些应用程序可能托管在同一网络基础结构中。

  

创建一个PHP脚本,它将访问它并以JSON格式返回所需的结果?

是的,推荐的方法是编写自己的界面,提供合适的API和身份验证控件。您应该能够找到PHP框架和/或库,以最大限度地减少您必须编写的自定义代码的数量(例如,REST,JSON,Oauth)。

您实施的界面可以:

  • 对最终用户可以运行的查询类型设置了一些限制(仅限您提供的内容,而不是完整的MongoDB API)
  • 允许应用程序使用适当的user privileges进行身份验证,而无需在Android应用中嵌入数据库凭据
  • 添加其他用户安全性,例如基于令牌的OAuth或Twitter / Facebook身份验证
  • 从MongoDB部署的基础架构详细信息中抽象出Android应用程序连接到的端点(您的Web界面)
  • 可能包括对常见查询或会话数据的缓存

答案 1 :(得分:0)

我会选择创建将处理所有逻辑和数据过滤的PHP脚本,作为JSON响应发送回来为应用程序做好准备。

以粗体标记,这将使您不必担心过滤客户端“android应用程序”端的数据,并将所有脏工作留在服务器端。

答案 2 :(得分:0)

有两个选项

  1. 制作一个包含所有CRUD操作的API服务,以便您使用 将能够从您的申请中打电话。

  2. 您可以直接通过Java MongoDb Driver访问。读 更多here如何开始使用java mongodb驱动程序。