MySQL互联网Oracle企业应用数据结构 .
数据库的复制能解决访问问题,并不能解决大规模的并发写入问题,要解决这个问题就要考虑mysql数据切分了
数据切分,顾名思义,就是数据分散,将一台主机上的数据分摊到多台,减轻单台主机的负载压力,有两种切分方式,一种是分库,即按照业务模块分多个库,每个库中的表不一样,还有一种就是分表,按照一定的业务规则或者逻辑将数据拆分到不同的主机上,每个主机上的表是一样的,这个有点类似于Oracle的表分区。
分库又叫垂直分区,这种方式实现起来比较简单,重要的是对业务要细化,分库时候要想清楚各个模块业务之间的交互情况,避免将来写程序时出现过多的跨库操作。
分表又叫水平分区,这种方式实现起来就比垂直分区复杂些,但是它能解决垂直分区所不能解决的问题,即单张表的访问及写入很频繁,这时候就可以根据一定的业务规则(PS:如互联网BBS论坛的会员等级概念:根据会员等级来分表)来分表,这样就能减轻单表压力,并且还能解决各个模块的之间的频繁交互问题。
分库的优点是:实现简单,库与库之间界限分明,便于维护,缺点是不利于频繁跨库操作,单表数据量大的问题解决不了。
分表的优点是:能解决分库的不足点,但是缺点却恰恰是分库的优点,分表实现起来比较复杂,特别是分表规则的划分,程序的编写,以及后期的数据库拆分移植维护。
实际应用中,一般互联网企业的路线都是先分库再分表,两者结合使用,取长补短,这样发挥了mysql扩展的最大优势,但是缺点是架构很大,很复杂,应用程序的编写也比较复杂。
以上是mysql的数据切分的一些概念,数据切完了,现在要做的是怎么样在整合起来以便于外界访问,因为程序访问的入口永远只有一个,现在比较常用的解决方案是通过中间代理层来统一管控所有数据源。
常用的代理层方案:
1.mysql proxy
类似于连接池,所有连接通过它进行转发。
2.Amoeba
是一个开发代理层的框架,有对应版本Amoeba for mysql,对于数据切分规则,连接数控制,以及读写分离路由支持较好。
3.HiveDB
仅支持水平切分,底层由hibernate shards实现。
4.其他
HSCALE,Spock Proxy(ROR),Pyshards(Python)
最后值得注意的是mysql分库分表的缺点:
缺少好的分布式事务解决方案,目前仅有Innodb提供解决方案,性能值得商榷。
缺少类似于DBLink的跨节点SQL解决方案,Federated提供支持了,但是还是简单的支持,对于表结构的变化就不能为力。
这些缺点只能通过应用程序层来解决,不过话说回来,如果所有缺点都解决了,Oracle也不会卖那么贵了。
分享到:
相关推荐
58同城mysql分库分表实践,非常不错的分享文档,适合学习如何扩展MySQL的。
具有以下功能点:配置集中管理,动态刷新支持读写分离,分库分表丰富的监控信息在CAT上展现初步化数据库请求,多数据源支持核心价值简化了识别分离,分库分表的开发工作,并在业务方在分库分库,识读分离的情况下,...
前期在于重点解决 MySQL 的单机性能和容量无法线性和灵活扩展的问题,最终选择了 Mycat,在调研阶段,对以下技术特性进行了重点考虑: 协议兼容 MySQL 支持 SQL 92标准 可在线扩展 支持读写分离,支持Mysql双主多从...
数据库存储引擎, 数据库连接池, 数据库分库分表, 数据库复制, 数据库扩展, 数据库调优, 数据库架构mysql, 面试题, 数据库, 数据管理, 数据库管理, 数据库设计, sql, 数据查询, 数据库优化, 数据库安全, 数据库备份,...
互联网时代,也是关系型数据库独领风骚的时代,从早期的Oracle独步天下,到现在MySQL蒸蒸日上,关系型...同时,也希望通过线性扩容降低全量数据迁移对线上服务带来的影响,分库分表方案便应运而生。分库分表的原理是
其核心采用微内核 + 可插拔架构,通过插件开放扩展功能。它提供多源异构数据库增强平台,进而围绕其上层构建生态。 Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。它关注...
Node.js 的 MySQL 分表分库数据访问中间件,实现MySQL数据的分布式集群储存管理。在处理海量数据、高并发访问时,获得更加优越的性能及横向扩展能力。它包含以下主要特性: 可伸缩、高扩展的架构 ...
很多朋友在论坛和留言区域问mysql在什么情况下才需要进行分库分表,以及采用何种设计方式才是最优的选择,根据这些问题,小编为大家整理了关于MySQL分库分表的应用场景和最优的设计方式举例。 一. 分表 场景:对于...
需要进行数据的处理,采用的手段是分区、分片、分库、分表。 二、分片(类似分库) 分片是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 关键字: 水平切分,分库,分表,主从,集群 第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一...
此外,还探讨了MySQL高可用方案和分库分表的实用性,说明了这些技术在处理大数据量时如何提升数据库性能和可扩展性。总之,本文为开发者提供了一套完整的MySQL主从架构与读写分离的实战指南,旨在帮助他们有效地解决...
高度兼容MySQL大多数情况下,无需修改代码即可从MySQL轻松迁移至TiDB,分库分表后的MySQL集群亦可通过TiDB工具进行实时迁移。水平弹性扩展通过简单地增加新节点即可实现TiDB的水平扩展,按需扩展吞吐或存储,轻松...
经过数十个版本的更新迭代发布全新v2.0版本,支持动态列/表、分库/分表等;上手简单,0学习成本,按照sql书写习惯编写C#.NET代码;轻量级,高性能,接近手写Sql;支持SqlServer(2000至最新版),MySql,Oracle,Access,...
当请求量或者存储量变大时,mysql需要做分库分表,DBGate可以内部直接处理,外界无感知 通过restful限制对数据请求的形式,仅支持简单的get/post/patch/put进行增删改查,并不支持复杂查询。这个也是和游戏业务的...
当请求量或者存储量变大时,mysql需要做分库分表,DBGate可以内部直接处理,外界无感知 通过restful限制对数据请求的形式,仅支持简单的get/post/patch/put 进行增删改查,并不支持复杂查询。这个也是和游戏业务的...
经过数十个版本的更新迭代发布全新v2.0版本,支持动态列/表、分库/分表等。官方网站: 交流群:60831381 Dos.ORM特点:? 上手简单,0学习成本,按照sql书写习惯编写C#.NET代码 轻量级,高性能,接近手写Sql ...
DRDS 是一款基于 MySQL 存储、采用分库分表技术进行水平扩展的分布式 OLTP 数据库服务产品,支持 RDS for MySQL 以及 POLARDB for MySQL,产品目标旨在提升数据存储容量、并发吞吐、复杂计算效率三个方面的扩展性...
Ctrip DAL支持流行的分库分表操作,支持Java和C#,支持Mysql和MS SqlServer。使用该框架可以在有效地保护企业已有数据库投资的同时,迅速,可靠的为企业提供数据库访问层的横向扩展能力。整个框架包括代码生成器和...
TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时 它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。