QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

携程开源数据库访问框架 Ctrip DAL

  • 2016-09-29
  • 本文字数:983 字

    阅读完需:约 3 分钟

随着企业规模扩张和业务量的急剧增加,作为系统核心的数据库相关开发也会经历一个由单一团队发展为多团队;由单机扩张到集群;由单数据库发展为多数据库;由采用单一数据库产品到多种数据库产品并存的过程。

伴随这一过程的是如何管理数据库扩展,如何规范数据库访问,如何保护数据库投资,如何应对访问量增加,如何预防安全问题等一系列挑战。

作为国内在线旅游行业的翘楚,携程也曾经面对同样困扰。为了应对这些挑战,实现企业 10 倍速发展,携程开发了具有自己特色的数据库访问框架 Ctrip DAL。

Ctrip DAL 支持流行的分库分表操作,支持 Java 和 C#,支持 MySQL 和 MSSqlServer。使用该框架可以在有效地保护企业已有数据库投资的同时,迅速,可靠地为企业提供数据库访问层的横向扩展能力。

整个框架包括代码生成器和客户端。工作模式是使用代码生成器在线生成代码,通过 DAL 客户端完成数据库操作。生成器具有丰富的向导指引,操作简单清晰,既可以批量生成标准 DAO,也可以在方法级别定制数据库访问。客户端则可以简单地通过标准的 maven 方式添加依赖。

Ctrip DAL 与一般数据库框架最大的不同是从企业跨部门的角度,统一管理数据库相关资源。通过部署代码生成器,企业可以做到有效的管理全公司的 DAL 开发团队,明确数据库归属和定制数据库访问。通过代码生成器生成的标准 DAO 代码与客户端配合使用,可以大幅提高工作效率,保证代码质量。解决了业内常见的伴随业务成长而带来的系统维护困难,开发效率低下,代码风格五花八门,代码质量参差不齐等痛点问题。

为了适应不同公司的实际情况,DAL 定义了丰富的扩展接口,覆盖了从数据源管理,数据库映射,连接串读取到自定义访问方式等等方方面面的功能。同时为了方便系统监控还内置了系统状态,日志和统计模块。

Ctrip DAL 由携程技术中心框架部 DAL 团队开发,历经 3 年不断打磨,在长期的实际使用中吸收了大量用户反馈。目前携程超过 117 个独立 DAL 团队通过代码生成器管理数据库和创建 DAO。2000 多个应用在使用 DAL 框架,占携程所有数据库应用总数超过 90%。

本次开源的产品包括代码生成器和 Java 客户端,C#客户端也将近期开源。DAL 各个组件的安装和使用都有详细的文档说明,开箱即用。
通过开源携程自身使用 DAL 框架,携程希望在满足自身需求的同时,服务于广大企业,并继续为中国方兴未艾的开源运动出点力。

更多详情请参考: https://github.com/ctripcorp/dal

2016-09-29 21:496511

评论

发布
暂无评论
发现更多内容

我是如何参与硅谷顶级开源项目并赚得2500美金

阿水

硅谷 Minio

《effective-go》 学习笔记

Geek_4z9ami

Go 语言

用户体验(UX)设计≠用户界面(UI)设计

刘华Kenneth

敏捷 设计 UX 用户体验

RocketMQ源码解析-开篇

Edison

RocketMQ 中间件

500行代码写一个俄罗斯方块游戏

程序员生活志

人生修炼秘籍

xiaoboey

时间管理 人生修炼 知行合一 熵增 时间复利

learn go with tests 学习笔记(六)进程同步

Geek_4z9ami

Go 语言

learn go with tests 学习笔记(七)反射

Geek_4z9ami

反射 Go 语言

关于微服务架构思考

Axe

消息疯狂堆积!RocketMQ出Bug了?

Edison

RocketMQ 中间件

MySQL事物-学习笔记

Edison

MySQL 数据库 数据库事务

learn go with tests 学习笔记(四)依赖注入

Geek_4z9ami

Go 语言

零代码/无代码 vs 低代码 如何分类?如何区别?到底有什么不同?分析超过20款零代码低代码产品

代码制造者

编程 低代码 行业资讯 零代码

政策加持迎来区块链技术应用“红利期”

CECBC

“啰嗦”是成事唯一正确的方法

霍太稳@极客邦科技

团队管理 个人成长 团队协作 沟通

话题讨论 | 特朗普正式封禁微信,iPhone 和微信二选一?

InfoQ写作社区官方

写作平台 话题讨论

Web 开发必须掌握的三个技术:Token、Cookie、Session

华为云开发者联盟

HTTP Token web开发 session Cookie

字符串匹配 - Sunday算法

Geek_4z9ami

数据结构与算法 字符串匹配算法

learn go with tests 学习笔记(二) 数组与切片

Geek_4z9ami

Go 语言

learn go with tests 学习笔记(三) 指针和错误

Geek_4z9ami

Go 语言

Python爬取微信公众号文章保存到数据库

wjchenge

nested exception is java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache异常解决

谙忆

Java项目如何分层

老胡爱分享

分层架构 项目

企业网站搭建避坑指南

姜奋斗

网站 新手指南 企业 网站搭建 避坑

Netty之旅:你想要的NIO知识点,这里都有!

一枝花算不算浪漫

Netty nio

疫情之年 下半年区块链应用落地会加速么?

CECBC

区块链 场景应用落地

菊长说丨一文读懂MySQL4种事务隔离级别

华为云开发者联盟

MySQL 数据库 事务隔离级别 事务 华为云

learn go with tests 学习笔记(一) hello world

Geek_4z9ami

Go 语言

Executor看不懂?教你如何盘它

Edison

后端 线程池

数据采集能力受限?企业数字化运营如何迈出第1步

易观大数据

learn go with tests 学习笔记(五)并发

Geek_4z9ami

Go 语言

携程开源数据库访问框架Ctrip DAL_语言 & 开发_赫杰辉_InfoQ精选文章