• Stars
    star
    1,246
  • Rank 37,708 (Top 0.8 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 8 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ctrip Database Access Layer

简介

Ctrip DAL是携程框架部开发的数据库访问框架,支持代码生成和水平扩展。其由携程技术中心框架部DAL团队开发,历经3年不断打磨,并在长期的实际使用中基于大量的用户反馈不断优化。

开源范围包括代码生成器,Java客户端和C#客户端。

注:C#客户端于2016年9月29日也正式开源了

背景

随着企业规模扩张和业务量的急剧增加,作为系统核心的数据库相关开发也会经历一个由单一团队发展为多团队;由单机扩张到集群;由单数据库发展为多数据库;由采用单一数据库产品到多种数据库产品并存的过程。伴随这一过程的是如何管理数据库扩展,如何规范数据库访问,如何保护数据库投资,如何应对访问量增加,如何预防安全问题等一系列挑战。作为中国在线旅游行业的翘楚,携程也曾经面对同样困扰。为了应对这些挑战,实现企业10倍速发展,携程开发了具有自己特色的数据库访问框架Ctrip DAL

Ctrip DAL支持流行的分库分表操作,支持Java和C#,支持Mysql和MS SqlServer。使用该框架可以在有效地保护企业已有数据库投资的同时,迅速,可靠的为企业提供数据库访问层的横向扩展能力。整个框架包括代码生成器和客户端。工作模式是使用代码生成器在线生成代码和配置,通过DAL客户端完成数据库操作。生成器具有丰富的向导指引,操作简单清晰,即可以批量生成标准DAO,也可以在方法级别定制数据库访问。客户端则可以简单的通过标准的maven方式添加依赖

model

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

overview

代码生成器简介

代码生成器允许用户创建Dal团队,组织开发人员,管理数据库,创建DAO并生成代码和配置。与一般基于JDBC driver的DB sharding产品不同的是,代码生成器生成的代码和配置可以直接拿来实用,完全无需用户写一行代码和配置。做到了只需开发人员关心业务逻辑,而把繁琐的数据库相关的编码和配置任务全部交给DAL。由于Ctrip DAL完全在DAO这层工作,也没有什么这种SQL语句不支持,那种SQL语句不能用的情况。同时传递hints的方式也非常自然,每个方法都自带hints的接口,需要DAL额外做什么可以直接按给定的已有名字来设置,无需改写原始的sql来添加怪异的注释。

客户端简介

客户端配合代码生成器生成的代码来完成用户的数据库访问操作。通过Dev和QA两方面双重自动化测试来保障质量,覆盖率达到99%,并经过生产实际实用的的长期严格检验。为了适应不同公司的实际情况,DAL客户端定义了丰富的扩展接口,覆盖了从数据源管理,数据库映射,连接串读取到自定义访问方式等等方方面面的功能。同时为了方便系统监控还内置了系统状态,日志和统计模块。

通过DAL可以做到

  1. 在公司范围提供统一的数据库访问方式以降低总体的开发成本
  2. 避免由于技术人员水平不同而造成的相同功能实现方式,标准,质量不一至
  3. 集中优势人员,将相关的功能做深,做好,做稳定,做全面
  4. 出现技术问题的时候有专门的技术团队及时支持。减低总体的风险

使用概况

目前携程超过117个独立DAL团队通过Dal Code Gen管理数据库和创建DAO。

2000多个应用在使用DAL框架,占携程所有数据库应用总数超过90%。

支持2种主流编程语言:Java和C#。

支持2种主流数据库Mysql和MS SqlServer。

开发团队

发起人

为了支持携程前CTO叶亚明先生(现首席科学家)主导的10X提速战略规划,由前携程系统研发部总监陈绍明先生(Simon Chen)提出该框架最初的构想,陈绍明同时组建了开发团队并决定了该框架的路线图和重大设计决策。

产品经理

孟文超。主要负责DAL产品的总体需求

当前开发人员

  • 赫杰辉。Java客户端总体设计与开发,代码生成器Java模板
  • 王晔楠。主要负责代码生成器,C#客户端
  • 李龙娇。测试负责人,自动化测试开发

历史贡献者

  • 原酒店部门Dal开发团队。最初版本的C#客户端和桌面版代码生成器的开发
  • 吴广安。早期版本的C#客户端重构和网页版代码生成器的创建
  • 袁王成。Java客户端HA,Markdown,AppInternal模块和代码生成器开发
  • 夏光智。代码生成器,数据源管理
  • 万国新。C#客户端
  • 张钰。总体测试

常用参考文档

简介

代码生成器(CodeGen)安装说明

代码生成器(CodeGen)使用说明

Java客户端 集成说明

Java客户端 配置与扩展

C#客户端 集成说明

C#客户端 配置文件

Java客户端 Demo

技术支持

携程框架DAL团队

已接入公司

请在这里提供您的公司名称和网址

ctrip 1hai dj imedmaster yiguo

More Repositories

1

C-OCR

C-OCR是携程自研的OCR项目,主要包括身份证、护照、火车票、签证等旅游相关证件、材料的识别。 项目包含4个部分,拒识、检测、识别、后处理。
Java
2,373
star
2

x-pipe

X-Pipe是由携程框架部门研发的Redis多数据中心复制管理系统。基于Redis的Master-Slave复制协议,实现低延时、高可用的Redis多数据中心、跨公网数据复制,并且提供一键机房切换,复制监控、异常报警等功能。开源版本和携程内部生产环境版本一致。
Java
2,001
star
3

CRN

CRN是Ctrip React Native简称,由携程无线平台研发团队基于React Native框架优化,定制成稳定性和性能更佳、也更适合业务场景的跨平台开发框架。
JavaScript
1,457
star
4

flybirds

基于自然语言的,跨端跨框架 BDD UI 自动化测试方案,BDD testing, Python style, Present by Trip Flight
Python
844
star
5

moles-packer

moles-packer 是由携程框架团队研发的,与携程moles框架配套使用的React Native 打包和拆包工具,同时支持原生的 React Native 项目。
JavaScript
721
star
6

wean

🍀 Super fast miniapp compiler.
JavaScript
390
star
7

tars

携程下一代发布系统
JavaScript
365
star
8

vi

帮助了解和控制应用
Java
269
star
9

SQLlin

A DSL ORM library for Kotlin Multiplatform.
C
218
star
10

tripdocs

TripDocsSDK是基于携程内部在线文档编辑器内核,提炼的一款通用的,现代的、稳定的、支持协同的、可用于生产环境的在线文档编辑器
TypeScript
159
star
11

dataworks-zeus

Ctrip Hadoop Job Scheduling System derived from https://github.com/alibaba/zeus
Java
153
star
12

nephele

Image Service
Go
145
star
13

mmkv-kotlin

A Kotlin Multiplatform porting for MMKV.
Kotlin
130
star
14

drc

Java
127
star
15

hermes

Message Queue Solution at Ctrip.com
Java
85
star
16

cat.net

.Net Client of CAT
C#
69
star
17

zeus

Soft Load Balancer at ctrip.com
JavaScript
55
star
18

kbear

Enterprise Kafka Solution
Java
51
star
19

artemis

artemis
Java
41
star
20

caravan

Caravan
Java
34
star
21

cat.js

Javascript client of CAT
JavaScript
29
star
22

ghost

A set of go tools with simple construction and powerful features.
Go
18
star
23

xredis-crdt

C
11
star
24

caravan.net

caravan.net
C#
9
star
25

crdt-module

C
8
star
26

chystrix.net

chystrix.net
C#
7
star
27

homer

Go
6
star
28

TripLink

TripLink
Java
5
star
29

artemis.net

artemis.net
C#
4
star
30

hermes.js

hermes client for javascript
4
star
31

kvrocks

kvrocks
2
star
32

venus

Dependency Injection Framework for .NET
1
star
33

ares-ceph

1
star
34

react-native-cba

react-native-cba
1
star