MCPcopy Index your code
hub / github.com/FinVolution/das

github.com/FinVolution/das @das-console3.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release das-console3.0.0 ↗ · + Follow
10,642 symbols 42,210 edges 1,112 files 995 documented · 9%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

信也科技DAS简介

DAS是信也科技自研的数据库访问框架。包括数据库控制台das console,数据库客户端das client和数据库服务端das server三部分。是基于Java语言开发的,支持数据库管理,ORM,SQL创建,分库分表操作的一体化数据库访问解决方案。

为适应企业规模不断扩大,数据库访问量持续增长的情况,DAS支持两种数据库访问模式,数据库直连和基于das server的代理访问模式。具体场景如下: * 在数据库可以承受的情况下可以使用直连模式 * 如果访问量持续增长,可以使用分库分表来分摊单个数据库的压力 * 在已经使用了分库分表情况下,如果单库访问量依然达到或超过数据库极限的话,建议使用基于代理的模式。 * 用户的开发环境包括多种语言,建议使用基于代理的模式,配合基于thrift生成的对应客户端

DAS原生提供的客户端das client支持Java,该客户端同时支持直连和代理模式,用户在两种模式之间切换无需修改代码。

DAS支持SqlServer和MySql两种数据库。

目前在信也科技超过300个应用接入了DAS,每日支持超过6亿次的数据库访问。

DAS功能简介

DAS功能包括: * 数据库管理。用户可以通过das console来集中的管理物理数据库,配置逻辑数据库,并在不同环境间方便的同步这些配置信息 * 代码生成。用户可以通过das console生成对应于表或者查询结果的entity类 * ORM。用户可以使用das console生成的类通过das clientAPI来获取查询结果和更新数据库记录 * SQL创建。用户可以利用SqlBuilder和das console创建的对应于表的entity类来自由的创建符合语法规范和需要的SQL语句 * 透明的分库分表。通过使用缺省或自定义的策略,用户可以方便的访问多个数据库或表的分片 * 事务。DAS通过非常简单的API支持基于单库的事务,事务的创建,提交或回滚无需用户介入。

注意

DAS不支持分布式事务,如果在事务中发现试图访问非当前数据库以外的其他数据库,DAS会报错并回滚当前事务

DAS使用方式

一般来说,为了使用DAS,建议用户成立一个虚拟的DAS支持团队,由该团队统一负责团队,项目,数据库配置,问题解答等日常维护工作。使用DAS的一般步骤如下

配置数据库

应用开发人员向DAS支持团队提交创建DAS团队,DAS项目和逻辑数据库的申请。申请包括团队成员,项目信息,物理数据库配置,逻辑数据库配置和分库分表策略。具体做法参考das console的 使用手册

生成代码

DAS支持团队配置好应用的逻辑数据库之后,应用开发人员可以登陆das console,选取自己所在的项目,想生成代码的逻辑数据库,生成对应于表或者查询结果的entity类

访问数据库

应用开发人员通过das client的API和生成的entity来对逻辑数据库做CRUD操作。具体请参考das client使用手册

DAS开发团队

发起人

DAS最开始是由前拍拍贷基础框架负责人杨波发起,并获得时任CTO司晋琦的大力支持。具体研发分工如下:

开发人员

  • 产品经理,架构,客户端das client:赫杰辉
  • 服务端das server,数据库同步插件,mybatis代码转换插件:卢声远
  • 控制台das console:王亮
  • 测试:张昱

历史贡献者:

  • das client与配置中心集成,DasDiagnose实现:黄印煌
  • das client早期版本测试:周小亮

信也科技DAS与携程DAL之间的关系

2018年4月DAS最开始开发的时候是基于携程DAL做的定制化改造,后面在不断到升级中逐渐替换掉携程原有代码,目前除了客户端最底层的部分代码外,基本上已经是一个全新的产品。DAS与DAL的不同体现在以下几个方面: * DAS重新设计了核心的分库分表策略,支持基于表达式和其组合的分库分表方案 * DAS简化了DAO设计,通过DasClient类支持原来需要DalTableDao,DalQueryDao和自定义DAO才能实现的全部功能 * DAS重新设计的entity的结构。加入了表结构相关的帮助类,让用户可以用SQL自身的语法规则来构建自定义SQL * DAS重新设计了SqlBuilder。用一个SqlBuilder取代了原来种类繁多的各种builder * DAS透明的支持本地直连和基于代理的数据库连接模式,允许用户在数据库不断增长的情况下平滑升级整体架构

技术支持

DAS支持QQ群:697580306

tect support

用户文档

wiki

Extension points exported contracts — how you extend this code

DasLogger (Interface)
For non cross shard execution start singleTaskCreated startTask start(LogEntry) startSta [7 implementers]
das-client/src/main/java/com/ppdai/das/core/DasLogger.java
PagerCallable (Interface)
(no doc) [13 implementers]
das-console-manager/src/main/java/com/ppdai/das/console/dto/model/page/PagerCallable.java
DatabaseSelector (Interface)
Setup at global level to simplify @author jhhe [7 implementers]
das-client/src/main/java/com/ppdai/das/core/DatabaseSelector.java
DalProcessor (Interface)
(no doc) [19 implementers]
das-console-manager/src/main/java/com/ppdai/das/console/common/codeGen/DalProcessor.java
DalRowMapper (Interface)
This interface MUST consider potential multiple-thread concurrent access. @author jhhe [7 implementers]
das-client/src/main/java/com/ppdai/das/core/client/DalRowMapper.java
Executer (Interface)
(no doc) [34 implementers]
das-console-manager/src/main/java/com/ppdai/das/console/common/validates/chain/Executer.java
DalRowCallback (Interface)
This interface MUST consider potential multiple-thread concurrent access. @author jhhe [19 implementers]
das-client/src/main/java/com/ppdai/das/core/client/DalRowCallback.java
LoginProvider (Interface)
如果接入统一登录需要实现的接口 [3 implementers]
das-console-manager/src/main/java/com/ppdai/das/console/openapi/LoginProvider.java

Core symbols most depended-on inside this repo

add
called by 780
das-client/src/main/java/com/ppdai/das/client/SegmentConstants.java
append
called by 644
das-client/src/main/java/com/ppdai/das/client/SqlBuilder.java
put
called by 561
das-console-manager/src/main/java/com/ppdai/das/console/cloud/service/DatabaseCloudService.java
size
called by 560
das-client/src/main/java/com/ppdai/das/core/KeyHolder.java
build
called by 555
das-client/src/main/java/com/ppdai/das/client/Segment.java
eq
called by 487
das-client/src/main/java/com/ppdai/das/client/sqlbuilder/AbstractColumn.java
where
called by 401
das-client/src/test/java/com/ppdai/das/client/TableDaoShardByDbTest.java
get
called by 396
das-client/src/main/java/com/ppdai/das/client/Hints.java

Shape

Method 9,066
Class 1,294
Interface 153
Enum 69
Function 60

Languages

Java93%
TypeScript7%

Modules by API surface

das-client/src/main/java/com/ppdai/das/service/DasService.java563 symbols
das-client/src/main/java/com/ppdai/das/service/EntityMeta.java114 symbols
das-client/src/main/java/com/ppdai/das/service/DasRequest.java113 symbols
das-client/src/test/java/com/ppdai/das/client/DasClientDbTableZeroTest.java91 symbols
das-client/src/test/java/com/ppdai/das/client/DasClientDbTableTest.java90 symbols
das-client/src/main/java/com/ppdai/das/service/DasTransactionId.java85 symbols
das-client/src/test/java/com/ppdai/das/client/DasClientDBTest.java81 symbols
das-client/src/test/java/com/ppdai/das/client/DasClientTableTest.java80 symbols
das-client/src/main/java/com/ppdai/das/client/SqlBuilder.java79 symbols
das-client/src/main/java/com/ppdai/das/service/DasServerStatus.java75 symbols
das-client/src/main/java/com/ppdai/das/core/LogEntry.java75 symbols
das-client/src/main/java/com/ppdai/das/service/DasParameter.java73 symbols

Datastores touched

(mysql)Database · 1 repos
dal_shard_0Database · 1 repos
dal_shard_1Database · 1 repos

For agents

$ claude mcp add das \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact