关于Java应用程序的数据库访问层实现的设计级查询

时间:2015-01-08 07:25:30

标签: java spring spring-batch spring-jdbc jdbctemplate

目标: 我想为may应用程序设计一个DAO层,它也将被web应用程序和核心java程序使用。

  1. Fist是为每个数据库操作提供Web服务的好方法 (例如:http://sometomcatappurl//insertEmp,updateEmp) 我打算在tomcat的context.xml中配置连接池 使用spring访问数据源,使用jdbc模板执行操作 我将在需要批量处理请求的几个地方使用批量更新。

  2. 上述URL将从各种内部应用程序调用以与数据库通信。

  3. 每天要求提供1000万次插入,2000万次更新,2000万次选择。

  4. 关注: Java,Tomcat,DB oracle和mysql是技术限制 -

    哪种方法是处理大型数据库操作员的最快和最畅销的方法。

    可以弹出处理大量请求,是否有一个使用Web服务来执行数据库操作的好方法。

    注意:我不希望通过从属性文件访问每个地方编写数据库连接来膨胀我的应用程序,这就是使用池大小进行上下文声明的原因。

1 个答案:

答案 0 :(得分:0)

Web服务最适合粗粒度事务。如果webservice只是JDBC连接的包装器,那么您只需要为该进程增加开销。 Web服务应该代表一个完整的逻辑工作单元,要么全部成功,要么全部失败。

根据我的经验,管理数据库的性能是95%。 Spring增加了每个事务以纳秒为单位测量的开销,但是在具有良好调整的索引的表上使用查询中的列可以为事务添加10毫秒。

我不确定你认为什么"庞大的数据库运营商"。你描述的工作量对我来说非常平凡。

我所看到的用于提高系统可扩展性的优秀设计是将业务事务处理(解析为数据库插入和更新的处理)放在专用硬件上的Web服务层后面,其中嵌入了DAO和DSO层在里面。但是,用户显示的数据库选择直接针对数据库运行,以最大限度地减少开销。扩展了DB服务器以处理在高SAN设备上运行的工作负载。