将桌面客户端直接连接到MySQL是否明智?

时间:2009-06-25 07:44:51

标签: mysql client-server

我正在编写一个Java桌面客户端应用程序,用于从远程MySQL服务器检索数据。出于开发目的,我已将其直接连接到MySQL服务器(即使用DriverManager.getConnection(databaseURL)等),但一直打算转向使用Web服务(一旦构建完成)。我的问题是我是否不能继续直接连接?

除了要编写更多代码之外,Web服务还会给我什么?我必须实现自己的身份验证;仅仅依赖MySQL的错误是什么?

(我在说这个问题而不是消极的,因为我认为这种模式在这些日子里有点不受欢迎;这就是为什么我要问它,因为在我看来它是一个完全没问题的东西要做。)

感谢您提供给我的任何见解!

6 个答案:

答案 0 :(得分:3)

有几个原因(没有特别的顺序):

  • 只在一个地方更改业务逻辑,数据库架构更改对客户端(只是服务)没有影响
  • MySQLs授权系统相当粗糙
  • 更安全,因为您不需要向外界打开数据库
  • 通过标准HTTP端口运行Web服务,减少防火墙的麻烦
  • 无需安装ODBC驱动程序

当然,Web服务并不是万能的灵丹妙药。以上某些内容可能不适用于您的特定情况,请使用最适合您的方式。

答案 1 :(得分:2)

好吧,只要你给客户端一个只有恰当权限的用户,我就没有看到任何错误的直接连接到MySQL。也许如果您将要运行许多这样的客户端,这将保持与MySQL的大量连接打开,而Web服务可以使用单个连接并处理来自所有客户端的负载。

Web服务的真正用途是当您拥有许多不能在数据库中的业务逻辑时。将此逻辑放在客户端是一个非常糟糕的主意,因为用户可能会运行过时的版本,依此类推。此外,Web服务允许您拥有不同类型的客户端(例如Windows客户端,Web客户端等),而不必重写除演示文稿之外的任何逻辑。

答案 2 :(得分:0)

Web服务将使您能够缓存数据,从而减轻数据库的压力。 它还可以更轻松地将数据从系统公开到其他系统。 另一件事是灵活性 - 将Web服务作为另一层,您可以在一个位置更改所有客户端的连接字符串/方案更改,您不必重新分发客户端。
你会不会需要这些?正如你所说,我通常不会选择范例,但我认为网络服务是有意义的。但是,只有你知道你的应用程序的设计:有多少人会使用这个客户端?与MySQL服务器的连接是否需要客户端计算机上的任何特殊软件/配置? (例如,Oracle确实如此)。

答案 3 :(得分:0)

这可以提供其他答案,但考虑到如果您允许客户端直接连接到中央服务器,这将为他们提供必要的凭据,以便在他们正在使用的数据库中运行任何查询。我不知道如何很好的支持是在MySQL中限制资源使用,但我敢打赌,现在一个确定的客户端可以连接到您的数据库服务器并启动一个查询,如此糟糕的写入它会使您的数据库服务器瘫痪。他们不一定会以恶意的意图这样做,也许他们只是试图实现你没想到的额外功能。

基本上,Web服务允许您执行的操作是从用户那里获取一些功能。在这种情况下他们不需要的力量。除非客户端当然运行自己的数据库服务器,但这完全是一个不同的环境。 (如果他们想要崩溃他们自己的数据库,那就是他们的业务)

答案 4 :(得分:0)

显然,直接连接到数据库需要直接从Internet访问数据库的接口。这意味着除非您非常小心设置权限,否则可能会使整个数据库容易受到攻击。而对于Web服务,任何用户对数据库的唯一访问权限是通过Web服务可用的访问/功能。我认为正确保护和维护在网络上打开的MySQL数据库比创建Web服务认证层所涉及的额外代码更麻烦。

另外,如果您需要以任何方式更改表格,则必须更新客户端应用程序,而不是仅仅更新Web服务,如果您的查询是由客户端生成的。

答案 5 :(得分:0)

更多问题而不是答案,两种方法之间的速度影响是什么?即直接连接到mysql或使用Web服务