欢迎来到天天文库
浏览记录
ID:45740947
大小:262.00 KB
页数:39页
时间:2019-11-17
《数据访问层开发实践》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据访问层开发实践许超前@手机之家2010年04月03日1)前言a)关于数据访问层(DataAccessLayer)b)关于Dal2)Dal的产生3)Dal的发展a)Dal2.1.xb)Dal2.2.x4)Dal的未来5)关于我们6)Q&A目录目录目录前言关于数据访问层引用维基百科:ADataAccessLayer(DAL)isalayerofacomputerprogramwhichprovidessimplifiedaccesstodatastoredinpersistentstorageofsome
2、kind,suchasanentity-relationaldatabase.Thisdataaccesslayerisusedinturnbyotherprogrammodulestoaccessandmanipulatethedatawithinthedatastorewithouthavingtodealwiththecomplexitiesinherentinthisaccess.关于数据访问层(续)应用程序DataAccessLayerDBAPI文件DAL在系统中的位置关于Dal-概览Dal是手
3、机之家开发的数据访问层软件的产品名。Dal1.0、Dal2.1.x、Dal2.2.x及Dal2.x则是该软件的不同版本系列的一个引用。Dal是手机之家研发团队近几年在开发和运营上的经验的总结以及智慧的结晶。开发Dal的目的是为了解决在构建大中型网站时遇到的和数据访问有关的诸多问题,如怎样使得分表透明化,怎样使得缓存存取清除自动化,怎样才能更好地防止服务单点故障等等。Dal1.0是一个具有里程碑意义的版本,但在很多方面仍然欠考虑。Dal2.1.x是一个经过精心设计、认真编写,具有较高可用性的分布式数据访问层
4、,是综合数据代理(如MySQLProxy)、名值对缓存(如Memcached)、集群等等思想而构建的一个软件系统。Dal2.2.x是目前的最新系列,引入了很多新特性:如分布式事务,支持数据库主从等等。关于Dal-软件定位1)不但具备了memcached和mysqlproxy的优点,还避免了两者的缺点。2)Dal作为一个中间件,应保持语言中立、数据库中立。3)让系统在数据访问层上具备分布式计算能力。4)不造ORM轮子,只是发明访问数据的接口。关于Dal-核心概念1)透明分片透明,缓存透明,主从透明。2)虚库
5、(逻辑库)和实库(物理库)虚库:不是一个真正存在的库。也叫逻辑库。实库:是真实存在的库。也叫物理库。3)虚表(逻辑表)和实表(物理表)虚表:不是一个真正存在的表。也叫逻辑表。实表:是真实存在的表。也叫物理表。4)分片(分表)分片可以分布在同一个库中,也可以在多个库中。也叫分表。关于Dal-核心概念(续)5)映射虚库→实库;虚表→实表;应用列名→数据库列名;6)条目缓存和查询缓存7)辅助索引8)分片情况:不分片、分片无辅助索引、分片有辅助索引9)面向库的开发方式这是指,Dal自动从数据库获得需要的信息,而不
6、是由应用开发人员在配置文件里显示配置。开发人员要配的只是分表的规则、连接池的使用、缓存的使用等。只在应用层需要和数据库不一样的信息时(如字段名),才在配置文件里显式写出。关于Dal-核心概念(续)逻辑表A逻辑表B逻辑库物理表B_0物理表B_1物理表B_2物理库物理库物理表A物理库辅助索引IDPID...列名idpid...列名关于Dal-设计指导思想Dal总体上设计成(Core+Plugins)的形式。Core负责一些不可插件化(或难以插件化)的组件,Plugins则是那些可插化的组件。我们定的是机制,提
7、供的是策略;机制是软件目标和宗旨的体现,一般是不能轻易改变的,而策略则应当是能比较简单地进行切换的。那么,Core即机制,Plugins即策略。Dal的产生Dal的产生-多数现有系统的经典问题1)由于webserver可以直接访问dbserver,在高峰阶段,并发量比较大,导致dbserver经常down掉。2)添加缓存代码以降低数据库访问压力,但由于开发人员自己控制缓存使得:a)缓存访问逻辑混杂在系统的各个角落,造成代码维护成本上升。b)开发人员根据自己的喜好来控制缓存的KEY和VALUE,造成缓存混乱
8、。c)开发人员既要负责业务逻辑的编写,还要负责缓存管理,造成编程复杂度提高、开发效率低下。Dal的产生-多数现有系统的经典问题(续)3)在分表的情况下,程序员需要考虑和编写大量繁杂的和分表有关的代码:a)需要根据规则计算出数据的存取目标是在哪个分表当中。b)如果取回的数据分布在不同的分表中,需要合并结果。c)由于大表切分后变成了多个小的分表,对于有排序要求的查找,需要通过建立并查找辅助索引来解决。d)如果一套分表有多个辅助索引
此文档下载收益归作者所有