2

我有一个我最近用 Java 编写的程序,它做了一些事情。它主要依赖于使用connector/j从mysql数据库中获取数据。该数据库位于远程服务器(托管在荷兰)上。这会导致一些延迟问题。我最近开始意识到将 JSON 与 Java 结合使用的能力。

所以,我的问题:如果我有某种前端脚本,我发出 http 请求以返回 json,这是一种 API,这是否比在远程服务器上使用直接请求 mysql 更快?他们是这个的缺点吗?

4

1 回答 1

1

从技术上讲,答案是“视情况而定”:)

我的一些想法在这里......

我可以说,根据我的经验,主要是出于安全原因,您的数据库向远程连接开放是非常罕见的情况。

另一方面,当进行“头对头”比较时,我希望 JSON 会更慢,因为这里有 http 开销 + JSON 本质上是数据表示的文本协议(与序列化二进制文件相比,读取效率不高)数据)。

此外,此解决方案将需要在数据库和您的 java 客户端代码之间使用某种 HTTP 服务器。您还应该注意数据传输的问题(进程间通信通常很慢),因此如果您将 http 服务器放置在远离 db 服务器的位置,则很可能需要花费大量时间来获取数据。

话虽如此,还有很多事情要提: - 当您使用 json/xml/序列化对象 (RMI)/ 时,您可以“预处理”您的数据 - 这真的很重要,因为有时一般来说,它比 SQL 更灵活。

  • 数据缓存。有时您可以预先缓存数据,甚至不转向数据库。

  • 弄清楚到数据库的流量实际上是怎样的。例如,当您在 Oracle 中使用普通 JDBC 时,有时它会向数据库发出额外的请求(您可以使用嗅探器查看它)并带来额外的数据块。它发生在著名的循环中:

    while( resultSet.next() ) { ///.... 做你的事 }

它通常发生在大的结果中。

  • 也许您可以通过优化查询本身来大大改善总处理时间,但这是另一回事。

对我来说,在数据库和远程客户端之间维护一些东西通常是值得的,这听起来很对。

希望这可以帮助

于 2012-09-11T06:31:53.360 回答