【IT168专稿】首届DTCC 2010数据库技术大会,4月在北京歌华开元大酒店盛大开幕,近700名中国数据库技术专业人士参加了此次技术盛会。
在“数据管理、数据仓库、应用开发”专场中,手机之家架构师 许超前就《分布式数据访问层开发应用》作了精彩的主题报告,分享了与会的数据库爱好者。
99%的网站会用到数据库;网站80%的瓶颈在于数据库。Dal是综合数据代理(如MySQLProxy)、名值对缓存(如Memcached)、集群等等思想而构建的一个软件系统。目的是为了解决在构建大中型网站时遇到的和数据访问有关的诸多问题,如怎么使得分表透明化,如何使得缓存存取清除自动化,怎样才能更好地防止服务单点故障等等。Dal是手机之家团队近几年在开发和运营上的经验的总结以及智慧的结晶。

手机之家架构师 许超前
多数现有系统的问题
1) 由于web server可以直接访问db server,在高峰阶段,并发量比较大,导致dbserver经常down掉。
2) 添加缓存代码以降低数据库访问压力,但由于开发人员自己控制缓存使得。
a)缓存访问逻辑混杂在系统的各个角落,造成代码维护成本上升。
b)开发人员根据自己的喜好来控制缓存的KEY和VALUE,造成缓存混乱。
c)开发人员既要负责业务逻辑的编写,还要负责缓存管理,造成编程复杂度提高、开发效率低下。
3)在分表的情况下,程序员需要考虑和编写大量繁杂的和分表有关的代码:
a)需要根据规则计算出数据的存取目标是在哪个分表当中。
b)如果取回的数据分布在不同的分表中,需要合并结果。
c)由于大表切分后变成了多个小的分表,对于有排序要求的查找,需要通过建立并查找辅助索引来解决。
d)如果一套分表有多个辅助索引,需要寻找最优辅助索引。
DAL解决大中型网站时数据访问有关的问题
Dal是手机之家开发的数据访问层软件的产品名。Dal1.0、Dal2.1.x、Dal2.2.x及Dal2.x则是该软件的不同版本系列的一个引用。Dal是手机之家研发团队近几年在开发和运营上的经验的总结以及智慧的结晶。开发Dal的目的是为了解决在构建大中型网站时遇到的和数据访问有关的诸多问题,如怎样使得分表透明化,怎样使得缓存存取清除自动化,怎样才能更好地防止服务单点故障等等。
使用Dal具备以下优势:
1) 不但具备了memcached和mysql proxy的优点,还避免了两者的缺点。
2) Dal作为一个中间件,应保持语言中立、数据库中立。
3) 让系统在数据访问层上具备分布式计算能力。
4) 不造ORM轮子,只是发明访问数据的接口。
同时, 使用Dal1.0以后,使Dal1.0使得数据库的QPS从几千降到几百,缓存命中率稳定在60%~80%之间。Dal1.0还标准化了调用接口,简化了编程,使程序员在业务逻辑层面不再关心缓存与分表问题,极大地提高了生产力。

Dal2.1.x/Memcached简单性能对比
从结果上来看,从时间消耗的数量级来看,Dal2.1.x和Memcached1.4.2属于同一个级别;从时间消耗的绝对值来看,Dal2.1.x还是有一定的差距。那么这1/3~1/2的时间消耗都花在哪了?主要是在协议解析及查询分析上。
DAL的未来-“终结者”
“分布式数据库的前端”应该是Dal这个项目的最终定型。而未来,分片、缓存、主从、事务、异质数据库、多语言、全文检索、监控等等是这个项目的基本词汇。
许超前简介:
许超前,手机之家架构师,毕业于华中师范大学,拥有计算机科学与技术学士学位。曾有过存储、搜索、Java NIO框架、JavaCache系统、消息队列等等的研发经验。现就职于手机之家(中国手机用户最受推崇的品牌),担任架构师一职,负责分布式数据访问层(Data AccessLayer)软件Dal的架构、设计和开发工作。他希望在不久的将来能为中国的软件产业贡献一份微薄之力。
手机之家是一个旨在提供全方位的手机相关服务的资讯类网站。在8年的时间里,手机之家从无到有,已经发展成为极具人气、最受关注的手机产品资讯网站。Dal研发部是手机之家数个技术部当中的一个,主要成员有高春辉(资深顾问),刘增禄(资深软件工程师),张庆城(资深软件工程师),许超前(负责人)等等。