01、ShardingJDBC实战:入门概念

官网:http://shardingjdbc.io/document/legacy/2.x/cn/02-guide/concepts/

LogicTable

数据分片的逻辑表,对于水平拆分的数据库(表),同一类表的总称。例:订单数据根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order。

ActualTable

在分片的数据库中真实存在的物理表。即上个示例中的t_order_0到t_order_9。

DataNode

数据分片的最小单元。由数据源名称和数据表组成,例:ds_1.t_order_0。配置时默认各个分片数据库的表结构均相同,直接配置逻辑表和真实表对应关系即可。如果各数据库的表结果不同,可使用ds.actual_table配置。

BindingTable

指在任何场景下分片规则均一致的主表和子表。例:订单表和订单项表,均按照订单ID分片,则此两张表互为BindingTable关系。BindingTable关系的多表关联查询不会出现笛卡尔积关联,关联查询效率将大大提升。

ShardingColumn

分片字段。用于将数据库(表)水平拆分的关键字段。例:订单表订单ID分片尾数取模分片,则订单ID为分片字段。SQL中如果无分片字段,将执行全路由,性能较差。Sharding-JDBC支持多分片字段。

ShardingAlgorithm

分片算法。Sharding-JDBC通过分片算法将数据分片,支持通过等号、BETWEEN和IN分片。分片算法目前需要业务方开发者自行实现,可实现的灵活度非常高。未来Sharding-JDBC也将会实现常用分片算法,如range,hash和tag等。

SQL Hint

对于分片字段非SQL决定,而由其他外置条件决定的场景,可使用SQL Hint灵活的注入分片字段。例:内部系统,按照员工登录ID分库,而数据库中并无此字段。SQL Hint支持通过ThreadLocal和SQL注释(待实现)两种方式使用。

Config Map

通过ConfigMap可以配置分库分表或读写分离数据源的元数据,可通过调用ConfigMapContext.getInstance()获取ConfigMap中的shardingConfig和masterSlaveConfig数据。例:如果机器权重不同则流量可能不同,可通过ConfigMap配置机器权重元数据。

LogicIndex

数据分片的逻辑索引名称,DDL语句中水平拆分的表,同一类表的总称。例:订单数据根据主键尾数拆分为10张表,分别是t_order_0到t_order_9,他们的逻辑表名为t_order,对于DROP INDEX t_order_index语句, 需在TableRule中配置逻辑索引t_order_index。

依赖的第三方:

lombok(能够简化java的代码,不需要显示编写setter,getter,constructor等代码,减少代码工作量,其原理是作用于javac阶段,编译完是有的。)
google-guava(google开源的google使用的Java核心类,比如eventbus)

inline表达式(sharding-jdbc分库分表规则表达式采用inline语法)

自己动手,可以看官网的例子。

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: