1、逻辑表
既然有逻辑库,那么就会有逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表,可
以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。
2、分片表
分片表,是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所
有分片构成了完整的数据。例如在 mycat 配置中的 t_node 就属于分片表,数据按照规则被分到 dn1,dn2 两个分片节点(dataNode)上。
<table name="t_node" primaryKey="vid" autoIncrement="true" dataNode="dn1,dn2" rule="rule1" />
3、非分片表
一个数据库中并不是所有的表都很大,某些表是可以不用进行切分的,非分片是相对分片表来说的,就是那
些不需要进行数据切分的表。如下配置中 t_node,只存在于分片节点(dataNode)dn1 上。
<table name="t_node" primaryKey="vid" autoIncrement="true" dataNode="dn1" />
4、ER 表
关系型数据库是基于实体关系模型(Entity-Relationship Model)之上,通过其描述了真实世界中事物与关
系,Mycat 中的 ER 表即是来源于此。一个真实的业务系统中,往往存在大量的类似字典表的表格,它们与业务表之间可能有关系,这种关系,可以理解为“标签”,而不应理解为通常的“主从关系”,这些表基本上很少变动,可以根据主键 ID 进行缓存根据这一思路,提出了基于 E-R 关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据 Join 不会跨库操作。MyCAT 借鉴了 NewSQL 领域的新秀 Foundation DB 的设计思路,Foundation DB 创新性的提出了 Table Group 的概念,其将子表的存储位置依赖于主表,并且物理上紧邻存放,因此彻底解决了 JION 的效率和性能问题,根据这一思路,提出了基于 E-R 关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上。
<table name="customer" dataNode="dn1,dn2" rule="sharding-by-intfile">
<childTable name="orders" joinKey="customer_id" parentKey="id"/>
</table>
表分组(Table Group)是解决跨分片数据 join 的一种很好的思路,也是数据切分规划的重要一条规则。
5、全局表
一个真实业务系统中,往往存在大量的类似字典表的表,这些表基本上很少变动,字典表有以下几个特性:
• 变动不频繁
• 数据量总体变化不大
• 数据规模不大,很少有超过数十万条记录。
对于这类的表,在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关
联,就成了比较棘手的问题,所以 Mycat 中通过数据冗余来解决这类表的 join,即所有的分片都有一份数据的拷贝,所有将字典表或者符合字典表特性的一些表定义为全局表。
数据冗余是解决跨分片数据 join 的一种很好的思路,也是数据切分规划的另外一条重要规则。
字典表具有以下几个特性:
• 变动不频繁
• 数据量总体变化不大
• 数据规模不大,很少有超过数十万条记录。
鉴于此,MyCAT 定义了一种特殊的表,称之为“全局表”,全局表具有以下特性:
• 全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性
• 全局表的查询操作,只从一个节点获取
• 全局表可以跟任何一个表进行 JOIN 操作
相关推荐
Mycat是一款开源的、基于Java开发的分布式数据库中间件,主要用于解决大数据量、高并发场景下的数据库处理问题。它实现了MySQL协议,可以作为MySQL的一个高性能、高可用的集群解决方案,支持读写分离和数据水平切分...
《Mycat数据库中间件详解——基于mycat1.6.7.1版本》 Mycat是一款开源的、基于Java开发的分布式数据库中间件,主要用于解决大数据量、高并发的分布式数据库架构问题。在本篇文章中,我们将深入探讨mycat1.6.7.1版本...
【Mycat1.6与SQLServer操作案例详解】 Mycat是一款开源的分布式数据库中间件,它在大型分布式系统中扮演着数据库分片的角色,能够有效地解决单个数据库性能瓶颈的问题。Mycat 1.6是其一个重要版本,提供了更稳定、...
在本压缩包"mycat1.6.7.5.zip"中,包含了在Linux环境下安装Mycat 1.6.7.5所需的所有关键组件,尤其是Java Development Kit (JDK) 1.8的安装文件,因为Mycat运行在Java平台上,所以JDK是其运行的前提。 首先,让我们...
MySQL中间件Mycat是为了解决大数据场景下的数据库扩展性问题而设计的,它作为一个分布式数据库系统,能够实现MySQL的读写分离以及分库分表功能。在本压缩包中,我们获得了Mycat 1.6.7.5的Windows版本,这是一款专为...
本文将深入探讨Mycat 1.6的核心概念、设计原理以及源码解析,帮助读者了解并掌握这款强大的数据库中间件。 1. **Mycat架构概述** Mycat采用主备模式设计,主要由Server节点和Schema节点构成。Server节点负责处理...
Mycat作为一款开源的数据库中间件,主要用于解决大型系统中的数据分库分表问题,通过它能够将大量的数据分散到多个物理数据库中,以此来提升系统的并发处理能力和数据读写性能。在实际应用中,Mycat可以广泛应用于...
《Mycat 1.6权威指南》与《Mycat 1.5权威指南》是两本关于Mycat数据库中间件的重要参考资料,分别提供了详细的1.6和1.5版本的技术信息和实践指导。Mycat作为一款开源的分布式数据库系统,它解决了大数据量下的高并发...
《Mycat数据库分片中间件详解》 Mycat,作为一款开源的分布式数据库中间件,被广泛应用于大数据量、高并发的互联网环境中。它实现了数据库的分片功能,可以将一个大表拆分成多个小表,分散在不同的数据库服务器上,...
《Mycat数据库中间件深度解析》 Mycat,作为一个开源的数据库中间件,是Java语言编写的数据分片和数据库集群解决方案,主要用于解决大数据量、高并发的业务场景下的数据库扩展问题。在这个版本——Mycat v1.6.7.6中...
【Mycat1.6.7.4:数据库中间件详解】 Mycat,作为一款强大的数据库中间件,它的出现是对阿里巴巴开源项目Cobar的一次革新与超越。Cobar是MySQL集群的一种解决方案,但随着时间的发展,社区发现它存在一些局限性,...
《深入解析mycat1.6源码:一次技术探索之旅》 Mycat,作为一款开源的分布式数据库中间件,广泛应用于大型分布式系统中,它实现了数据分片、读写分离、故障切换等功能,为高并发、大数据量的场景提供了优秀的解决...
在IT行业中,Linux系统因其稳定性和安全性而广泛应用于服务器领域,而Mycat则是一款针对大数据分布式处理的开源数据库中间件,它为大型网站和企业提供了高性能的数据分片解决方案。本篇文章将详细介绍如何在Linux...
2. **分库分表**:Mycat的核心功能之一就是实现数据库的横向扩展,通过分库分表策略,将大表拆分成多个小表,分布在不同的数据库实例上,提高数据读写性能。 3. **SQL路由**:Mycat支持自定义SQL解析规则,可以根据...
标题中的问题涉及到的是在使用Mycat数据中间件时,尝试使用JDBC 8驱动连接到Mycat 1.6版本时遇到的一个错误:`Unknown system variable 'query_cache_size'`。这个问题出现的原因在于MySQL 8.0版本中移除了`query_...
MySQL中间件Mycat是为了解决大数据场景下的数据库扩展性问题而设计的一款开源软件,它主要用于实现MySQL的读写分离以及数据的分库分表。Mycat 1.6-RELEASE是其一个稳定版本,发布于2016年10月28日,适用于Linux操作...
安装和配置Mycat时,需要修改相应的配置文件,如schema.xml定义数据节点和表的分片规则,server.xml配置Mycat服务器的启动参数。启动Mycat服务后,客户端应用程序可以像连接普通数据库一样连接Mycat,而背后的复杂分...
《Mycat 1.6.7.3版本:分布式数据库中间件的深度解析》 Mycat,作为一款开源的、基于Java开发的数据库中间件,被广泛应用于分布式数据库系统中,它能够有效地解决大数据量下的高并发访问问题。在Mycat 1.6.7.3这个...
总的来说,Mycat 1.6-RELEASE版为Windows用户提供了一个强大且易用的数据库中间件解决方案,它在处理大数据场景时,通过读写分离和分库分表策略,显著提升了系统的处理能力和可扩展性。正确地配置和使用Mycat,可以...
MySQL中间件Mycat是为了解决大数据场景下的数据库扩展性问题而设计的一款开源软件,它主要用于实现MySQL的读写分离以及数据的分库分表。Mycat的核心功能是将一个大表逻辑上拆分为多个小表,分散在不同的数据库服务器...