mysql海量数据的存储和访问解决方案.docx

上传人:b****6 文档编号:7786459 上传时间:2023-01-26 格式:DOCX 页数:10 大小:24.75KB
下载 相关 举报
mysql海量数据的存储和访问解决方案.docx_第1页
第1页 / 共10页
mysql海量数据的存储和访问解决方案.docx_第2页
第2页 / 共10页
mysql海量数据的存储和访问解决方案.docx_第3页
第3页 / 共10页
mysql海量数据的存储和访问解决方案.docx_第4页
第4页 / 共10页
mysql海量数据的存储和访问解决方案.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

mysql海量数据的存储和访问解决方案.docx

《mysql海量数据的存储和访问解决方案.docx》由会员分享,可在线阅读,更多相关《mysql海量数据的存储和访问解决方案.docx(10页珍藏版)》请在冰豆网上搜索。

mysql海量数据的存储和访问解决方案.docx

mysql海量数据的存储和访问解决方案

mysql,海量数据的存储和访问解决方案

  篇一:

海量数据存储数据切分分布式

  海量数据存储

  摘要

  在当今的信息化时代中,产生了海量的数据和信息资源,急切的需要一种技术对海量数据进行科学的高效率的进行管理。

而利用数据库进行海量数据存储是目前运用的方法,但是如何运用数据库以及运用哪种数据库又显得格外重要。

根据Mysql数据库的特点,本论文讨论了运用Mysql数据库进行大数据量的存储,以及利用数据切分进行数据优化,来提高海量数据的存储效率。

海量数据管理的前景虽然乐观,但目前仍存在很多技术上的难题需要克服。

存储策略的研究侧重于空间效率的改进,本文讨论了利用数据切分进行分布式存储的方法。

  关键词:

海量数据;存储;查询;Mysql;分布式存储;数据切分

  一、海量数据的研究现状

  1、海量数据的定义

  随着科技的不断发展,数字信息存储量在迅速的以指数规模进行增长,人们面对的信息量也越来越多,而这些数据被统称为海量数据。

海量数据都具有如下几个特点:

(1)数据规模大;

(2)对软硬件和系统资源的要求和占用率都很高;(3)增长速度快,元数据规模庞大;(4)数据类型多样,半结构化和非结构化数据比例大。

  尽管目前学界对于海量数据的界限众说纷纭,但如果数据具备了上述四个特点中的三个包括三个以上时,一般就被作为海量数据处理了。

  2、国际上海量数据的研究现状

  对于目前愈来愈多的信息量,我们如何才能对这些海量数据进行高效的存储、组织、管理呢?

这个问题现已成为国内外研究的热点话题。

在国外,一些科研工作者已经取得了突破性的研究成果。

但需要指出的是,这

  些工作一般有个共同点,那就是它们主要依托传统的关系型数据库的管理系统,以下两条技术路线,是它们主要的实现方法:

①在关系型数据库管理系统中,利用引擎中间件来管理和处理数据,这条路线的主要推动力来自世界上规模较大的GIS厂商,ESRI的SpatialWare,ArcSDE和Maplnfo都是其中广为人知的代表;②对关系型数据库管理系统进行空间方面的扩展,以此帮助数据库管理海量数据。

各大数据库厂商的在这条路线上进行了有力的推动,最著名的产品莫过于甲骨文公司的OracleSpatialGeoRaster了。

同类软件中,IBMDB2的SpatialExtender和PostGIS也是其中佼佼者,但美中不足的是,它们的管理能力都很弱。

  3、国内海量数据的研究现状

  随着数据库规模的不断扩大,海量数据存储的数据库,也就会占用大量的磁盘空间,因此查询的时间也就会大大延长。

另外,根据局部性原理,数据的被访问程度并不是均匀分布的,实际情况是,最近的数据访问频率远远高于相对陈旧的数据。

这就构成了査询过程中两对显著的矛盾:

查询速度与数据总量之间的矛盾以及数据局部访问和全部访问之间的矛盾;在海量数据査询过程中,两对矛盾更是尤为明显。

  目前国内一些学者关于关于查询策略优化的研究主要还是集中在针对物理层的存取方式的设计上,依靠硬件技术和性能方面来实现提高查询效率的效果的。

而目前的网络存储技术主要有三种:

以服务器为中心的直接连接存储(DAS:

DirectAttachedStorage).以数据为中心的网络连接存储(NAS:

NetworkAttachedStorage)和以网络为中心的存储区域网络(SAN:

StorageAreaNetwork)。

  而这三种方式也存在各自的缺陷:

DAS模式的缺点:

①扩展性差;②资源利用率低;③可管理性差;④异构化严重。

NAS的缺点是:

①占用网络带宽;企业网NAS设备与客户机连接的中介,因此不管是备份过程还是存储过程,网络的带宽都会被占用一部分。

②NAS的可扩展性受到设备大小的限制。

SAN模式也有三个缺点:

①技术尚处于发展阶段,暂时未能形成统一的标准;②实现阶段要求十分复杂,需要专业的技术人员进行维护,普通用户难以胜任;③价格偏高,普通企业用户难以承担。

  二、海量数据的存储研究

  1、海量数据存储的现实状况

  目前,随着当今社会信息技术的不断发展,各个行业的信息量都呈现出了爆炸式地增长,TB(1024GB)级数量级已经十分常见,而在地理、生物、天文以及物理等研究领域已经出现大小为PB(1024TB)数量级的文件。

比如,一些大型的社交网站,每天需要维护的数据量就已经足够大了;还比如现在现在的测绘行业,随着仪器精度的提高,以及全球化的风潮刮来,所需的测绘保障数据也大大的提高,更多更清晰的影像数据等等都需要较好的数据存储方式。

这样,就对海量数据的合理处理提出了更高更新的要求:

容量的方面:

容量方面的要求是最基本的要求,海量数据本身质量很大;健壮性方面:

对于存储海量数据的数据库,并发操作十分常见,而且数目巨大;对于效率的要求:

虽然海量数据的处理难度很大,但是用户对于效率

  方面的要求并没有降低;数据资源的保护方面:

数据资源是企业和单位的宝贵财富,一旦丢失,会造成不可估量的损失。

  2、海量数据的存储策略

  本论文的研究对象就是利用Mysql数据库实现海量数据的分布式存储。

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。

目前MySQL被广泛地应用在Internet上的中小型网站中。

由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

因此,本论文研究运用Mysql实现大数据量的存储。

  存储策略的制定包含了对存储介质、存储设备和存储模式的选择。

当前,海量数据存储设备主要有三大类,它们分别是磁带机、光盘库、磁盘阵列,它们依赖于各自的存储介质,磁带机的介质是磁带,而后两者对应的分别是光盘和硬盘。

此外,固态存储和全息存储虽然暂时未得到广泛应用,但它们代表了未来高速海量数据存储的发展趋势。

  而海量数据的存储模式前面已经提到过,主要有三种,直接连接存储(DAS,DirectAttachedStorage),网络附加存储(NAS,NetworkAttachedStorage)和存储区域网络(SAN,StorageAreaNetwork),其中,后两者可以归入网络存储的范畴。

对于三者的优缺点前面也已经讲过了,其中SAN的优点是安装容易、快速、易于维护、可扩展性好、响应速度快,同时对服务器的成本也降低了,缺点是价格昂贵。

三种存储系统中,磁盘阵列技术都是整个系统的关键与核心。

  3、优化存储策略——数据切分分布式存储

  而针对基于Mysql数据库的大数据量存储,本文主要研究的是分布式存储的解决办法。

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

因此我们选择了开源的免费的Mysql和廉价的Server甚至是PC做集群,达到小型机+大型商业DB的效果,减少大量的资金投入,降低运营成本。

同时,分布式存储也能够加快信息的查询速度。

  那么什么是分布式进行数据存储呢?

分布式存储与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。

分布式数据存储对个人电脑的要求降低了,更加充分的利用了团队中每个人的电脑的空闲存储空间,但是大大加大了数据管理的难度。

分布式数据库实际上它的数据存储方式是物理上是分布的,逻辑上是集中的。

建立各场所的分布式数据库,不需要过分的进行限制,但也必须要有规范的设计要求:

  

(1)硬件规范,必须支持局域网乃至Internet的包括声音,文字,图像的交流,支持IE或Netscape浏览web界面,支持开放性数据源的建立。

  

(2)数据库形式规范,原则上Access、Paradox,甚至文本文件都可以进行数据传输,但必须保证自己有开放式数据源的特征及关系继承的

  特征。

  (3)域的统一和分类、分科的统一,数据库在各个分布场所必须有统一的域结构,以确保给用户提供完整统一的视图,科目分类的命名必须要求规范,以确保查询和统计工作的准确性,在方便工作的条件下,可以不要求唯一确定的主关键字。

  而进行分布式存储首先需要进行的就是数据切分,因此我们需要重点研究的是数据切分。

只有将海量数据进行合理的数据切分才能够更好的实现分布式数据存储,更好的提高数据存储速度。

那么如何才能做到数据切分呢?

  数据切分可以是物理上的,对数据通过一系列的切分规则将数据分布到不同的DB服务器上,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器的负载压力。

  数据切分也可以是数据库内的,对数据通过一系列的切分规则,将数据分布到一个数据库的不同表中,比如将article分为article_001,article_002等子表,若干个子表水平拼合有组成了逻辑上一个完整的article表,这样做的目的其实也是很简单的。

比如article表中现在有5000w条数据,此时我们需要在这个表中增加(insert)一条新的数据,insert完毕后,数据库会针对这张表重新建立索引,5000w行数据建立索引的系统开销还是不容忽视的。

但是反过来,假如我们将这个表分成100个table呢,从article_001一直到article_100,5000w行数据平均下来,每个子表里边就只有50万行数据,这时候我们向一张只有50w行数据的table中insert数据后建立索引的时间就会呈数量级的下降,极大了提高了DB的运行时效率,提高了DB的并发量。

当然分表的好处还不知这些,还有诸如写操作的锁操作等,都会带来很多显然的好处。

  因此,分库降低了单点机器的负载;分表,提高了数据操作的效率,

  尤其是Write操作的效率。

  三、海量数据的查询

  根据数据的存储结构不同,海量数据的查询方法也是多种多样,由于学识所限,只能选择其中以中进行具有代表性的技术分析。

本论文选择的是数据划分优化查询技术,因其效果明显的特点,其也是目前采用最多的一种数据优化方法。

  在海量数据的查询优化研究中,数据划分因为其效果明显,而占据了自己的独特地位。

现如今,世界上主要的数据库管理系统普遍具有数据划分的优化查询技术。

  作为目前运用最广泛的数据库Oracle,其特意针对数据库的数据划分提出了表分区技术。

同时建立的表分区索引技术给数据查询带来了巨大地方便以及查询速率的提高。

  针对数据查询的要求,mysql数据也有一些相应的技术。

而本文研究的是利用之前数据存储中利用数据切分进行数据存储的情况而优化数据查询。

针对之前数据进行数据切分进行分布式存储,加快了数据存储的效率,同时,可以再存储是建立数据索引,利用Mysql数据库本身的优势,利用所建立的数据索引进行大数据量的快速查询和更新便捷。

同时,分布式的存储带来的分布式查询能够带来更快捷、方便的用户感受。

  四、结论

  本论文针对当今海量数据发展的现状进行了讨论,给大家呈现了目前国内外对于海量数据存储技术的研究现状。

同时,也根据我个人的理解浅谈了一下海量数据存储的优化策略,其中重点介绍了利用数据切分进行分布式数据存储对于海量数据存储的优化。

当然本文也就与之相关的海量数据查询进行了简单的介绍。

本文最大的缺点是因为本人学识有限对于数据查询理解不够多,致使文章对于与数据存储相关的数据查询优化介绍不够详细。

还有就是对数据存储优化的技术理解不够深入,不能全面系统的对数据存储优化策略进行详细的讲解。

  参考文献

  海量数据存储与查询策略的优化研究娄希安

  Mysql必知必会BenForta

  Mysql查询优化技术—索引殷丽徐海华吴海涛Mysql海量数据存储和解决方案

  浅谈分布式数据库的数据存储优势和问题赵为民

  篇二:

数据库解决方案对比分析

  数据库解决方案对比分析

  对于互联网应用,随着访问量的增加,当数据库数据量达到GB以上时将不可避免的面临数据库性能瓶颈的问题,因此在数据存储方案的选择上对应用的性能、后期扩展等方面将会有很大的影响,下面我将从几个角度对目前主流的几款商用数据库和Dbshards+MySql进行对比,为您的选择提供参考。

  开放性

  ?

sqlserver:

只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。

windows9x系列产品是偏重于桌面应用,ntserver只适合中小型企业。

而且windows平台的可靠性,安全性和伸缩性是非常有限的。

它不象unix那样久经考验,尤其是在处理大数据量的关键业务时。

  ?

Oracle:

能在所有主流平台上运行(包括windows)。

完全支持所有的工业标准。

采用完

  全开放策略。

可以使客户选择最适合的解决方案。

对开发商全力支持。

?

db2:

能在所有主流平台上运行(包括windows)。

最适于海量数据。

db2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用db2数据库服务器,而国内到97年约占5%.

  ?

Dbshards+MySql:

能在所有主流平台上运行(包括windows)。

完全支持所有的工业标准。

采用完全开放策略。

可以使客户选择最适合的解决方案。

对开发商全力支持。

并行性

  ?

sqlserver:

并行实施和共存模型并不成熟。

很难处理日益增多的用户数和数据卷。

伸缩性有限。

  ?

Oracle:

平行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。

如果windowsnt不能满足需要,用户可以把数据

  库移到unix中。

  ?

db2:

db2具有很好的并行性。

db2把数据库管理扩充到了并行的、多节点的环境.数据

  库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。

数据库分区有时被称为节点或数据库节点。

  ?

Dbshards+MySql:

Dbshards+MySql具有优秀的并行(转载于:

小龙文档网:

mysql,海量数据的存储和访问解决方案)性。

DbShards将数据库拆分为

  独立子节点,多节点通过Dbshards形成一个透明的数据库集群,任何数据操作都可在独立子节点执行也可多节点并行,每个操作在更小的子节点完成,性能更优。

安全性

  ?

  ?

  ?

  ?

sqlserver:

没有获得任何安全证书。

oracle:

获得最高认证级别的iso标准认证。

db2:

获得最高认证级别的iso标准认证。

Dbshards+MySql:

GNU宽通用公共许可证

  性能

  ?

  ?

  ?

  ?

sqlserver:

多用户时性能不佳oracle:

性能最高,保持windowsnt下的tpc-d和tpc-c的世界记录。

db2:

适用于数据仓库和在线事物处理性能较高。

Dbshards+MySql:

脱离数据库自身性能限制,通过Dbshards数据拆分技术提高数据

  I/O性能。

  客户端支持及应用模式

  ?

sqlserver:

c/s结构,只支持windows客户,可以用ado,dao,oledb,odbc连接.

  ?

  ?

db2:

跨平台,多层结构,支持odbc,jdbc等客户Dbshards+MySql:

多层次网络计算,支持多种工业标准,可以用odbc,jdbc,oci等网络客户连接

  操作简便

  ?

  ?

  ?

  ?

sqlserver:

操作简单,但只有图形界面.Oracle:

较复杂,同时提供gui和命令行,在windowsnt和unix下操作相同db2:

操作简单,同时提供gui和命令行,在windowsnt和unix下操作相同Dbshards+MySql:

操作简单,同时提供gui和命令行,在windowsnt和unix下操作相同

  使用风险

  ?

sqlserver:

完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。

并不十分兼容早期产品。

使用需要冒一定风险。

  ?

  ?

  ?

Oracle:

长时间的开发经验,完全向下兼容。

得到广泛的应用。

完全没有风险。

db2:

在巨型企业得到广泛的应用,向下兼容性好。

风险小。

Dbshards+MySql:

长时间的开发经验,完全向下兼容。

得到广泛的应用。

风险小。

可扩展性

  ?

sqlserver:

sqlserver版本杂乱,并且微软公司对其旗下产品的升级、兼容策略存在很大隐患,因此sqlserver扩展性较差。

  ?

Oracle:

Oracle向下兼容,可扩展性强。

  ?

Dbshards+MySql:

Dbshards不是数据库,Dbshards是大数据库拆分工具,当性能出现瓶颈时使用该工具对数据库进行拆分优化从而提升性能,扩展成本低。

成本

  ?

sqlserver

  ?

软件成本:

企业版在30-40万左右;作为一款商用数据库软件,存在很多不同的版本,造成使用者在选择时的困惑,并对后期升级造成困难(不同版本互不兼容);?

实施成本:

只能在windows平台下进行实施,当应用存在异构环境时,其实施难度将大大提升,甚至会造成额外的实施成本(如为了能在异构环境中安装sqlserver,需要购买虚拟机软件来安装windows平台),实施局限且成本高;

  ?

维护成本:

sqlserver作为一款商用软件,其配套的操作工具同样也是商用软件,因此,其产生的并不仅仅是数据库自身的成本,还包括了维护数据库所需的工具软件成本;

  ?

扩展成本:

对于互联网应用,尤其是云平台集成第三方应用,融合多语言环境是必须面对的情况,而sqlserver对于第三方和多语言的集成和兼容都需要大量商用软件的支持,因此在平台扩展时同样会造成成本的蔓延。

  ?

Oracle

  ?

软件成本:

企业版在30-40万左右;

  ?

实施成本:

Oracle

  ?

维护成本:

Oracle是一款庞大而复杂的数据库软件,操作复杂、难度高,其对实施、维护人员的要求非常高,也就造成了实施、维护的人力成本高昂;作为一款商用软件,其配套的操作工具同样也是商用软件,因此,其产生的并不仅仅是数据库自身的成本,还包括了维护数据库所需的工具软件成本;并且维护人员成本高;

  ?

扩展成本:

Oracle按CPU个数进行收费;当性能出现瓶颈需要版本升级或更换、

  增加硬件时就必须根据CPU数量购买Oracle授权(企业版一颗CPU授权价格在30-40万左右,最普通的一台服务器CPU数量在两颗以上,也就是说每增加一台服务器Oracle成本将至少增加60万以上),成本将成倍增长。

  ?

db2

  ?

软件成本:

企业版在60-70万左右;

  ?

实施成本:

db2是IBM一款常用于企业应用的数据仓库软件,操作复杂、难度高,

  其对实施、维护人员的要求非常高,也就造成了实施、维护的人力成本高昂;?

维护成本:

db2作为一款商用软件,其配套的操作工具同样也是商用软件,因此,

  其产生的并不仅仅是数据库自身的成本,还包括了维护数据库所需的工具软件成本;并且维护人员成本高;

  ?

扩展成本:

IBM在设计db2时专门为其配套一款商用工具PB,因此其在扩展时需要

  特定专业人才方可实施,有一定局限(中国PB程序员属于小众群体,比较少),扩展成本较高。

  ?

Dbshards+MySql

  ?

软件成本:

一套40万;

  ?

实施成本:

dbShards

  更低;是一个数据库拆分工具,具有数据库无关性,因此实施成本

  ?

维护成本:

作为一款工具具有友好的操作、管理界面,同时安久具有专业的售后服

  务团队,维护成本更可控;

  ?

扩展成本:

作为一款工具软件,其主要作用是拆分数据库,提高数据访问性能,并

  不会随着数据库的增加而增加,这样从整体上降低了扩展的成本。

  兼容性

  ?

sqlserver:

面对复杂应用,需要多数据库集成时,集成能力弱。

  篇三:

MySQL数据库各种存储引擎及其作用简介

  MySQL数据库各种存储引擎及其作用简介

  本文我们主要介绍一下MySQL数据库的存储引擎,MySQL有多种存储引擎:

MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

  MySQL支持数个存储引擎作为对不同表的类型的处理器。

MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:

  MyISAM管理非事务表。

它提供高速存储和检索,以及全文搜索能力。

MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。

  MEMORY存储引擎提供“内存中”表。

MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。

就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。

  注释:

MEMORY存储引擎正式地被确定为HEAP引擎。

  InnoDB和BDB存储引擎提供事务安全表。

BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。

InnoDB也默认被包括在所有MySQL二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。

  EXAMPLE存储引擎是一个“存根”引擎,它不做什么。

你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。

这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。

同样,它的主要兴趣是对开发者。

  NDBCluster是被MySQLCluster用来实现分割到多台计算机上的表的存储引擎。

它在MySQL-Max二进制分发版里提供。

这个存储引擎当前只被Linux,Solaris,和MacOSX支持。

在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。

ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。

  CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。

  BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。

  FEDERATED存储引擎把数据存在远程数据库中。

在MySQL中,它只和MySQL一起工作,使用MySQLCClientAPI。

在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。

  当你创建一个新表的时候,你可以通过添加一个ENGINE或TYPE选项到CREATETABLE语句来告诉MySQL你要创建什么类型的表:

  ?

  ?

  ?

CREATETABLEt(iINT)ENGINE=INNODB;CREATETABLEt(iI

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1