Mycat个人心得笔记(一) 矫情吗;* 2022-01-23 07:49 232阅读 0赞 # Mycat个人心得笔记(一) # -------------------- **目录** Mycat个人心得笔记(一) 一.简介 MyCat的目标是: 二.数据库策略(单击策略,集群策略) 一.单机 二.策略:三范式原则(可以去看看相关技术博客) ◆ 第一范式(1NF): ◆ 第二范式(2NF): ◆ 第三范式(3NF): 三.范式总结: 四.最终结论:早期使用的单机设计模式;解决利用查询时间效率换区空间资源的节省; 五.企业中主流设计原则:反三范式 六.索引 三.数据库集群 一.数据库的集群结构: 二.mysql数据库的主从复制 三.mysql的主从复制原理 下篇博客写如何搭建数据库集群 多台数据库安装 -------------------- # 一.简介 # **上几篇博客介绍了,Nginx 前端请求并发 Redis集群 缓存处理,数据库方面的技术没有介绍,下面简单介绍下关于数据库集群方面的技术** * 一个彻底开源的,面向企业应用开发的“大数据库集群” * 支持事务、ACID、可以替代Mysql的加强版数据库 * 一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群 * 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server * 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 * 一个新颖的数据库中间件产品 ### MyCat的目标是: ### **低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。** # 二.数据库策略(单击策略,集群策略) # ### 一.单机 ### **早期硬件极其昂贵,系统的并发能力要求不高;如现在的常用的Mysql** ### 二.策略:三范式原则(可以去看看相关技术博客) ### ### ◆ 第一范式(1NF): ### 强调的是列的原子性,即列不能够再分成其他几列。 考虑这样一个表:【联系人】(姓名,性别,电话) 如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。要符合 1NF 我们只需把列(电话)拆分,即:【联系人】(姓名,性别,家庭电话,公司电话)。1NF 很好辨别,但是 2NF 和 3NF 就容易搞混淆。 ### ◆ 第二范式(2NF): ### 首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 考虑一个订单明细表:【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)。 因为我们知道在一个订单中可以订购多种产品,所以单单一个 OrderID 是不足以成为主键的,主键应该是(OrderID,ProductID)。显而易见 Discount(折扣),Quantity(数量)完全依赖(取决)于主键(OderID,ProductID),而 UnitPrice,ProductName 只依赖于 ProductID。所以 OrderDetail 表不符合 2NF。不符合 2NF 的设计容易产生冗余数据。 可以把【OrderDetail】表拆分为【OrderDetail】(OrderID,ProductID,Discount,Quantity)和【Product】(ProductID,UnitPrice,ProductName)来消除原订单表中UnitPrice,ProductName多次重复的情况。 ### ◆ 第三范式(3NF): ### 首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。 考虑一个订单表【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)主键是(OrderID)。 其中 OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity 等非主键列都完全依赖于主键(OrderID),所以符合 2NF。不过问题是 CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF。 通过拆分【Order】为【Order】(OrderID,OrderDate,CustomerID)和【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity)从而达到 3NF。 第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。 **参考文献 [https://blog.csdn.net/QingKing520/article/details/52937728][https_blog.csdn.net_QingKing520_article_details_52937728]** ### 三.范式总结: ### * 数据库字段数据不可拆分(关系型数据库自动满足这个要求) * 在满足第一范式的基础上,所有的非主键字段必须完全依赖主键字段; * 第二范式的一种特殊情况,不是复合主键,非主键字段必须依赖主键字段不能依赖其他非主键字段 **只要不满足三范式设计的表格都要进行拆分处理,造成数据库表格结构极其精简,但是表非常多,使用数据是需要关联查询,满足三范式就不能做冗余字段;** **早起,硬盘存储过小,牺牲查询时间效率,换取空间资源的节省 ** ### **四.最终结论:早期使用的单机设计模式;解决利用查询时间效率换区空间资源的节省;** ### * **用户的要求越来越高;** * **单机设计策略不能在使用三范式;** * **找到一种设计模式,利用空间资源换区查询时间效率--违反三范式就能做到--反范式** ### **五.企业中主流设计原则:反三范式** ### * **物理内存、硬盘空间极其昂贵。在设计中节省空间首要指标。** * **现今设计的节省时间,提高效率,提高用户的使用满意度。查询速度快,页面展现快。** * **缺点:信息在数据库中不唯一,需要对多处维护。** * **反三范式:目的,利用空间换时间。** ### 六.索引 ### ** 定义:按照一定规则(排序)的组成数据结构.实现存储在磁盘,利用索引快速定位目的数据的一批文件** ** 磁盘最小数据存储为512B 存储都是512的倍数** * **mysql数据库每生成一条或一批数据存储在磁盘上,** * **都会对应在索引的数据内添加数据的索引信息,** * **从而可以利用索引数据快速定义磁盘目的起始地址;** * **可以帮助查询数据的起始位置,从而让磁头进行更少磁盘io操作** **mysql中的所用数据结构 B+TREE (硬盘中数据的结构)** **![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpdVk1MjE_size_16_color_FFFFFF_t_70][]** **三阶的b+tree最多帮助查找27条数据,随着数据越来越多,数据库会把b+tree变得越来越高,越来越宽** **阶数+1次io 能使用id做索引,能不是使用string类型的user\_id,user\_name做索引 保证排序** **单机数据库无论从设计,从索引的优化,都会最终瓶颈卡在硬件读写速度上现代磁盘150M/S;** **单机无法解决海量高并发的数据,最快固态硬盘在传输速度3500M/s左右** # 三.数据库集群 # ### **一.数据库的集群结构:** ### ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpdVk1MjE_size_16_color_FFFFFF_t_70 1][] **数据库的主从复制技术是高可用分布式集群的基础** ### 二.mysql数据库的主从复制 ### ** mysql数据支持一主多从,多级主从;搭建主从结构之前了解主从复制原理** ### 三.mysql的主从复制原理 ### ** 一主一从为结构,了解复制的原理** ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpdVk1MjE_size_16_color_FFFFFF_t_70 2][] **搭建主从mysql结构时** * 主节点:开启一个二进制日志文件(mysql默认不开二进制) * 从节点:开启io线程,读取主节点二进制文件 * 开启中继日志,保存io读取的数据 * 开启sql线程,跟新本地数据 # ** 下篇博客写如何搭建数据库集群 多台数据库安装** # [https://blog.csdn.net/LiuY521/article/details/90749424][https_blog.csdn.net_LiuY521_article_details_90749424] [https_blog.csdn.net_QingKing520_article_details_52937728]: https://blog.csdn.net/QingKing520/article/details/52937728 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpdVk1MjE_size_16_color_FFFFFF_t_70]: /images/20220123/6a5333cd217e4e8cbab52c7f5778f115.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpdVk1MjE_size_16_color_FFFFFF_t_70 1]: /images/20220123/f54451198e0843a0be7475d778825aa9.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xpdVk1MjE_size_16_color_FFFFFF_t_70 2]: /images/20220123/eb250aa1dea44b979b9363ea8c7d7872.png [https_blog.csdn.net_LiuY521_article_details_90749424]: https://blog.csdn.net/LiuY521/article/details/90749424
相关 Mycat个人心得笔记(六) [Mycat个人心得笔记(六)][Mycat] -------------------- 目录 偏执的太偏执、/ 2022年01月22日 01:49/ 0 赞/ 237 阅读
相关 Hadoop个人心得笔记(一) Hadoop个人心得笔记(一) Volume:数据量大,包括采集、存储和计算的量都非常大。大数据的起始计 小鱼儿/ 2021年12月20日 04:31/ 1 赞/ 400 阅读
相关 Flume个人心得笔记 一、概述 1. Flume是Apache提供的开源的、分布式的、可靠的日志收集系统 2. 能够有效的收集、聚合、传输大量的日志数据 3. Flume有2个版本:Fl 布满荆棘的人生/ 2021年12月16日 12:25/ 0 赞/ 433 阅读
还没有评论,来说两句吧...