广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中怎么实现海量数据分布式存储
  • 913
分享到

MySQL中怎么实现海量数据分布式存储

2024-04-02 19:04:59 913人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Mysql中怎么实现海量数据分布式存储,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、分布式应用的概念和优势分布式数据库是指利

这篇文章将为大家详细讲解有关Mysql中怎么实现海量数据分布式存储,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1、分布式应用的概念和优势

分布式数据库是指利用高速网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获得更大的存储容量和更高的并发访问量。近年来,随着数据量的增长,分布式数据库技术也得到了快速的发展,传统的关系型数据库开始从集中式模型向分布式存储,从集中式计算走向分布式计算。

分布式数据库系统的主要目的是容灾、异地数据备份,并且通过就近访问原则,用户可以就近访问数据库节点,这样就实现了异地的负载均衡。同时,通过数据库之间的数据传输同步,可以分布式保持数据的一致性,这个过程完成了数据备份,异地存储数据在单点故障的时候不影响服务的访问,只需要将访问流量切换异地镜像就行。

分布式数据库应用的优势如下:

(1)适合分布式数据管理,能够有效提高系统性能。

(2)系统经济性和灵活性好。

(3)系统的可靠性和可用性强。

MySQL中怎么实现海量数据分布式存储

2、mysql分布式应用的主要技术

(1)mysql数据切割

数据切割(sharding)是指通过某种特定的条件,将存放在同一数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。数据切分还可以提高系统的总体可用性,因为单台crash之后,只有总体数据的某部分不同,而不是所有数据。

根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者schema)来切分到不同的数据库(主机)之上,这种切分成为数据的垂直(纵向切分);另一种则是根据表中数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称为数据的水平(横向)切分。垂直切分的***特点就是规则简单,实施也更为方便,尤其适合各个业务之间耦合度低,相互影响小、业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所使用的表拆分到不同的数据库中。根据不同的表进行拆分,对应用程序的影响也更小,拆分规则也会比较简单清晰。水平切分比垂直切分更复杂一点。因为要将同一个表中的不同数据拆分到不同的数据库中,对于应用程序来说,拆分规则本身比较复杂,后期的数据维护也更加复杂一些。

(2)为什么要切分数据?

1)像oracle这样成熟稳定的DB可以支撑海量数据的存储和查询,但是价格不是所有人都承受得起。

2)负载高点时,Master-Slaver模式中存在瓶颈。现有技术中,在负载高点时使用相关的Replication机制来实现相关的读写的吞吐性能。这种机制存在两个瓶颈:一是有效性依赖于读操作的比例,这里Master往往会成为瓶颈所在,写操作时需要一个顺序队列来执行,过载时Master会承受不住,Slaver的数据同步延迟也会很大,同时还会消耗CPU的计算能力,为write操作在Master上执行以后还是需要在每台slave机器上都跑一次。而Sharding可以轻松的将计算,存储,I/O并行分发到多台机器上,这样可以充分利用多台机器各种处理能力,同时可以避免单点失败,提供系统的可用性,进行很好的错误隔离。

3)用免费的Mysql和廉价的Server甚至是PC做集群,达到小型机+大型商业DB的效果,减少大量的资金投入,降低运营成本,何乐而不为呢?

Mysql5.1以上的版本都支持数据表分区功能。数据库中的数据在经过垂直或水平切分被存放在不同的数据库主机中之后,应用系统面临的***问题就是如何让这些数据源得到较好的整合,有以下两种解决思路。

1)在每个应用程序模块中配置管理自己需要的一个(或者多个)数据源,直接访问各个数据库,在模块内完成数据的整合。

2)通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明。

第二种方案,虽然短期内需要付出的成本可能会大一些,但是对整个系统的扩展性来说,是非常有帮助的。针对第二种方案,可以思路如下:

1)利用mysql proxy实现数据切分及整合。

Mysql  proxy是在客户端请求与mysql服务器之间建立一个连接池,所有客户端请求都发送到mysql proxy,由mysql  proxy进行相应的分析,判断是读操作还是写操作,然后发送到相应的mysql服务器上。对于多节点slave集群,也可以做到负载均衡的效果。

2)利用amoeba实现数据切分及整合。

Amoeba是一个基于java开发的、专注于解决分布式数据库数据源整合proxy程序的开源框架,amoeba已经具有query路由,query过滤、读写分离、负载均衡以及HA机制等相关内容。Amoeba主要解决以下几个问题:

①数据切分后复杂数据源整合

②提供数据切分规则并降低数据切分规则给数据库带来的影响

③降低数据库与客户端的连接数

④读写分离路由

3)利用HiveDB实现数据切分及整合。

3、mysql读写分离

读写分离是利用数据库的复制技术,将读和写分布在不同的处理节点上,从而达到提高可用性和扩展性的目的。主数据库提供写操作,从数据库提供读操作,在很多系统中,更多地是读操作。当主数据库进行写操作时,数据要同步到从数据库,这样才能有效保证数据库完整性。Mysql也有自己的同步数据技术。Mysql通过二进制日志来复制数据,主数据库同步到从数据库后,从数据库一般由多台数据库组成,这样才能达到减轻压力的目的。读操作应根据服务器的压力分配到不同的服务器,而不是简单的随机分配。Mysql提供了mysql  proxy实现读写分离操作。

目前较为常见的mysql读写分离分为以下两种。

①基于程序代码内部实现

在代码中根据select、insert进行路由分类,这类方法也是目前生产环境中应用最广泛的。

②基于中间代理层实现

代理位于客户端和服务器之间,代理服务器收到客户端请求后通过判断转发到后端数据库。下图是ebay读写分离的结构图,通过share plex近乎实时的复制数据到其他数据节点,再通过特定的模块检查数据库状态,并进行负载均衡、读写分离,极大地提高了系统可用性。

4、mysql集群

Mysql cluster技术在分布式系统中为mysql数据提供了冗余特性,增强了安全性,使得单个mysql服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障。

Mysql  cluster采用shared-nothing(无共享)架构。Mysql  custer主要利用了NDB存储引擎来实现,NDB存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存储节点上,每个存储节点只保存完整数据的一个分片(fragment)。同时,用户可以设置同一份数据保存在多个不同的存储节点上,以保证单点故障不会造成数据丢失。

Mysql  cluster需要一组计算机,每台计算机的角色可能是不一样的。Mysql  cluster按照节点类型可以分为3类:管理节点(对其他节点进行管理)、数据节点(存放cluster中的数据,可以有多个)和mysql节点(存放表结构,可以有多个)。Cluster中的某计算机可以是某一种节点,也可以是2种或3种节点的集合。这3种节点只是在逻辑上划分,所以他们不一定和物理计算机是一一对应的关系。多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。

Mysql集群的出现很好的实现了数据库的负载均衡,减少了数据中心节点的压力和大数据处理,当数据库中心节点出现故障时,集群会采用一定的策略切换到其他备份节点上,有效的屏蔽了故障问题,单节点的失效不会影响整个数据库对外提供服务。而且通过采用数据库集群架构,主从数据库之间时刻都在进行数据的同步冗余,数据库是多点的、分布式的,良好的完成了数据库数据的备份,避免了数据损失。

关于MySQL中怎么实现海量数据分布式存储就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中怎么实现海量数据分布式存储

本文链接: https://www.lsjlt.com/news/56910.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中怎么实现海量数据分布式存储
    这篇文章将为大家详细讲解有关MySQL中怎么实现海量数据分布式存储,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、分布式应用的概念和优势分布式数据库是指利...
    99+
    2022-10-18
  • PostgreSQL中怎么实现海量数据无限空间存储
    PostgreSQL中怎么实现海量数据无限空间存储,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用s3_fdw插件打通云数据库Postg...
    99+
    2022-10-18
  • 面向海量数据,一篇文章认识Ceph分布式存储系统
      Ceph是什么它是一个软件定义的开源分布式对象存储解决方案,面向PB级的海量数据存储平台。最初由Inktank于2012年开发,该公司在2014年被红帽收购。随着近几年大数据的发展,因为在性能、可靠性和可扩展性方面具有优秀表现,Ceph...
    99+
    2023-06-04
  • 实现小数据量和海量数据的通用分页显示存储过程(转)
    实现小数据量和海量数据的通用分页显示存储过程   建立一个web 应用,分页浏览功能必不可少。这个问题是数据库处理中十分常见的问题。经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页。但这种分页...
    99+
    2023-06-03
  • 怎么在MySQL数据库中实现一个分布式锁
    这篇文章将为大家详细讲解有关怎么在MySQL数据库中实现一个分布式锁,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。建表CREATE TABLE&n...
    99+
    2022-10-18
  • mysql中怎么实现分布式锁
    这篇文章主要介绍“mysql中怎么实现分布式锁”,在日常操作中,相信很多人在mysql中怎么实现分布式锁问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql中怎么实现分布式锁”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-27
  • mysql存储过程数据怎么实现
    今天小编给大家分享一下mysql存储过程数据怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-05-25
    mysql
  • MySQL数据库怎么实现存储时间
    这篇文章将为大家详细讲解有关MySQL数据库怎么实现存储时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.切记不要用字符串存储日期字符串占用的空间更大!字符串存储的日期比较效率比较低(逐个字符进行比对...
    99+
    2023-06-29
  • MYSQL中怎么利用DATE实现数据类型存储
    这篇文章给大家介绍MYSQL中怎么利用DATE实现数据类型存储,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 MYSQL-数据类型存储-DATE on E...
    99+
    2022-10-18
  • Python中如何实现分布式系统的二维码数据传输和存储?
    随着互联网技术的不断发展,分布式系统已经成为了大数据时代的核心应用之一。在分布式系统中,数据的传输和存储是非常重要的一环。本文将介绍如何使用Python实现分布式系统的二维码数据传输和存储。 一、什么是二维码? 二维码是一种二维图形码,通...
    99+
    2023-10-02
    关键字 二维码 分布式
  • 分布式锁中的数据库、缓存、Zookeeper实现是怎样的
    分布式锁中的数据库、缓存、Zookeeper实现是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。分布式锁的几种实现方式目前几乎很多大型网站及应用都是分布式部署的,分布...
    99+
    2023-06-05
  • 如何使用PHP微服务实现分布式数据存储和检索
    引言:随着互联网技术的不断发展,数据的规模也在迅速增长。传统的数据存储和检索方式往往面临着各种限制,例如单机存储容量限制、性能瓶颈、单点故障等等。为了解决这些问题,微服务架构逐渐兴起,并逐渐应用于各个领域。本文将介绍如何使用PHP微服务来实...
    99+
    2023-10-21
    数据检索 PHP微服务 分布式数据存储
  • Git分布式如何实现对PHP数据类型的管理和存储?
    Git是一款分布式版本控制系统,它可以帮助团队协作开发,管理项目代码,记录代码修改历史等。在Git中,数据类型的管理和存储是非常重要的一部分。本文将会介绍Git分布式如何实现对PHP数据类型的管理和存储。 Git的数据类型 Git中的数据类...
    99+
    2023-09-27
    数据类型 git 分布式
  • SQL Server中怎么实现分布式数据库系统
    今天就跟大家聊聊有关SQL Server中怎么实现分布式数据库系统,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。   ...
    99+
    2022-10-18
  • C#中怎么使用Couchbase实现分布式缓存
    C#中怎么使用Couchbase实现分布式缓存,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、简介 目前C#业界使用得最多的 Cache 系统主要是 Memcached和...
    99+
    2023-06-17
  • MySQL中怎么实现分布式架构扩缩容
    这篇文章给大家介绍MySQL中怎么实现分布式架构扩缩容,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MySQL分布式架构的扩缩容是一个很有意思的话题。严格的说,我们所说的这种架构方案是...
    99+
    2022-10-18
  • 怎么在MySQL中利用DB实现分布式锁
    怎么在MySQL中利用DB实现分布式锁?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。表设计首先要明确DB在系统中仍然需要认为是最脆弱的一环,因...
    99+
    2022-10-18
  • NoSQL数据库中怎么实现一个分布式算法
    NoSQL数据库中怎么实现一个分布式算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。数据一致性众所周知,分布式系统经常会遇到网络隔离或是延迟...
    99+
    2022-10-18
  • MySQL中怎么实现数据切分
    MySQL中怎么实现数据切分,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  什么是MySQL数据切分  "Shard"...
    99+
    2022-10-18
  • SQL Server中怎么实现数据行批量插入脚本的存储
    这篇文章给大家介绍SQL Server中怎么实现数据行批量插入脚本的存储,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。本存储运行于SQL Server 2005或以上版本,T-SQL代...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作