Sharding-JDBC 分库分表

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

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

各种数据库方案对比

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访问已经分库分表,读写分离的多个数据源,而不用关心数据源的数量以及数据如何分表。

分片类型

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

  • 垂直分表:可以把一个宽表的字段按访问频次,是否大字段的原则拆分为多个表,这样既可以使业务清晰,还可以提升部分性能。拆分后,尽量从业务角度避免联合查询,否则性能将得不偿失。
  • 垂直分库:可以把多个表,按业
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介 随着互联网的发展,软件的规模在逐渐变大,用关系型数据库如何存储和处理大规模的业务数据成为企业面临的挑战, 关系型数据库作为OLTP(联机事务处理过程)系统的首选毋庸置疑,但是关系型数据面对大规模数据的处理有其先天的不足,比如单存储上千万数据时便会出现不同程度的处理速度缓慢问题,如何解决?分库技术就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大拆分成若干数据组成,使得单一数据库、单一数据的数据量变小,从而达到提升数据库性能的目的。本课程将系统的讲解分库技术。 课程价值 分库技术是为解决关系型数据库存储和处理大规模数据的问题,主要应用于OLTP系统,它与应用于OLAP(联机分析处理)的大数据技术有不同的应用场景,本课程本着从解决生产实际问题出发,讲授分库技术的解决方案,包括:垂直分库、垂直分、水平分库、水平分、读写分离,涵盖了分库的各种方案,并且深入讲解Sharding-JDBC框架的原理及使用方法,通过学习本课程可以快速应用到生产实践中。 课程优势 本课程不仅讲解多种有效的分库的解决方案,还深入讲解了Sharding-JDBC框架的原理和使用方法,Sharding-JDBC是一套轻量级的对代码零侵入的框架,在生产中有广泛的使用。本课程从思想原理、技术框架、案例实操三个方面去学习,可以快速的将分库技术应用到生产实践中,解决大数据存储与处理的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值