Skip to content

ldw-sh-cn/PDDL

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

165 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDDL

( Public Distributed Data Layer )

提供基于JDBC规范的客户端分库、分表数据路由方案

支持范围

  • JDK6+
  • PostgreSQL
  • MySQL
  • Oracle
  • 所有持久层框架

功能简介

  • 多租户
  • 读写分离
  • 读负载均衡
    • 轮询策略
    • 权重策略
  • 全局序列号
  • 全局表复制
  • 多租户
  • 垂直划分表
  • 逻辑表ER关系
  • 分库
  • 分表
  • 数据聚合
  • 结果集归并
  • 路由规则缓存(开发中)
  • SQL限流(开发中)
  • SQL监控(开发中)
  • 分布式事务(见galaxy)
  • 支持的数据库(PostgreSQL、Oracle和MySQL)

架构图

PDDL Architecture

示例代码

  • 配置定义
    • 定义分片数据源
    • 定义全局表
    • 定义逻辑表和逻辑子表
    • 定义分库和分表路由规则
<pddl:data-source id="shardingDataSource" database-type="PostgreSQL" >
	<pddl:data-source-partitions>
		<pddl:data-source-partition name="p0" read-strategy="weight">
			<pddl:master-data-source ref="ds0" weight="200" />
			<pddl:slave-data-source ref="ds0" weight="200" />
			<pddl:slave-data-source ref="ds0" weight="400" />
		</pddl:data-source-partition>
		<pddl:data-source-partition name="p1">
			<pddl:master-data-source ref="ds1" />
		</pddl:data-source-partition>
		<pddl:data-source-partition name="p2">
			<pddl:master-data-source ref="ds2" />
		</pddl:data-source-partition>
	</pddl:data-source-partitions>
	<pddl:tables>
		<pddl:global-table name="stock"/>
		<pddl:logic-table name="t_order" primary-key="order_id" table-postfixes="_0,_1,_2" database-strategy="orderDatabaseStrategy" table-strategy="orderTableStrategy">
			<pddl:logic-child-table name="t_item" primary-key="item_id" foreign-key="order_id">
				<pddl:logic-child-table name="t_item_ext" primary-key="ext_id" foreign-key="item_id"/>
			</pddl:logic-child-table>
		</pddl:logic-table>
	</pddl:tables>
</pddl:data-source>

<pddl:strategy id="orderDatabaseStrategy" sharding-columns="user_id" expression="p${user_id.intValue() % 3}"/>

<pddl:strategy id="orderTableStrategy" sharding-columns="order_id" expression="_${order_id.intValue() % 3}"/>

About

datarouter base on jdbc will rename Sherlock

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Java 95.8%
  • PLpgSQL 4.2%