一、随着企业业务的增长,访问量和用户等数据的增加,传统的关系数据库已经不能满足需求
分表分库就成了节省成本、和良好扩展性的必然选择
网上也有很多开源的分表分库的软件,也公司自己开发实现
而终其原理和步骤都无外乎三步:
即
首先sql解析路由,再根据路由确定分片,然后结果集合并
所遇到的分表分库的
难点大都是对
分布式事务的支持,
分片后的分页
和排序等
二、实现方式大都在两个层面:
即在应用层 代表有
hibernate shards,ibatis shards,
guzz 等
和 在jdbc之下 对应用层完全透明的 如
amoeba
三、那么企业在分表分库的实践中该如何选择呢?
假如您是一开始就想全新的分表分库 公司没打算做自己的分表分库框架,那么推荐用guzz,
这个类似于hibernate 和 ibatis的框架,很多网站都在用,缺点是技术团队需要重新学习一套框架
跟旧的系统很难兼容;
假如您的系统很乱,分表分库规则很简单,并且数据库是mysql
推荐用amoeba ,虽然有oracle版本,但目前不是很成熟;
假如您的技术团队一直用hibernate ,或企业现在的很多项目现在都用hibernate做的
那么推荐用
hibernate shards,这个类似hibernate,学习成本低,能跟
hibernate兼容
目前国内有在hibernate shards上封装的成功案例,
缺点是list查询时遍历所有数据片,而不是根据sql规则确定的数据片。
这个bug及在hibernate shards上如何扩展问题我已解决,附件是解决的架构图,
需要源代码的或详细可以联系我;
ibatis shards跟
hibernate shards类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊
附:
一、hibernate shards
优点:
1、实现跟其他成熟框架的集成如spring
等
2、能利用公司现有的hibernate的技术优势
3、目前国内有成功案例在hibernate shards上封装
的商业软件
4、能够快速开发
缺点:
1、暂不支持垂直分区
2、list查询遍历所有表分片
qq:360275663, j.cuxiao008.com(技术宅)
技术宅,中小互联网公司架构的好伙伴
- 大小: 50.8 KB
分享到:
相关推荐
数据库分库分表的技术演进与最佳实践 在移动互联网时代,海量数据的产生对数据库的存储和查询提出了很大的挑战。面对如此庞大的数据量,单一的数据库表已经无法满足需求,而数据库分库分表技术则是解决这个问题的...
本课程是新一代分库分表 Sharding-JDBC 最佳实践专题课程。课程内容丰富,涵盖了 MySQL 架构演变升级、分库分表的优缺点、常见策略及中间件介绍等多个方面。 课程首先介绍了分库分表的背景,包括 MySQL 数据库架构...
MyCat作为数据库中间件,可以有效地解决大数据量下的读写性能问题,通过分库分表实现水平扩展。本文详细介绍了MyCat的安装配置和分库分表实验,提供了一套完整的配置示例,有助于读者理解和实践MyCat的相关功能。在...
总结来说,.NET Core中解决多租户分库分表问题的关键在于: 1. 设计一个可以根据租户信息动态创建数据库连接的机制,如`DBLocationCreator`。 2. 使用依赖注入注册服务,确保每个请求都有独立的数据库上下文。 3. ...
- 水平分库分表:进一步扩展,将数据分散到多个数据库和表中,以平衡负载和提高性能。 结构演变则关注于系统的持续改进和适应性,包括技术选型、微服务架构的引入、容器化部署、服务网格的使用等,这些都是为了确保...
SpringBoot与ShardingSphere结合使用实现数据库分库分表是一个高效的数据分布式解决方案,尤其在大数据量下能够提高系统的性能和可扩展性。ShardingSphere是一个开源的数据库中间件,它包含Sharding-JDBC、Sharding-...
同时,数据库拆分也是重要步骤,包括垂直分表、垂直分库、水平分表和水平分库分表,以适应数据量的增长和处理需求。 三、结构演变 结构演变是系统优化的持续过程,随着业务和技术的发展,系统架构需要不断演进以...
1. **业务逻辑主体**:寻找数据表中的数据在业务逻辑上的主体,并确定大部分(或核心的)数据库操作都是围绕这个主体的数据进行,然后可使用该主体对应的字段作为拆分键,进行分库分表。 2. **典型应用场景**: -...
- **分库分表原理**:介绍为什么需要进行数据库的分库分表,以及分库分表的基本策略和技术选型。 - **实践案例**:通过具体的项目案例来展示如何实施分库分表,包括水平分割、垂直分割等策略的实际应用。 #### 4. ...
- 通过透明代理、读写分离、分库分表等技术,实现数据库的弹性扩展,快速响应业务需求变化。 - 支持按需资源扩容,可快速克隆实例并恢复到任意时间点,避免因扩容带来的业务中断。 4. **云数据库服务矩阵** - ...
### 多数据源的分表分库技术解析 #### 一、概述 在现代数据库管理中,随着数据量的增长和业务复杂度的提高,单一数据库往往难以满足高性能、高可用性的需求。为了应对这一挑战,多数据源的分表分库技术应运而生。...
分库分表是Mycat的核心功能之一,它能够将大规模的数据分散到多个数据库和表中,以降低单一表的压力,提高查询效率。通过哈希算法,Mycat可以智能地将数据均匀分布到不同的数据库实例,从而实现水平扩展,解决了单点...
首先,"分库分表概述.docx"这个文件名暗示了我们即将讨论的是数据库的扩展策略之一——分库分表。当单个数据库无法承受大量并发访问或数据量过大时,就需要采取这种策略。分库是将数据分散到多个独立的数据库中,以...
2. 数据库分库分表:通过ShardingSphere等工具解决单一数据库性能瓶颈。 3. 分布式消息队列:如RabbitMQ、Kafka,异步处理任务,提高系统响应速度。 4. 集群与负载均衡:Nginx、HAProxy等实现负载均衡,提高可用性。...
5. 数据库分库分表:将大型数据库拆分成多个小型数据库,以缓解单一数据库的压力。 【PPT可能涉及的议题】 1. 模块化设计:如何将复杂系统划分为可管理的模块。 2. 缓存策略:如使用Redis或Memcached等缓存技术提高...
2. **分库分表**:通过Mycat,可以将大表拆分为多个小表,分散到不同的数据库实例上,实现水平扩展,提高查询效率。 3. **SQL路由**:Mycat解析用户提交的SQL语句,根据预设的规则(如哈希、范围等)确定数据应存储...
在数据库层面,阿里巴巴可能采用了分库分表、读写分离、主从复制等策略来应对大数据量的挑战。同时,通过使用MyBatis、JPA等ORM框架,简化了数据库操作,提高了开发效率。 六、容器化与DevOps Docker和Kubernetes...
在技术实现上,采用了一系列高可用、高性能的技术手段,如分库分表、读写分离、冷热分离、压测隔离等,确保系统的稳定性和扩展性。 5. **面临的挑战与解决方案**: 随着业务的持续增长,中台面临的主要问题是持续...
Mycat作为一款开源的分布式数据库中间件,被广泛应用于大数据处理和高并发场景,为企业提供了数据库分库分表、读写分离等解决方案。然而,在实际生产环境中,Mycat的使用往往会遇到一些常见问题。以下是对这些问题的...