收藏 分享(赏)

MyHBase一种基于Hbase的NewSQL数据库的设计与实现.pdf

上传人:精品资料 文档编号:11099821 上传时间:2020-02-07 格式:PDF 页数:73 大小:4.50MB
下载 相关 举报
MyHBase一种基于Hbase的NewSQL数据库的设计与实现.pdf_第1页
第1页 / 共73页
MyHBase一种基于Hbase的NewSQL数据库的设计与实现.pdf_第2页
第2页 / 共73页
MyHBase一种基于Hbase的NewSQL数据库的设计与实现.pdf_第3页
第3页 / 共73页
MyHBase一种基于Hbase的NewSQL数据库的设计与实现.pdf_第4页
第4页 / 共73页
MyHBase一种基于Hbase的NewSQL数据库的设计与实现.pdf_第5页
第5页 / 共73页
点击查看更多>>
资源描述

1、浙江大学硕士学位论文MyHBase:一种基于Hbase的NewSQL数据库的设计与实现姓名:余峰申请学位级别:硕士专业:计算机软件及理论指导教师:陈平20120309浙江大学硕士学位论文IIII I I I rl l rl l III II I IIlY204872 1摘要摘要随着社交网络和移动通信的迅猛发展,传统数据库系统由于在可用性和可扩展性等方面的限制很难满足海量数据存储和检索的性能要求,而NoSQL数据库由于不支持SQL,会对用户产生一定的学习和应用迁移成本。NewSQL数据库既保留了传统数据库独有的特性,同时还具备NoSQL数据库的高扩展性和高性能,是一种新的数据库架构。本文设计实现

2、的MyHBase是一种新的MySQL数据库存储引擎,其融合了MySQL和HBase的基本特性,使其支持结构化的抽象数据结构和SQL查询等,同时具备了可扩展性、高有效性和高性能。本文针对HBase存储的2个特点,即面向列和写缓存可配置,提出分列族存储的方法,通过规格化字段格式并把同一行数据进行分解存储的办法进行保存数据,与此同时合理配置写缓存提升写性能。然后结合其读取数据和MySQL存储引擎接口规范,提出采用“Using wherewith pushed condition”的查询执行方法,即在查询优化器进行选取,投影之前,预先将过滤限制条件推入存储引擎实例的条件堆栈,随后读取数据,最后在返回到

3、MySQL时把数据进行合并填充,经过这种转换后,MyHBase只需读取目标数据,保证了其数据的准确性和高效性,并具备了可扩展性。本文具体实现了MySQL的表管理,数据存储和检索,索引及批量插入等功能,并且讨论了Schema的创建规则。最后将系统与传统存储引擎InnoDB和MylSAM进行性能对比。通过实验数据得出,该数据库支持SQL语句,并提供良好的性能及可扩展性。关键词:NewSQL,HBase,MySQL,存储引擎浙江大学硕士学位论文 AbstractAbstractAs social networking and mobile communications in the rapid de

4、velopment,thetraditional database system in the usability and expansibility,and the limit of otheraspects is hard to meet the mass data storage and retrieval performance requirements,and because NoSQL does not support SQL,users will have a certain amount oflearning cost and application transfer cost

5、NewSQL that keeps traditional databaseunique characteristic,but also has high scalability and hi曲performance ofNoSQL,is anew database frameworkThe MyHBase database designed and implemented in this paper is a new kind ofMySQL database storage engine,combines the basic features of MySQL and HBase,make

6、 itself support structured abstract data structure and SQL query etc,along with thescalability,hi曲efficiency and high performanceIn缸S paper,aiming at two HBasestorage characteristics,that is,columnoriented and write cache configurable,wepropose a sub-column family technique,which through reasonable

7、field format anddivide the same row data to save,at the same time reasonable allocate the write bufferto improve write performanceAnd then,combining the flow of reading data and theMySQL storage engine interface specification,we proposed“Using where with pushedcondition”query execution,that is befor

8、e the query optimizer selects and projects,push per-filtering constraints into the stack of conditions of the storage engine instance,and then read the data,and finally merge and fill data when returning to MySQL,afterthis conversion,the MyHBase read only the target data,ensure the accuracy andeffic

9、iency,and have the scalabihtyThis paper realizes the MySQL table management,data storage and retrieval,the index and batch insert etc,and discusses the rule ofschema creationAt last,we compare this system with the traditional storage engineInnoDB and MylSAM on performanceThrough the experimental dat

10、a,this databasesupports SQL statements,and provides good performance and expansibilityKeywords:NewSQL,HBase,MySQL,storage engine浙江大学硕士学位论文 图目录图目录图11NoSQL和NewSQL产品的划分图2图21MyHBase数据模型9图22MyHBase存储引擎架构10图23MySQL服务器的体系结构13图24HBase系统整体架构20图25HFile文件格式21图31st table的主要数据结构25图32Field类的主要数据结构25图33写操作主要伪代码26图

11、34客户端操作实例会根据RegionServer排序和分组28图35MyHBase查询处理流程30图36sub select函数31图37压入流程及读取代码32图38合并结果集33图41“-ROOT-”、“META”及用户表的关系39图42update row伪代码41图43Schema示例45图44更改之后的Schema45图45HBase查询粒度46图51MySQL安装的存储引擎51图52MySQL显示的专利表结构51图53HBase显示的专利表结构52图54写操作主要流程54图55插入测试结果55IV浙江大学硕士学位论文 表目录表目录表21HBase数据概念模型示例17表22HBase数

12、据存储模型示例18表41 MyHBase实现的handler类方法37表51大数据插入测试结果55表52刷新机制插入测试结果55表53查询测试结果57表54更新测试结果58表55集群环境下MyHBase测试结果59V浙江大学硕士学位论文 第1章绪论第1章绪论11研究背景111研究背景随着互联网的迅速发展,来自互联网的数据正在以T级指数急剧增长。特别是近年来web20等新技术的发展,SNS社区,微博等应用逐渐引领着web领域的潮流,网络用户数量日益增多。面对规模越来越大的用户访问,优化数据库架构性能,提高数据库大规模并发处理能力、高度可用性和可扩展性是所有大型网站都必须面对的挑战。在20世纪70

13、年代设计的传统关系数据库因为其自身的缺陷【l】逐渐成为整个系统的瓶颈。因为当时设计人员所面对的数据规模经过几十年的发展后已经有了几个数量级的变化。而近几年流行的NoSQL2】数据库由于其易扩展、支持大数据、高性能、高可用性、灵活的数据模型等特征,弥补了传统关系数据库的不足而被人们广泛认可,但是其不提供对SQL的支持,如果不支持SQL这样的工业标准,将会对用户产生一定的学习和应用迁移成本,而且NoSQL目前支持的特性不够丰富,产品不够成熟。互联网服务日新月异,一方面需要快速开发的能力,把策划草案快速实现,以便能够马上投入市场获得用户的支持;另一方面为了适应激增的网络用户和数据,需要保证高可用性和

14、可扩展性,以便提高用户满意度留住用户。针对这样的问题,一般来说有两种方案,可以把关系模型的优点融合进分布式架构,或者极大的提高传统数据库性能使得不必要对其进行水平扩展。NewSQL数据库正是在这样的需求下产生的。2011年9月,451团队发布了一篇报告详细介绍了当前几种流行的数据库技术,包括NoSQL,NewSQL。该报告详细调查了数据库发展的新方向:为了满足海量数据处理的性能、扩展性和灵活性,正是这些需求导致了NewSQL数据库技术的发展和采用。文中指出,NewSQL数据库设计是为了满足分布式架构的可扩展性需求,或者提高性能使得不必进行水平扩展的一种技术,其包含的技术有新型MySQL存储引擎

15、、透明的浙江大学硕士学位论文 第1章绪论分片技术及全新概念上的数据库。由此可知NewSQL数据库并不特指某一类数据库,任何在传统关系数据库上进行发展以满足上述2种需求的数据库都可以看做是NewSQL。图11是NoSQL,NewSQL及其他数据库产品的划分图。图11NoSQL和NewSQL产品的划分图除了传统关系数据库之外,主要分为NoSQL,NewSQL和Data GridCache三种数据库技术,这三种技术都满足了大容量,高分布式或者高复杂性的应用的需求。扩展性,性能,松散一致性,敏捷,复杂性和必要性这6大关键点驱动它们不断完善自身技术。虽然目前数据库市场依然被传统数据库占据大部分市场,但是

16、它们不能很好的解决目前分布式和松散结构的数据管理要求,越来越多的人选择NewSQL。112 NewSQL国内外研究情况NewSQL发展十分迅速,目前大概有十多种NewSQL产品,有些是商业产品,2浙江大学硕士学位论文 第l章绪论有些目前还处于开发阶段。经过仔细研究,根据实现机制可以分为2类,第一类是开发新型关系数据库产品和服务,把关系模型的优点融入分布式架构,第二类是通过其他技术提高关系数据库的性能使其不必进行水平扩展。根据实现技术大概分为以下几类:开发高性能和可扩展性的MySQL存储引擎。主要代表有GenieDB,它是由GenieDB Inc开发的商业MysQL存储引擎。GenieDB提供2

17、种级别的功能。低级的GenieDB数据存储采用一种支持跨节点立即一致性的分布式数据库技术。其复制技术能够通过一种可靠的广播协议变的更有效率。其数据存储读取方式类似于大多数key-value系统的“NoSQLAPI”,在数据存储上提供关系式存取。 对MySQL进行重构。主要有Drizzlea、HaIldlersocket【3】、Scalarc3。Drizzle是一个精简版的MySQL分支,在目前的MySQL代码基本之上,将存储过程、视图、触发器、查询缓存、PREPARE语句等没必要的功能从代码中删掉,简化对数据类型和存储引擎的支持并且进行大胆的重构。最终要实现的目的是将MySQL的代码大大简化,

18、理顺MySQL的架构,改善MySQL的代码质量,提高系统的稳定性和性能,将更适合Web应用、云计算组件、没有业务逻辑的数据库(又名存储过程)、多核架构等业务。Handlcrsockct通过插件的方式赋予MySQL完整的NoSQL功能,从原理上讲,它跳过MySQL中最耗时的语法解析,查询计划等步骤,直接读取数据,如果内存够大,能装下所有索引,便能极大提高MySQL查询效率!Handlcrsockct支持大量的查询模式,可以处理大量并发连接,拥有极好的性能,相比于其他NoSQL数据库性能毫不逊色,没有重复的缓存并且独立于存储引擎。Handlersocket不仅消除了SQL相关的函数调用,也优化了网

19、络并发相关的问题,具有更小的网络数据包,运行有限的MySQL内部线程。Scalarc提供一个数据库查询缓存层以提高MySQL的性能。1http:wwwgeniedbtom:http:wwwdrizzleorghttp:scalarccorn浙江大学硕士学位论文 第1章绪论除此之外,Scalarc提供集群服务,透明的SQL缓存及实时的SQL分析。数据存储在内存。VoltDB是采用无共享架构的内存数据库。不同于NoSQL的key-value储存,VoltDB能使用SQL存取,支持传统数据库的ACID模型。VoltDB实现了水平切分技术以提供高可用性,以及持续的快照和命令日志记录用于持久性和灾难恢复

20、。采用新型的数据结构模型。Akiban4采用TableGrouping技术,把几个相互关联的表聚集在一起,从而消除join操作的开销,并在单个节点上带来10。100倍的性能提升。 数据库集群技术。主要代表是MySQL Cluster with NDB41。MySQL Cluster是MySQL适合于分布式计算环境的高可用、高冗余版本。它采用了NDBcluster存储引擎,这种引擎把数据存储在内存中,具有可用性高和数据一致性好的特性。提供透明的数据分片管理。主要代表是CodeFuturess,它是一种基于数据分片技术的无共享可扩展性方案。与传统的数据仓库应用不同的是,CodeFutures采用的

21、dbShards技术,利用廉价的商用硬件就极大的提升了反应时间和OLTP数据库、软件服务及其他存在并发用户的系统的可扩展性。在云计算平台上提供数据服务。主要代表是Amazon Simple StorageService5】(Amazon S3),它是第一个利用Amazon提供的计算服务用于给用户带来高可用性和可扩展性的存储。Amazon s3是面向互联网的存储,使得开发者创建web规模计算更加简单。Amazon S3提供一个简单的web服务接口,这个接口可以用来在互联网上,在任何时候,从任何地点存储和检索任何数据,它给予所有开发者相同的大规模,可靠的,安全的,快速的,廉价的设施。Amazon正

22、在使用这个设施运行他自身的全部网站。把事务,SQL查询等关系数据库优势加进NoSQL数据库中。主要有Google4http:wwwakibancorn5http:wwwcodefutureseom4渐江大掌坝士学位论又 第1蕈绪论的Megastore61,其依赖于底层GFS7】和Bigtable8】提供的无与伦比的可扩展性,Megastore在上层不断完善功能,兼具了关系数据库和NoSQL系统的优点。在这些数据库中,GenieDB,Scalarc,VoltDB,CodeFutures,MySQL Clusterwith NDB都属于第一种,HandlcrSockct属于第二种。很明显,一些数据

23、库与NoSQL存在重叠情况,如Amazon Simple Storage Service和Megastore。通过上述分析,改进MySQL数据库以提升其性能,扩展性及容错性是创建NewSQL数据库的一个可行思路,如GenieDB,Drizzle,MySQL Cluster等数据库都是基于这种思想的。而且目前很多应用都仍然采用MySQL,通过改进MySQL可以节省一定的学习和应用迁移成本,其丰富的查询特性适合快速开发。12本文的研究工作为了解决MySQL数据库的扩展性及可用性等问题,在现有的解决方案中,可以对数据进行切分。利用切分的办法可以一定程度上解决数据库的瓶颈,但是却带来了分布式事务、跨节

24、点数据联结及应用逻辑愈发复杂等问题。GenieDB数据库因为商业原因并没有被广泛使用,Drizzle、Handlersocket等技术只是精简了MySQL的一些不必要的功能,简化其代码,并没有改进MySQL的扩展性问题,而MySQL cluster把数据存放在内存中,当数据量较大时成本比较昂贵,其可用性也难以保证。因此需要创建一个分布式数据库以解决扩展性等问题,然而一个可靠健壮完善高效的分布式系统并不是能简单实现的,因此目前最适合的方式是整合现有的分布式框架,尽可能地利用已有的资源去实现一个分布式数据库。大家知道HBase9是一种面向列的NoSQL数据库,是Google Bigtable8】的

25、开源版本,使用分布式文件系统HDFS作为底层的存储介质,具有其高可用性和可扩展性等特点。所以本文在结合MySQL和HBase上做了一次尝试,希望能有效地利用前者的SQL特性,使用户节省了学习和应用迁移成本;同时还能利用后者高性能、高扩展性、高可用性等特性。而本文的主要工作如下:1)开发了一套MySQL存储引擎,本文称之为“MyHBase”,使用分布式文S浙江大学硕士学位论文 第1章绪论件系统HDFS作为底层的存储介质,采用nlri伴进行两者的相互通信,主要实现了数据库系统最基本的CURD,操作,及索引和批量操作等MySQL高级特性。2)在详细分析HBase存储特性的基础上,提出了MyHBase

26、的总体设计,数据模型,并应用3种确实可行的建表规则优化查询及1种主键设计方式,以获得更佳的查询效率。3)详细阐述了其读写操作和表结构更改的设计思路和具体实现。针对MySQL存储引擎接口和HBase的存储特点,本文提出通过规格化字段的方法,分析各字段所在的列族,然后分别进行存储。同时采用了“Usingwhere with pushed condition”的查询执行方法,以提高读性能。13本文组织结构本文共分为六章,具体内容按如下方式进行组织:第一章绪论,对论文内容做了整体性的介绍,包括课题背景和意义、研究现状和研究目标。第二章整体设计,主要描述了MyHBase的整体设计,并对本文需要用到相关的

27、MySQL和HBase知识做了准备性的介绍,包括:MySQL架构体系,MySQL几种常用的存储引擎,HBase数据库的数据模型,体系架构。第三章详细分析了MyHBase三个关键点:写数据、读数据、更改表结构。阐述了其设计背景,设计思路及具体实现。第四章MyHBase的具体实现及Schema设计,在前2章基础上对各组成部分进行详细设计和实现,主要包括表管理,数据检索,索引,批量处理等实现。并对MyHBase的Schema设计进行了理论上的分析。第五章测试分析。对设计的数据库进行实验环境构建与测试,并结合测试结果进行对比分析。第六章对全文进行总结和展望。:http:thriftapacheorg7

28、 http:baikebaidueomviewl 632686htra6浙江大学硕士学位论文 第2章MyHBase的设计第2章MyHBase的设计21整体设计211设计目标首先明确本文提出的MyI-IBase存储引擎系统的设计目标,对于当前的系统来说,主要的设计目标包括:1)能够支持MySQL数据库的基本功能,包括表管理操作,数据的存储、更新和删除操作,基于索引的查询,批处理及对表结构更改等操作。2)支持可扩展性。原型系统需要保证存储查询功能的可伸缩性,系统能够通过对设备进行横向扩展以应对数据不断增长的挑战。212设计思路本文主要实现的是一个MySQL存储引擎,为了实现自定义的MySQL存储引

29、擎,必须实现2个关键结构:handler类和handlerton结构。可以分为几个阶段,前几个阶段是创建和添加基本的数据读写机制,后几个阶段是添加索引和事务支持。下面对各个阶段的基本描述。1)生成引擎的方法存根。整个过程的第一步是创建一个可以被插入服务器的基本的存储引擎。2)实现表管理操作,包括创建、打开、关闭和删除文件。3)实现数据读写操作。在这一步完成了最基本的存储引擎。在这个阶段需要添加能够从HBase中读取数据,并把它们转换为MySQL内部数据格式的方法。类似地,还要添加一些功能能够把MySQL内部数据格式转换为特定格式并写入存储介质。4)实现数据的更新和删除操作。在MyHBase的删

30、除操作并不是直接删除,而是对删除数据做删除标记。5)添加索引功能。一个好的存储引擎,还应该具备迅速完成随机读写操作7浙江大学硕士学位论文 第2章MyHBase的设计和区间查询操作的能力。由于采用HBase作为底层存储,对于底层文件数据组织等方面可以不考虑,主要需要考虑的是如何把关系数据库中的数据通过HBase API进行存储,并且能发挥最大功效。本文对MyHBase的字段名称做了特殊定义,使得通过字段名称便能够迅速得到其列族名。另外改进查询执行流程,预先把筛选条件压入存储引擎,读取数据。通过这样的处理,一方面可以减少网络上需要传输的数据量,另一方面能够得到更好的扩展性。这是本文的主要2个设计思

31、想。213数据模型设计MyHBase的数据模型介于关系数据库MySQL和面向列的HBase数据库之间。从MySQL角度,数据模型中的数据都是有类型的,存储引擎需要在与HBase交互的时候进行数据类型的相互转化。每个数据库有一组表,每个表包含一组实体,每个实体都有一组属性。每个实体都有一个属性作为主键,主键在表内具有唯一性。从HBase角度,MySQL数据库中的每一行分拆成很多列族分开存储,数据都是无类型的,每个单元的数据都有row key、所属列族及限定符、时间戳,但是只有一个版本,即在row key和值相同的情况下,时间戳是唯一的。如图21所示。8浙江大学硕士学位论文 第2章MyHBase的

32、设计图21MyHBase数据模型21 3 1一对多映射在关系数据库中,外键被放置在一对多关系中“多“的那端,因为范式一规定关系数据库不允许有多个值。这种外键索引,可以快速的找到外键指向某个主键的所有行,然后得到join操作前需要得到的嵌套集【lo】。但是在HBase,通过相同的列族名和不同的列名,多个值可以集中在一个列族内。在这种情况下,已知某个主键就可以得到它所拥有的嵌套集。因此在MyHBase中,可以很自然地支持一对多关系。可以把“多的那端的数据模型直接并入“一”端,或者“一”端持有“多”端的主键或者其他属性。2132索引在HBase中所有行都是按照TOW key的字典序排序的,10W k

33、ey有序存储,根据row key进行检索是最有效率的。由于目前HBase没有对二级索引内置支持,一般需求中除了利用row key进行检索之外,还有通过列族名和限定名,通过这种方法进行检索时,效率要远低于前者,所以建立二级索引有时候是必不可少的。目前有几种方法可以实现:由客户端控制,IndexedTransactional HBase,Indexed9浙江大学硕士学位论文 第2章MyHBase的设计HBaseIn。214架构设计MyHBase存储引擎的应用框架如图22所示,最上层是应用层可以通过各种方式读取数据。中间一层是SQL层,处理SQL语句的解析,根据解析结果生成执行计划,随后按照执行计划

34、顺序执行SQL,把正确结果根据需求进行合并、排序、投影等操作,并返回给用户正确结果。最下层是分布式存储层,一般由一个Master服务器和多个RegionServer构成。应用层应用程序 渗 应用碍序 碡 应用程序 壤 应皂程序 艇防瓢k辽亭毖t一滋隧潞溉斌添鼍:蠢缴魄燃心;镬瓢麓哆多烈越鬈豇t麓毒池姜)一 SQL)罢 N| MySQL服务器 MySQL匣务器: MySQLJ展务器N L1存储越L1黼I蕙口一1男叫一一77,彳亨丘盘曰 伊 hn一 q 删 一Thrift i1。r IF日,Z: 1啦1 l AvroHBase Master 黪 RegionH艮务器摩 Re西on服务器B:黪孽殛瑟

35、。基F70:激。盎戮二k悠葱镰:ok基。麓鎏黏z蕊溅菇鱼葛茹“叠图22MyHBase存储引擎架构可见系统提供了一个抽象的SQL层,实际上这个数据库可以分布在很多不同的结点上。MySQL服务器负责处理SQL连接,解析SQL语句,通过存储引擎接口与底层存储相交互,最后把数据存储在HDFS上。本文主要的工作即在实现存储引擎接口上,使MySQL和HBase能有效地在一起工作,发挥各自的优势。每台机器上都可以安装MySQL服务器,HBase服务端及客户端。MySQL服务器通10浙江大学硕士学位论文 第2章MyHBase的设计过存储引擎接口连接HBase的mft客户端,与之进行通信。因为数据存储在集群上,

36、每次数据读取或更新都可能涉及到网络操作,网络连接速度显得相当重要。可以添加备用的Master主机以避免单点故障。当zookeeper连接不上Master主机时,会调用一定的算法产生新的Master。随着负载的增加,可以动态添加MySQL服务器和RegionServer以满足业务需求。在应用层,不同的应用程序可以根据需要采取不同的方式读取数据,可以根据MySQL的接口读取数据也可以直接通过HBase客户端REST和Avro11】等读取数据,甚至可以直接通过MapReduce写入或读取数据【12】。MyHBase存储引擎有效地把MySQL服务器转换成为SQL语句解析的中间件,使得具有一个常用的、丰

37、富简单的查询方式。在有效地利用HBase进行存储数据后,使得目前的应用程序不需要太大的改变就可以得到横向扩展能力和高度可用性,仅需要利用某种连接池技术把连接分布到各个可用的MySQL服务器上。22 SQL层介绍本文的SQL层主要是在MySQL上,在这一节将仔细分析MySQL数据库的相关知识。1970年EECodd在美国计算机学会会刊(Communications ofthe ACM)上发表的题为“A Relation Model ofDam for Shared Data Banks13】的论文,开创了数据库系统的新纪元。上个世纪,关系数据库系统的研究和开发取得了辉煌的成就。关系数据库系统从实

38、验室走向了社会,成为最重要、应用最广泛的数据库系统,大大促进了数据库应用领域的扩大和深入。那时,其典型的架构依然聚焦在单机上,如果需要更高的事务吞吐量往往需要更加昂贵的硬件设备。最近几年,共享磁盘架构和不共享架构【14】越来越流行。对于许多需要处理海量数据的互联网应用,经常需要处理松散结构的数据,通常采用的是多机复制架构。在现实的应用场景中,MySQL Replication是使用最为广泛的一种设计手段”】。众多的MySQL使用者通过Replication功能提升系统的扩展性之后,通过简单的增加价格低廉的硬件设备成倍甚至成数量级的提高了原有系统的性能。浙江大学硕士学位论文 第2章MyHBase

39、的设计221 MySQL架构MySQL是一款非常受欢迎的开源关系数据库,被广泛地应用在基于互联网的应用中,Facebook就是其众多用户之一。MySQL的体系结构是一个由多个子系统构成的层次化系统。图23给出了MySQL的体系结构和它的各子系统。其子系统主要有SQL接口,查询解析器,查询优化器和查询执行引擎,缓存缓冲机制以及一个插件式存储引擎。在图的顶部是一些用来与客户端应用程序建立连接的数据库接口。正如大家看到的那样,MySQL为任何一种编程环境都提供有相应的数据库接口。在图的左边,按系统管理和服务控制分类列出了许多辅助工具【l 61。从数据库接口往下一级是连接池层,该层负责处理与用户访问有

40、关的各种用户登录、线程处理、内存和进程缓存需求。连接池的下一层是MySQL数据库系统的核心,这里是对查询进行分析和优化的地方,也是对文件访问进行管理的地方。再往下是插件式存储引擎。插件式存储引擎的下面是MySQL系统的最底层,即文件访问层。12浙江大学硕士学位论文 第2章MyHBase的设计ConnectorsNative C API,JDBC,NET,PHP,Perl,PythonRuby ; ;MySQL ServerConnection PoolManagementServices&Utilities SQLParser Optimizer Caches&Interface Buf-fe

41、rsPluggable Storage Engines姐sA雩0姐。0rch;Ve)ederate(Mem。0File system Files&Logs图23MySQL服务器的体系结构22 1 1 SQL接口SQL接口提供了从用户接受命令并把结果返回给用户的机制。MySQL的SQL接口是按ANSI SQL标准建立的,与ANSI标准兼容的其他数据库服务器所支持的基本SQL语句都可以在这里使用。2212解析器当收到客户端发出的查询并为之创建一个新线程之后,SQL语句将被传递到解析器接受语法验证(或因错误而被拒绝)。MySQL的解析器是用一个很长的LexYACC脚本【161实现的,用Bisons对

42、该脚本进行编译就得到了这个解析器。解析器将构造一个用来在内存中代表查询语言的查询结构,这个树状结构可以用来执行查询。8 http:enwikipediaorgwikiGNU_bison13浙江大学硕士学位论文 第2章MyHBase的设计22 1 3查询优化器这个优化器使用了一种“选取,投影联结”策略来处理查询,即先根据有关的限制条件进行选取以减少将要处理的元组个数,再进行投影以减少将被选取元组里的属性(字段)的个数,最后根据联结条件生成最终的查询结果。2214插件式存储引擎插件式存储引擎层是MySQL的体系结构与众不同的部分之一,它使得MySQL系统可以灵活地适应各种数据库和文件的存储和检索机

43、制。这种灵活性是MySQL独有的。支持多种存储引擎,或者说支持多种文件类型的能力是MySQL的最佳功能之一。这使得数据库专家可以根据具体应用程序的需要为他们的数据库选择和设计一种性能最佳的存储引擎。MySQLAB公司在第5版里增加了一项新的体系结构设计,这项设计使得增加新存储类型的工作变得更容易了。这个机制叫做MySQL插件式存储引擎。插件式存储引擎的核心是文件访问层的一个抽象接口,任何人都可以利用这个API接口去建立新的方法和访问工具。这些方法共同构成了一个标准化的模块化体系结构,不同的存储引擎可以调用同样地方法去访问数据库的数据。插件式存储引擎在MySQL服务器的体系结构里是一个软件层,它

44、负责隔离MySQL服务器的物理数据层和逻辑层,并为服务器提供底层的输入输出操作。在一个有着层次化体系结构的系统里,各层次之间是通过一系列分工细致的标准化接口连接成一个整体的,那些接口的质量好坏直接决定着这个层次化体系结构的命运。层次化体系结构的最大优点是:只要接口不发生变化,对任何一个层次的修改都不会影响到与之相邻的其他层次。为了实现自定义的MySQL存储引擎,必须实现2个关键结构:handler类和handlerton结构。Handlerton结构体定义了存储引擎和函数指针,handler类定义了存储引擎提供的接口和功能。因为所有存储引擎从基类handler继承,所以它们能够提供同样的功能。

45、它们在整个体系结构中扮演了中间层的角色。自定义的存储引擎只有满足了handler的要求后,才能顺利插入到运行的MySQL服务器中。所有网络连接、安全认证、解析和优化仍然由MySQL服务器本身完成,与存储14浙江大学硕士学位论文 第2章MyHBase的设计引擎无关。当客户端通过SQL语句引用一个表时会创建handler实例。MySQL因为性能原因在其内部管理这类对象,这些对象可以从一个线程传递到另一个线程。MySQL服务器体系结构提供了一致和易于使用的API,这类API适用于多种存储引擎,通过该方法,MySQL体系结构将应用程序与存储引擎的底层复杂性隔离开来。2215 handlerton结构H

46、andlerton结构为所有存储引擎提供标准的接口。为了提供把存储引擎插入服务器和存储引擎完成其工作所需要的各种接口和功能,handlerton类还是用了许多其他的结构。Handlerton结构是一个包含着许多数据项和方法的大型结构。在这个结构里定义的方法是用函数指针实现的。函数指针是功能最强大的结构化程序设计技术之一,它可以让程序员实现运行时多态,从而使函数指针可以让系统去执行另一个函数。创建一个新的存储引擎需要实例新的handlerton结构。2216 handler类Handler类对存储引擎的接口部分作出了定义,提供了一整套通过handlerton接口与服务器打交道的接口方法。Handler类包含许多方法,它们可以用来完成各种各样的操作(如创建表、删除表、改变表的结构等),还有一些方法是用来对字段和索引进行处理的,甚至还有用于崩溃保护、恢复和备份的方法。222常用存储引擎MySQL提供多种存储引擎,且各不相同。下面介绍几种常见的存储引擎。2221 MylSAMMylSAM存储引擎是MySQL的默认文件访问机制,读性能很好,但是缺少事务支持,并发写能力有限。MylSAM存储引擎为并发操作准备了表级的锁定机制。MylSAM支持三种键类型:常规B树、纯文本(使用B树),以及空间型(使用R树)。在强调数据检索速度的应用场合,My

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报