您的位置: 网界网 > 软件 > 正文

四步提升数据访问层缓存部署

2014年12月14日 20:23:08 | 作者:ammbra | 来源:TechTarget中国 | 查看本文手机版

摘要:持久性框架提供了一个内置的缓存特性,但有时这还不够(对于数据库检索、需要不同的锁定模型来说,一个单独价值的最大规模化远远不够。)

标签
iBatis
数据访问层
MyBatis

MyBatis提供自己的缓存部署,不过如果需要,它也允许在第三方帮助下集成MyBatis数据访问层

本文会从一下角度论述MyBatis:

概览:这个部分会讨论你为什么需要持续性,MyBatis上的缓存如何提升应用程序的功能。(需要建立代码环境,这有利于更好地理解缓存)。

MyBatis上的Ehache部署:可以帮助提升数据访问层的性能(下文会给出代码)。

MyBatis上的Hazelcast部署:可以帮助部署数据访问层(下文会给出代码)。

MyBatis上的操作系统缓存部署:可以帮助提升数据访问层性能(下文会给出代码)。

Memcache上的缓存部署:为什么需要使用它,它是如何提升数据访问层性能的?

总结:对以上四种部署的总结,归纳各自的优势和不足。

点击这里访问代码

概览

之所以出现对持久性的需求,是因为很多应用程序都被开发和部署在包含基于浏览器的客户端、Web应用程序服务器和后端数据库的多层环境中。这些应用程序需要通过与后端数据库的交流按需服务网页,这是由它们动态本质决定的。持久性出现了,并发展成这些应用程序中的一部分,成了实现高可扩展性和高性能的必要条件。

通过持久性,应用程序有一个数据访问层,它可以提供对数据库的简单访问,但是,如果应用程序通过反复访问数据的形式按需服务网页,应用程序的性能就会降低。持久性框架提供了一个内置的缓存特性,但有时这还不够(对于数据库检索、需要不同的锁定模型来说,一个单独价值的最大规模化远远不够。)

MyBatis为什么应用程序而设计?

要回答这个问题,需要先了解一下MyBatis的背景。MyBatis的前身是iBatis,iBatis框架的创建者离开了创建团队,因为劳动协议的关系,他们必须继续产品研发,但要冠以新的名字,于是就有了MyBatis。为了了解你是需要MyBatis,你需要看看下面的表格:

问题是否适合部署MyBatis (是或否)是否适合目前使用的持久性架构 (是或否)

1架构时Java平台标准版的一部分吗?(JSE)? 否

2是开源部署吗? 是

3框架支持实行任意的SQL语句吗? 是

4框架支持批处理的多个语句吗? 是

5框架支持把查询数据自动映射到Java对象吗? 是

6框架支持修改独立于Java代码的查询吗? 是

7容易学会吗?是

8它可以直接把Java对象映射到数据表中吗(是ORM解决方案吗)?是

9它提供针对数据规模变化的适应性吗?是

10是依赖SQL的吗?是

11提供performance吗?是

12他提供跨不同关系型数据库中的可移植性吗?是

13它有社区的支持和文档吗?是

是12

否1

请填上你现在使用的持久性架构的答案,像上表一样填上是和否,然后对比一下结果。无论哪种架构获胜,它都有利于你了解MyBatis。

如果你选择MyBatis,以下是一些优点和缺点:

优点缺点

开发者使用SQL,iBATIS使用Java数据库连接器执行,没有合适的查询语言

一个SQL Mapper,支持摆脱(N+1)查询不会生成SQL.

自动映射对象属性到准备好的语句参数,提供结果集到对象的自动映射没有透明持久对象

MyBatis提供针对数据库操作的交易管理,如果没有其他的交易管理器可用的话。MyBatis可以使用外部交易管理,比如Spring, EJB CMT等。不了解对象身份

下面总结一下:MyBatis主要针对SQL环境,即便SQL查询面临微调,但MyBatis仍然有用。MyBatis不应该用于既有应用程序又有数据库设计的环境中,因为这样的用例中(+本站微信networkworldweixin),需要修改应用程序适应数据库,反之亦然。在这种情景下,你应该构建一个全对象-关系的应用程序,也可以选择其他ORM工具。

什么时候应用程序使用MyBatis缓存?

对这个问题的回答是:当你的应用程序在短时间内,对数据库中的大数据[注]集反复提出访问要求的时候。缓存并不是只针对大数据应用的,虽然数据量很重要,并且影响着应用程序的性能,但是缓存的出现主要是满足数据被频繁地刷新的需求。如果你要访问的是不会改变“值”的大规模数据集,那么你不需要访问数据库,你只需访问中间层(缓存层)就可以了。一定要记住,数据库操作是要耗费时间的,而每一毫秒对高性能应用程序来说都很重要。

为什么缓存要使用第三方库?

第三方库具备多种优势:缓存曾的单独价值的最大型号远大于默认的,提供不同锁定模型,一些允许和其他编程语言集成,提供map-reduce机制等等。

教程要求:

Java SE 1.6 或更高

一个 IDE

Maven 2.0 或更高

一个web应用程序服务器

下面是应用程序的概览,为了能够注入到它们的EJB组件中,每一个EJB项目都依赖整个项目):

IDE概览和架构高级概览:

CacherPoc项目展示了可能被部署和回顾的行为。下面是创建CacherPoc应用程序时需要的一些步骤:

1. 创建新的Maven Web应用程序并将它命名为CacherPoc

view sourceprint?

1.

2.log4j

3.log4j

4.1.2.17

5.

2. 为pom.xml配置log4j库:

view sourceprint?

1.

2.Show All Employee Items with EHCache

3.

3. 在 index.jsp文件中 (项目默认创建的) 你需要给每一个servlet添加链接链接,Servlet会从我们的样本ejb项目中注入EJB(EhCachePoc, HazelCastPoc, OSCachePoc and MemcachedPoc) :

view sourceprint?

01.@WebServlet("/EhCacheServlet")

02.public class EhCacheServlet extends HttpServlet

{03. 04.private static Logger logger = Logger.getLogger(EhCacheServlet.class);

05. 06.private static final String LIST_USER = "/listEmployee.jsp";

07. 08.@Override09.protected void doGet(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException

{10.String forward = LIST_USER;

11.List results = new ArrayList();

12.req.setAttribute("employees", results);

13.RequestDispatcher view = req.getRequestDispatcher(forward);

14.view.forward(req, resp);

15.}16. 17.}

以下展示的是上文提到的servlet的例子:

这样,缓存层的一切就都设置好了。

参考资料

1.大数据:(Big Data),研究机构Gartner给出了这样的定义。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 ...详情>>

[责任编辑:软件频道 yu_xiang@cnw.com.cn]