`

分库分表最佳实践大小结

阅读更多

分库分表最佳实践大小结

一、随着企业业务的增长,访问量和用户等数据的增加,传统的关系数据库已经不能满足需求,分表分库就成了节省成本、和良好扩展性的必然选择,网上也有很多开源的分表分库的软件,也公司自己开发实现 
    而终其原理和步骤都无外乎三步: 
    即首先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 shardshibernate shards类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊

附: 
一、hibernate shards 
优点: 
1、实现跟其他成熟框架的集成如spring等 
2、能利用公司现有的hibernate的技术优势 
3、目前国内有成功案例在hibernate  shards上封装的商业软件 
4、能够快速开发 
缺点: 
1、暂不支持垂直分区 
2、list查询遍历所有表分片 
分享到:
评论

相关推荐

    MongoDB热温数据的最佳实践.pdf

    2. **采用分布式/分库分表**:通过分布式架构或分库分表技术,可以分散负载,提高读写速度。例如,使用MyCat或ShardingSphere进行数据分片。 3. **添加缓存层**:在数据库前添加缓存如Redis,可以快速响应频繁访问...

    MySQL性能优化的21个最佳实践.rar

    12. **合理设计数据库架构**:根据业务场景,采用分库分表策略,减轻单表压力。 13. **避免全表更新和删除**:批量更新或删除时,使用LIMIT限制行数,或者先删除到临时表,再清空原表。 14. **使用慢查询日志**:...

    MySQL性能调优与架构设

    这包括合理分库分表,以降低单表数据量,提高并发处理能力;采用读写分离,减轻主库压力;以及使用分布式存储和数据复制技术,提高系统的可用性和容错性。 5. **资源管理**:合理配置MySQL的内存资源,如缓冲池大小...

    Mycat-Server-1.6.5-RELEASE.rar

    它实现了数据库的分库分表功能,有效地提升了数据库系统的性能和可扩展性。本文将深入探讨Mycat的核心特性和在“单库分表”场景中的配置与应用。 一、Mycat概述 Mycat作为Java编写的数据中间层,支持SQL92标准,...

    MySQL性能调优与架构设计 PDF中文版全册

    1. 数据库分库分表:通过水平分割或垂直分割减轻单表压力,提高查询速度和并发能力。 2. 主从复制:实现数据冗余和故障恢复,同时为主节点提供读写分离,减轻主库压力。 3. 读写分离:通过中间件或路由规则,将读...

    大型Java Web项目的架构和部署调优问题.doc

    7. 数据库优化 除了前面提到的分库分表,还可以对SQL进行优化,避免全表扫描,使用索引,合理设计数据库模型,降低锁的竞争。8. 异步处理 对于耗时的操作,如发送邮件、生成报表等,可以采用异步处理方式,避免阻塞...

    为什么说MySQL单表数据不要超过500万行

    阿里巴巴的《Java开发手册》提出的500万行或2GB的分库分表建议,更多的是针对一般情况的一个参考,旨在避免过度设计。在项目初期,通常不建议立即进行分库分表,而是在业务发展到一定程度,现有架构无法满足性能需求...

    SQL数据库优化方法

    此外,合理设计数据库架构,如分库分表,可以有效应对大数据量带来的挑战。 总的来说,SQL数据库优化是一个涉及多层面的综合工程,需要从网络、硬件、操作系统、数据库参数和应用程序等多个角度进行考虑和实施。每...

    DataBase.rar

    3. **数据库架构优化**:根据业务需求,可能需要设计合适的数据模型,例如范式化与反范式化的选择,以及数据库分库分表策略,以减轻单表压力,提高并发能力。 4. **存储引擎的选择**:MySQL提供了多种存储引擎,如...

    MongoDB集群架构.pptx

    - **分库分表**:当单个集合数据量过大(如8亿以上)时,可以使用分片来分摊负载。分片允许数据分布在多个机器或节点上,提高读写性能和存储容量。 - **命名约束**:库名和集合名的规则同复制集,禁止使用特殊字符...

    MySQL之设计、优化、运维

    - 规范设计:如读写分离、分库分表、分区策略等,以适应大规模并发和大数据量场景。 2. **优化**: - SQL查询优化:编写高效的SQL语句,避免全表扫描,合理使用JOIN操作,以及何时使用子查询或临时表。 - 参数...

    阿里去IOE分析和实施v1.1

    - 自动实现分库分表,降低应用改造难度。 - 提供方便的动态水平扩容能力。 - 通过DRDS,应用程序仍然可以视其为单一数据库。 2. **阿里的解决方案(OLTP)**: - 使用HSF/Dubbo等高性能服务框架实现微服务架构...

    mycat 1.5 release for linux

    MyCat是著名的开源数据库中间件,它以MySQL作为底层存储引擎,通过分库分表、读写分离等技术,解决了大数据环境下单机数据库性能瓶颈的问题。"mycat 1.5 release for linux 64bit"是MyCat针对Linux操作系统,特别是...

    android中sqlite

    - 数据库大小:随着数据量增加,应考虑分库分表、数据备份和恢复策略。 - 并发处理:多个线程同时访问数据库时,需注意线程安全问题。 9. 最佳实践: - 避免在主线程中进行耗时的数据库操作,以免阻塞UI。 - ...

    Mysql+优化详细介绍

    分库分表策略可以应对大数据量,提高系统扩展性。使用读写分离架构可以减轻主库压力,提高读取性能。 6. **参数调优**:MySQL有许多可调整的系统变量,如innodb_buffer_pool_size控制缓存大小,query_cache_size...

    70道MySQL面试题大全

    13. **分库分表**:水平分库通过数据分片分散负载,垂直分库是将不同表放在不同数据库中,可以借助分库中间件如 ShardingSphere 实现。 14. **数据备份与恢复**:常用工具如 `mysqldump` 和 `xtrabackup` 可用于...

    HBase权威指南

    然而,MySQL的分库分表操作相对较为复杂,而且在扩展性和处理大规模数据写入方面,相较于HBase存在一定的局限性。 在实际应用中,HBase可以用于多种不同的业务场景。例如,它非常适合于处理海量数据的写入,如历史...

    mysql数据库高级资料mysql优化技术资料.zip

    - **数据库分库分表**:通过水平分割(Sharding)或垂直分割(Partitioning)来分担数据库负载,降低单表数据量。 - **读写分离**:主库负责写操作,从库负责读操作,提高系统并发能力。 4. **查询语句优化**: ...

    数据库优化tuning

    9. **数据库架构调整**:采用读写分离、分库分表、数据复制等技术,可以分散负载,提升系统可用性。 10. **监控与调优工具**:使用性能监控工具(如Oracle的AWR报告、MySQL的慢查询日志)分析性能瓶颈,并借助专门...

    Mysql_性能优化教程

    - **分库分表**: 根据业务逻辑将数据分布在多个数据库或表中。 - **主从架构**: 建立主从复制模型,实现读写分离。 **3.3 故障转移处理** - **主备切换**: 在主服务器故障时,能够快速切换至备用服务器。 - **数据...

Global site tag (gtag.js) - Google Analytics