YCSB小结素材.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
YCSB小结技术报告:中国科学院计算技术研究所先进计算机系统实验室存储系统组马文龙2015.02.12摘要YCSB介绍常用“云”系统中被许多人称为“键值存储”或“NoSQL系统”,他们共同的目标是大规模扩展的“按需”弹性的简化应用开发和部署。随着NoSQL技术的不断发展和成熟,出现了多种数据模型以及基于该模型的数据库系统,如面向列簇模型的BigTable等;基于简单哈希模型的Redis等;基于文档模型的CouchDB等;还有基于图、面向对象的数据库系统。然而,数据模型可以定性的比较记录,但定量比较各系统的性能却是一个难题。有些系统使用磁盘的结构优化写入,这个可以保持I / O的序序列化;而另一些系统使用传统的缓冲池架构优化随机读取。旨在降低或减少影响系统整体性能的因素。此外,有关数据分区和布局、复制、事务的一致性、并发控制机制等都很大程度上影响系统性能。面对众多、复杂的系统,对其性能的统一测试平台显得尤为重要。YCSB的全称是Yahoo! Cloud Serving Benchmark,是Yahoo公司的一个用来对云服务进行基础测试的工具。目标是促进新一代云数据服务系统的性能比较。论文发表在SoCC’10,代码开源。有很多出色的工作(包括SILT@SOSP’11,HyperDex@SIGCOM’12)使用YCSB进行测试。随着cloud serving的流行,传统数据库不能满足Avalability、Scalabilty等要求,简化了功能(表连接等)、一致性(事务处理)的NoSQL数据库开始流行。这类数据库数量很多,各有tradeoff(read and write,latency and durability,sync and async等),开发人员和用户很难根据应用的特点选择合适的解决方案。YCSB的目的是提供一个公平的舞台。YCSB运行机制YCSB模块框架雅虎云计算服务基准工具包括了两个重要的组成部分:一个工作负载生成器和一组生成器生成的工作负载,以及针对大量 NoSQL 数据库的接口,其中包括:PNUTSBigTableHBaseHypertableAzureCassandraCouchDBVoldemortMongoDbInfinispanDynomiteRedisGemFireGigaSpaces XAPDynamoDB除此之外,它还配有一个用于关系型数据库的JDBC接口。用户可以用任意负载测试任意数据库。YCSB有很好的扩展性,只要按要求实现DB抽象类,就可以添加新的数据库支持。YCSB的模块架构如下图:图1 YCSB架构上图是YCSB的结构,可以看成是一个数据库客户端。暗色的模块是可以替换的,Workload Executor是产生应用负载的,DB Interface Layer是将特定数据库的API转为YCSB的API,用户可以自定义负载和数据库。目前YCSB自带了6种负载(workloads/目录下),其中五种如下表:图2YCSB提供的五种负载用户可以自定义操作(read、update、insert和scan)的比例,以及选择操作目标记录的分布:Uniform(等概率随机选择记录)、Zipfian(随机选择记录,存在热纪录)和Latest(近期写入的记录是热记录)。这两个模块中的DB Interface Layer即数据库接口层,是新增测试数据库的核心,它要求如果用户新增数据库则必须新增相应数据库的YCSB API,将数据库API转化为YCSB API。也就是说,如果被测数据库系统是用c开发的,则要求用JAVA重写其接口。由于数据库接口会调用到涉及DB的众多类和其内部控制机制,所以新增一个数据库接口的难度在于重写DB Class。YCSB内部机制从以上的架构可以理解YCSB的基本机制,如下图:图3YCSB架构与机制YCSB给用户提供可伸缩的负载配置和DB 驱动,若要新增测试数据库,核心是增加DB Client,称作数据库驱动或插件。由于YCSB 是JAVA开发,所以其他数据库系统的API一律转化为JAVA API,实现数据库固有的API功能,包括增删改查等。其内部的运行机制对用户隐藏,包括命令行工具、数据测试工具、处理DB API请求模块、处理输入输出流模块、处理负载线程模块等。其源码框架如下:图4YCSB Core源码架构对开发用户来说,重点是数据库接口驱动,因为驱动的开发不只是简单地接口,因为接口涉及到数据库的众多实现类,包括很多实体类、函数类、数据表功能的控制类等。下面以Redis DB的Interface Client为例,简单说明其实现原理。DB Interface Layer机制——以Redis DB为例Redis Client的源码框架如下:图5 Redis Client源码架构YCSB

您可能关注的文档

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档