我有一个我最近用 Java 编写的程序,它做了一些事情。它主要依赖于使用connector/j从mysql数据库中获取数据。该数据库位于远程服务器(托管在荷兰)上。这会导致一些延迟问题。我最近开始意识到将 JSON 与 Java 结合使用的能力。
所以,我的问题:如果我有某种前端脚本,我发出 http 请求以返回 json,这是一种 API,这是否比在远程服务器上使用直接请求 mysql 更快?他们是这个的缺点吗?
我有一个我最近用 Java 编写的程序,它做了一些事情。它主要依赖于使用connector/j从mysql数据库中获取数据。该数据库位于远程服务器(托管在荷兰)上。这会导致一些延迟问题。我最近开始意识到将 JSON 与 Java 结合使用的能力。
所以,我的问题:如果我有某种前端脚本,我发出 http 请求以返回 json,这是一种 API,这是否比在远程服务器上使用直接请求 mysql 更快?他们是这个的缺点吗?
从技术上讲,答案是“视情况而定”:)
我的一些想法在这里......
我可以说,根据我的经验,主要是出于安全原因,您的数据库向远程连接开放是非常罕见的情况。
另一方面,当进行“头对头”比较时,我希望 JSON 会更慢,因为这里有 http 开销 + JSON 本质上是数据表示的文本协议(与序列化二进制文件相比,读取效率不高)数据)。
此外,此解决方案将需要在数据库和您的 java 客户端代码之间使用某种 HTTP 服务器。您还应该注意数据传输的问题(进程间通信通常很慢),因此如果您将 http 服务器放置在远离 db 服务器的位置,则很可能需要花费大量时间来获取数据。
话虽如此,还有很多事情要提: - 当您使用 json/xml/序列化对象 (RMI)/ 时,您可以“预处理”您的数据 - 这真的很重要,因为有时一般来说,它比 SQL 更灵活。
数据缓存。有时您可以预先缓存数据,甚至不转向数据库。
弄清楚到数据库的流量实际上是怎样的。例如,当您在 Oracle 中使用普通 JDBC 时,有时它会向数据库发出额外的请求(您可以使用嗅探器查看它)并带来额外的数据块。它发生在著名的循环中:
while( resultSet.next() ) { ///.... 做你的事 }
它通常发生在大的结果中。
对我来说,在数据库和远程客户端之间维护一些东西通常是值得的,这听起来很对。
希望这可以帮助