我正在编写一个 RESTful 服务,它使用 application/octet-stream
并接受二进制文件以将它们写入磁盘(Tomcat 8、Windows Server 2012R2、JAX-RS)。然后我需要将文件内容插入到 Oracle 表中。
服务本身运行良好,接受文件并将它们写入磁盘。 我的问题(或称之为最佳实践问题)是如何将数据传输到 Oracle 数据库。当然,我可以在服务本身中打开一个连接,每次服务接受文件时都会调用该连接,但这真的是“正确”的方式吗?我们谈论的是许多小文件(假设每分钟 100 个,每个大约 300 字节)。
我应该创建一个连接池吗?或者甚至是一个使 Oracle 连接永久打开的独立程序?不幸的是,我目前无法真正进行基准测试,因为我在一个孤立的测试服务器上。
那么,tl;dr:如何将 RESTful 服务接受的许多小文件的内容传输到 Oracle 数据库?
最佳答案
当您在 Tomcat 上部署时,使用 Tomcat managed connection pool是最通用的方式。我们使用它并从中获得非常好的性能。你可以推出自己的并对其进行基准测试,但我不确定这样做的优点。我知道我会首先尝试与 Tomcat 最佳集成的方式,并且只有当它不执行移动到像 C3P0 这样的库时。
根据您的用例,您可以不将文件写入磁盘而只是将它们插入数据库。由于您的文件很小,因此甚至没有理由进行异步或 fork 线程进行插入。
关于java - JAX-RS RESTful 服务和永久 Oracle 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573151/