Sharding-JDBC 分库分表

本文介绍了Sharding-JDBC,一个由当当网研发的轻量级Java数据库分片框架,用于解决互联网领域高并发、大数据量的数据库问题。内容涵盖分库分表的类型和策略,如水平、垂直分片,并详细解释了Sharding-JDBC的基本概念和分片策略,包括标准、复合、Inline表达式、Hint和不分片策略。此外,还通过水平分表案例展示了Sharding-JDBC在实际场景中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

互联网领域数据库面临的问题

我们在互联网领域数据库面临的问题主要有高可用、存储稳定性要求高、并发访问频繁和数据海量。

各种数据库方案对比

RDBMS解决方案的优缺点

优点

开发友好,面向SQL。存储引擎稳定,单节点事务引擎成熟。未达阀值的单机性能高。

缺点

单节点并发访问频率受限,单节点数据承载量受限,分布式事务性能难以接受,分布式扩展困难。

当当数据库中间层的关注重点

当当数据库中间层的关注重点主要在于分片,分片包含了分库分表、读写分离和分布式主键这三点。
事务目前并没有做到特别完善和成熟,只支持弱XA和柔性事务。弱XA就是如果网络节点不发生问题,这个事务可以正常提交回滚。但是一旦在多个数据库之间网络闪断,这时事务的一致性可能会受到破坏。它会用柔性事务的方案来做补偿,到达最终事务的一致性。
还有治理的功能,包括配置动态化和数据源自动切换。

Sharding-JDBC

Sharding-JDBC是当当网研发的开源分布式数据库框架,定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。
基于任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
支持任意实现JDBC规范的数据库。目前支持MySQL,Oracle,SQLServer和PostgreSQL。
Sharding-JDBC的核心功能为数据分片和读写分离,通过Sharding-JDBC应用可以透明的使用jdbc访问已经分库分表,读写分离的多个数据源,而不用关心数据源的数量以及数据如何分表。

分片类型

分片类型有垂直分片和水平分片两种。垂直分片根据业务进行拆分,而水平拆分是利用把数据完全打散的方式去做,和业务完全没有关系。

  • 垂直分表:可以把一个宽表的字段按访问频次,是否大字段的原则拆分为多个表,这样既可以使业务清晰,还可以提升部分性能。拆分后,尽量从业务角度避免联合查询,否则性能将得不偿失。
  • 垂直分库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值