数据访问模式
前言
主要解决如何将数据访问从应用中分离出来的问题。只要和数据库打交道的应用,都会碰到这个问题。传统的C/S架构应用大多将数据访问和应用的代码糅合在一起,主要有几个方面的问题:
1、 与具体的数据库技术紧密耦合,比如我们公司的产品是基于SQL Server的,现在就很难切换的Oracle中去,更不要说是以后的新技术——XML数据库或面向对象数据库;
2、 应用与数据模型紧密耦合,缺少弹性。
3、 难以优化,每个模块都是由不同的程序员写的,但是不是每个人都擅长数据库的开发,所以造成程序的效率低下,而要优化这些代码成本颇为昂贵;
4、 不便于维护,当程序出现问题的时候,不容易发现问题的来源——来自业务逻辑还是数据访问逻辑;
下面介绍数据访问常用的四种模式:数据访问器、主动域对象、对象/关系映射、层。
第一种:数据访问器(Data Accessor)模式
简述
“在单一组件内封装物理数据访问细节,只公开逻辑操作。应用程序代码保留底层数据模式的知识,但是与数据访问职能分开。”
封装原则
1、 公开逻辑操作,封装物理操作——比如不直接使用SQL语句而用逻辑操作。
2、 公开逻辑资源,封装物理资源——可以充分利用资源,例如连接的共享。
3、 封装平台细节——平台无关性。
4、 封装优化细节——将优化的弹性放到数据访问器中,而不是应用代码中,这样可以统一的优化。
适用性
1、 需要对应用程序逻辑隐藏物理数据访问的复杂性和平台问题。
2、 在底层物理数据库驱动程序所提供的语义之外,需要管理另外的语义。比如应用程序级的锁定机制。
3、 需要定义多个数据访问实现并在运行时从中选择。
优点
清晰的应用程序代码——充斥着数据访问细节的应用程序代码难以阅读和维护,使用数据访问器,可以让应用程序代码更加集中到它自身的业务逻辑上。
新数据库特性或平台的采用——如果数据访问代码分布到整个系统中,如果要使用新的数据库特性(例如从SQL Server平台切换到Oracle平台)就要浏览和修改整个系统的代码,而使用数据访问器可以将这种细节封装到一个组件中。
结合优化策略——调整应用程序性能时,数据访问代码常常是主要的分析焦点,同样的使用数据访问器就可以一次引入优化策略而作用于整个系统。
可交换的物理数据访问实现。
缺点
限制了应用程序对数据访问的控制——要求数据访问器设计要有足够的通用性。
策略
定义通用的逻辑操作——一方面要注意通用性;另一方面也不要引入不必要的复杂性,可以通过研究用例来解决这个问题。我觉得经验的积累也很重要。
留下优化和改进的位置——在开发过程中经常要牺牲功能以保证进度。
防止应用程序的抵消用法。
实例化
单件(Singleton)数据访问器实现。
初始化和参数传递——缺点是需要在类的构造函数和操作定义一个额外的参数。
数据访问器工厂。
第二种:主动域对象模式
简述
在相关的域对象实现中封装数据模型和数据访问细节。主动域对象使应用程序代码避免了与数据库的任何直接交互。
主动是指域对象不只是简单的表示数据,还公开了逻辑操作(初始化、刷新、保存、列表),为它们的数据完成大多数相关的数据库交互。操作的命名使用领域的术语命名。
适用性
需要对应用程序逻辑隐藏物理数据模型和数据访问的复杂性。
需要在单个组件中封装关于某个域概念的所有数据模型和数据访问细节。
需要对应用程序逻辑隐藏数据模型的不一致性和晦涩性——遗留数据的适配。
优点
清晰的应用程序代码、解耦应用程序代码和数据模型、把相关的数据访问代码组织到单个组件中
缺点
数据访问分布在多个域对象中、限制了应用程序对数据访问的控制
第三种:对象关系映射模式
简述
在单个组件中封装域对象和关系数据之间的映射。对象/关系映射同时把应用程序代码和域对象从底层的数据模型和数据访问细节中分离出来。
适用性
需要向应用程序逻辑和域对象隐藏物理数据模型和数据访问的复杂性。
需要在单个组件中封装域对象映射,以便在数据模型发生变化时可以不修改应用程序代码或者域对象定义。
需要从域对象映射到多种数据模型而不修改应用程序代码或域对象定义的通用性。
权衡
依赖于另外的商品化产品
优点
清晰的应用程序代码、映射到可替换的数据模型
缺点
限制了应用程序对数据访问的控制
第四种:层
简述
把处理数据访问问题的正交应用程序特性叠放在递增的抽象层中。
适用性
需要分离数据模型、数据访问细节、域对象映射,或者其它准备独立修改的正交特性。
都要定义多个递增的软件抽象层以简化开发和维护工作。
需要建立原型或者使用存根或简化的层实现逐步构造系统,并在以后的开发过程中填入更加灵活或者优化的实现——先让它工作起来、然后让它工作得更好。
优点
软件设计分解、数据访问特性模块化、数据访问细节封装、多层实现的可插接性
缺点
增加交互和初始化的复杂性
小结
上述四个模式主要解决的是将数据的持久化从应用程序逻辑中分离出来。这样做的主要意义是使应用程序代码变得清晰,把主要主要精力放在需求和功能方面;另一方面也实现了持久层的可替代性——依赖于接口而不依赖于实现;通过不同层次的抽象还可以保证数据访问代码的质量——从而保证系统的性能。
数据访问器模式解决的是底层的东西——数据访问细节的抽象。
主动域对象和对象/关系映射两个模式解决的都是如何将数据模型从应用程序代码中分离出来这个问题,但是它们采用了不同的方式实现对象模型和关系模型的映射,只不过一个是分散的,一个是集中的;一个自力更生、一个依赖于现成的产品(不是绝对的)。
层这个模式给出了进一步分解这个问题的方案——将抽象划分为若干层。
而实际上在真正的企业级应用中常常会将上述四种模式融合在一起,以构建更加强大复用性更高耦合度更小的应用程序。例如DAO(数据访问对象)就常和对象关系映射工具结合使用,在此不加赘述。
分享到:
相关推荐
云计算提供了一种新型的计算模式,能够为用户提供高效的数据处理和存储能力。在云计算的环境下,数据挖掘技术能够利用这些资源进行大规模的数据分析和处理,从而实现数据的增值。 物联网(IoT)是互联网、传统电信...
数据挖掘技术在CRM中的应用主要表现在以下几个方面: 1. 获取新客户:通过数据挖掘技术可以对海量客户数据进行分析,预测潜在客户的购买潜力,为电商企业获取新客户。利用分类技术将潜在访问者进行分类,并与已有的...
异常分为几种类型,包括中断、异常终止、预取终止、数据终止和软件中断等。异常向量表是异常处理中非常关键的概念,它存储了各种异常的处理入口地址。当异常发生时,程序计数器(PC)会跳转到这个地址处,开始执行...
随着互联网技术的快速发展和计算机技术的进步,云计算作为一种新兴的网络技术服务模式,正深刻地改变着人们获取信息和参与互联网的方式。云计算通过网络向用户提供按需的计算资源和存储服务,因其实用性、高效性和低...
云计算是当前IT领域中的一个热门话题,它是一种基于互联网的计算方式,通过网络将巨大的数据计算处理程序分解成无数个较小的子程序,再由多部服务器所组成的庞大的系统经计算分析之后将处理结果回传给用户。...
云计算安全挑战:云计算作为一种网络服务模式,其特点包括可配置性、随需访问等,在安全性方面面临诸多挑战。其中,访问控制成为关键的焦点,因为它直接关系到数据和资源的安全性、私密性和可用性。在云计算模式下,...
HaaS(硬件即服务)是一种新兴的服务模式,它指的是通过网络提供硬件资源,用户可以根据需要来配置和使用这些资源。这种服务模式强调的是硬件资源的虚拟化和按需分配。 云计算环境下信息资源共享模式具有以下几个...
根据数据的类型和结构,数据挖掘可以分为以下几种: 1. **数据库挖掘**:针对结构化数据进行分析,如关系数据库中的数据。 2. **Web数据挖掘**: - **Web内容挖掘**:从网页内容中提取信息。 - **Web使用挖掘**:...
Web数据挖掘是一种综合性的技术,它融合了Web技术、数据挖掘、计算机语言学和信息学等多个学科的知识。在电子商务领域,Web数据挖掘的应用尤为突出,因为它能够帮助电子商务网站更好地组织信息、挖掘用户行为模式、...
5. 访问控制与身份认证:云计算环境中,用户需要远程访问服务器和存储的数据。如何确保用户身份的合法性,以及如何控制用户的访问权限,是云计算安全的重要组成部分。这就要求云计算提供者采取适当的身份认证机制,...
如何确保数据的安全性、私密性和可用性,防止云服务提供商和其他用户非法访问数据,是云计算用户面临的重要问题。 当前,对云计算系统的等级保护测评存在一些不足。以中华人民共和国国家标准GB/T 22239-2008《信息...
3. 资源虚拟化和高可靠性:用户可以通过多种设备访问服务,不受地点限制,同时云平台具备数据多副本容错机制,提升了数据处理的可靠性。 4. 强可扩展性和通用性:云计算不是针对单一应用的,其数据处理能力可以依据...
传统的网络安全技术已经无法满足日益增长的安全需求,因此,利用数据挖掘技术提高网络安全能力成为了一种新的研究方向和实践途径。 一、网络安全问题概述 网络安全问题主要指通过网络传播的各种安全威胁,这些威胁...
云计算是一种基于互联网,将分散的硬件和软件资源集中在一起,通过虚拟化技术,向用户提供计算服务的模式。它允许用户无需了解复杂的计算知识,就可以按需购买并使用专业的计算资源和服务。云计算由六大核心部分组成...
起初,数据仅保存在计算机数据库中,但随着技术发展,数据挖掘已从简单的访问和查询,发展到了能够识别数据间潜在联系的高级阶段。另一方面,数据挖掘模块的优化尚不够完善,研究者们正致力于通过改进数据挖掘过程...
接下来,文中比较了两种常用的桌面云终端模式,即瘦客户机加虚拟桌面模式和计算机终端锁定加虚拟桌面模式。 瘦客户机加虚拟桌面模式下,瘦客户机是一个基于PC工业标准设计的小型商用计算机,它具有专业嵌入式处理器...
本文主要讨论以下几种索引访问方法: 1.索引唯一扫描(INDEX UNIQUE SCAN) 2.索引范围扫描(INDEX RANGE SCAN) 3.索引全扫描(INDEX FULL SCAN) 4.索引跳跃扫描(INDEX SKIP SCAN) 5.索引快速全扫描(INDEX FAST FULL ...
再次,互联网思维模式下高校英语教学的策略主要有以下几点: 1. 优化高校英语微课教学体系:微课教学方式是将网络技术与高校英语教学相结合的产物,有助于提升教学效率。通过微课,教师可以将教学内容的重点和难点...