`
lzkooo
  • 浏览: 7893 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分库分表最佳实践大总结

阅读更多
一、随着企业业务的增长,访问量和用户等数据的增加,传统的关系数据库已经不能满足需求

分表分库就成了节省成本、和良好扩展性的必然选择

网上也有很多开源的分表分库的软件,也公司自己开发实现

而终其原理和步骤都无外乎三步:

  即首先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查询遍历所有表分片





  qq:360275663, j.cuxiao008.com(技术宅)

技术宅,中小互联网公司架构的好伙伴


  • 大小: 50.8 KB
1
1
分享到:
评论
1 楼 zj850324 2012-02-28  
Email:zj850324@sina.cn
qq:469876923
可以分享一下吗

相关推荐

    数据库分库分表的技术演进与最佳实践.docx

    数据库分库分表的技术演进与最佳实践 在移动互联网时代,海量数据的产生对数据库的存储和查询提出了很大的挑战。面对如此庞大的数据量,单一的数据库表已经无法满足需求,而数据库分库分表技术则是解决这个问题的...

    ShardingJDBC分库分表mysql数据库实战小滴新版

    本课程是新一代分库分表 Sharding-JDBC 最佳实践专题课程。课程内容丰富,涵盖了 MySQL 架构演变升级、分库分表的优缺点、常见策略及中间件介绍等多个方面。 课程首先介绍了分库分表的背景,包括 MySQL 数据库架构...

    MyCat安装配置及分库分表实验.docx

    MyCat作为数据库中间件,可以有效地解决大数据量下的读写性能问题,通过分库分表实现水平扩展。本文详细介绍了MyCat的安装配置和分库分表实验,提供了一套完整的配置示例,有助于读者理解和实践MyCat的相关功能。在...

    详解在.net core中完美解决多租户分库分表的问题

    总结来说,.NET Core中解决多租户分库分表问题的关键在于: 1. 设计一个可以根据租户信息动态创建数据库连接的机制,如`DBLocationCreator`。 2. 使用依赖注入注册服务,确保每个请求都有独立的数据库上下文。 3. ...

    系统架构优化最佳实践.docx

    - 水平分库分表:进一步扩展,将数据分散到多个数据库和表中,以平衡负载和提高性能。 结构演变则关注于系统的持续改进和适应性,包括技术选型、微服务架构的引入、容器化部署、服务网格的使用等,这些都是为了确保...

    springbootspishardingsphere.zip

    SpringBoot与ShardingSphere结合使用实现数据库分库分表是一个高效的数据分布式解决方案,尤其在大数据量下能够提高系统的性能和可扩展性。ShardingSphere是一个开源的数据库中间件,它包含Sharding-JDBC、Sharding-...

    系统架构优化最佳实践.pdf

    同时,数据库拆分也是重要步骤,包括垂直分表、垂直分库、水平分表和水平分库分表,以适应数据量的增长和处理需求。 三、结构演变 结构演变是系统优化的持续过程,随着业务和技术的发展,系统架构需要不断演进以...

    drds最佳技术文档实践文档

    1. **业务逻辑主体**:寻找数据表中的数据在业务逻辑上的主体,并确定大部分(或核心的)数据库操作都是围绕这个主体的数据进行,然后可使用该主体对应的字段作为拆分键,进行分库分表。 2. **典型应用场景**: -...

    Java开发面试必备知识技能总结视频合集

    - **分库分表原理**:介绍为什么需要进行数据库的分库分表,以及分库分表的基本策略和技术选型。 - **实践案例**:通过具体的项目案例来展示如何实施分库分表,包括水平分割、垂直分割等策略的实际应用。 #### 4. ...

    数据库平滑上云的最佳实践-谦昀 .pdf

    - 通过透明代理、读写分离、分库分表等技术,实现数据库的弹性扩展,快速响应业务需求变化。 - 支持按需资源扩容,可快速克隆实例并恢复到任意时间点,避免因扩容带来的业务中断。 4. **云数据库服务矩阵** - ...

    多数据源的分表分库6-13.docx

    ### 多数据源的分表分库技术解析 #### 一、概述 在现代数据库管理中,随着数据量的增长和业务复杂度的提高,单一数据库往往难以满足高性能、高可用性的需求。为了应对这一挑战,多数据源的分表分库技术应运而生。...

    Windows_Mycat1.6.zip

    分库分表是Mycat的核心功能之一,它能够将大规模的数据分散到多个数据库和表中,以降低单一表的压力,提高查询效率。通过哈希算法,Mycat可以智能地将数据均匀分布到不同的数据库实例,从而实现水平扩展,解决了单点...

    DB总结

    首先,"分库分表概述.docx"这个文件名暗示了我们即将讨论的是数据库的扩展策略之一——分库分表。当单个数据库无法承受大量并发访问或数据量过大时,就需要采取这种策略。分库是将数据分散到多个独立的数据库中,以...

    大型分布式网站架构设计与实践高清扫描中文版

    2. 数据库分库分表:通过ShardingSphere等工具解决单一数据库性能瓶颈。 3. 分布式消息队列:如RabbitMQ、Kafka,异步处理任务,提高系统响应速度。 4. 集群与负载均衡:Nginx、HAProxy等实现负载均衡,提高可用性。...

    网站架构 大规模网站 ppt

    5. 数据库分库分表:将大型数据库拆分成多个小型数据库,以缓解单一数据库的压力。 【PPT可能涉及的议题】 1. 模块化设计:如何将复杂系统划分为可管理的模块。 2. 缓存策略:如使用Redis或Memcached等缓存技术提高...

    MySQL主从备份+Mycat读写分离学习笔记

    2. **分库分表**:通过Mycat,可以将大表拆分为多个小表,分散到不同的数据库实例上,实现水平扩展,提高查询效率。 3. **SQL路由**:Mycat解析用户提交的SQL语句,根据预设的规则(如哈希、范围等)确定数据应存储...

    阿里巴巴中文站架构设计实践xxxxx.zip

    在数据库层面,阿里巴巴可能采用了分库分表、读写分离、主从复制等策略来应对大数据量的挑战。同时,通过使用MyBatis、JPA等ORM框架,简化了数据库操作,提高了开发效率。 六、容器化与DevOps Docker和Kubernetes...

    滴滴业务中台构建实践.pdf

    在技术实现上,采用了一系列高可用、高性能的技术手段,如分库分表、读写分离、冷热分离、压测隔离等,确保系统的稳定性和扩展性。 5. **面临的挑战与解决方案**: 随着业务的持续增长,中台面临的主要问题是持续...

    mycat生产使用遇到的8大问题汇总

    Mycat作为一款开源的分布式数据库中间件,被广泛应用于大数据处理和高并发场景,为企业提供了数据库分库分表、读写分离等解决方案。然而,在实际生产环境中,Mycat的使用往往会遇到一些常见问题。以下是对这些问题的...

Global site tag (gtag.js) - Google Analytics