database - 访问远程数据库的最佳方式 : via webservice or direct DB-access?

标签 database web-services performance security

我正在寻求为 Mac 和 iOS 设备开发应用程序。该应用程序将依赖存储在远程数据库中的信息。它需要对数据库进行读(选择)和写(插入、更新、删除)访问。该应用程序将是一个多用户应用程序。

现在我正在研究访问数据库的两种不同方法: - 通过 Web 服务:应用程序访问访问数据库的 Web 服务(REST、JSON)。身份验证将通过基于 SSL (https) 的 HTTP 身份验证完成。 - 通过 VPN 直接访问远程数据库。

该应用最多可供 100 人使用,面向小型团体/组织/企业。

所以我的问题是:访问数据库的最佳方法是什么?安全性和性能如何?小型企业的典型实现是什么样的?

任何建议将不胜感激。

谢谢

最佳答案

使用网络服务在客户端和数据库之间增加了一个间接级别。这有几个优点,都是因为客户不需要了解数据库,只需要了解您的 Web 服务接口(interface)。由于客户端应用程序比服务器端代码更难以控制和更新,因此在服务器上添加一定程度的业务逻辑是值得的,它可以让您调整系统而无需将更新推送到客户端。主要优势:

  • 灵 active - 只要保持相同的网络服务界面,您就可以更改数据库配置/完全替换数据层,而无需更改客户端应用程序。
  • 安全性 - 为您的网络服务实现一些身份验证机制,并避免向客户端提供对您的数据库引擎的访问凭据。

也有一些缺点:您通过增加一定程度的复杂性来为这种灵 active 付出代价 - 仅将数据库访问编码到客户端并完成它可能会更快。将 Web 服务层视为一项可能会带来返回的投资。是否值得真的取决于您的业务需求和前景。

关于database - 访问远程数据库的最佳方式 : via webservice or direct DB-access?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5689539/

相关文章:

web-services - 无法使用以下搜索条件找到 X.509 证书 ----

performance - Oracle SQL 占用巨大的临时空间

java - 如何解决android.database.sqlite.SQLiteException : no such column: ttd (code 1)

Web 服务中的 SQL 最佳实践

sql - 无需 ID 即可创建关系

.net - WCF .svc 可通过 HTTP 访问但访问 WSDL 导致 "Connection Was Reset"

linux - infiniband rdma 传输带宽差

java - 确定文本文件长度的最有效方法是什么?

SQL查询问题

Python Flask sqlalchemy 将新列插入表中 - heroku postgresql