1、1NoSQL云存储开源产品介绍及测试分析实践管理信息系统部2013年08月汇报提纲汇报提纲 NoSQL云存储开源产品介绍1NoSQL云存储系统测试过程和结果分析34应用原则和讨论NoSQL云存储系统测试框架及方案2云存储的类型及云存储的类型及NoSQL数据库数据库Source:SNIA Cloud Storage,Cloud Computing Summit, OMG Standards in Government and NGO Workshop, 2009块存储:提供块接口(如iSCSI)的云存储系统:向应用的数据库或文件系统直接提供原始存储块空间;文件存储:提供文件接口的云存储系统:以标
2、准文件系统接口形式向应用系统提供海量非结构化数据存储空间;对象存储:提供对象接口的云存储系统:为海量非结构化数据提供key-value这种通过键值查找数据文件的存储模式;表存储:提供表存储的云存储系统:向应用系统提供高可扩展的表存储空间,包括交易型数据库和分析型数据库云存储NoSQLDFSNOSQL数据库概述数据库概述在所有 NoSQL 产品里,Apache 的占有率最大,接近达到 69%。Cassandra 的关注度最高,诸如 Digg、Twitter、Facebook 等IT 企业都在使用。各种 NoSQL 产品各具特点,适用于各种实际生产场景,无法被取代。NoSQL数据库的关键技术数据库
3、的关键技术Data PartitioningData Replication Data Consistency ManagementCluster management and Failure detectionBig DataPartition 1Partition 2Partition kPartition 1Partition 2Partition kNoSQL Cluster典型典型NOSQL数据库数据库CouchDB2005MongoDB2007Lotus Notes1989Document DatabaseNeo4j2003InfoGrid2005欧拉发表图欧拉发表图论论文论论文1
4、736Graph Database2003200820092007MemcachedMemcacheDBRedisAmazon DynamoVoldemortBerkeleyDB1986Key-value storeRiakGoogle Bigtable2006HyperTable2009HBase2007CassandraColumn Oriented DatabaseOceanbase2011NoSQL的的“演化演化”典型的典型的Key-Value数据库:数据库:Dynamo面向服务的Amazon平台架构典型的列式典型的列式NoSQL数据库:数据库:CassandraCassandra最初
5、由Facebook研发,后续作Apache开源项目得到广泛应用典型的文档型典型的文档型NoSQL数据库:数据库:MongoDBMongoDB发展路线l2007年,Dwight & Eliot创办云应用平台l 2008年, 的底层数据库 被 命 名 为 M o n g o , 源 自humongousl 2 0 0 9 年 , M o n g o 从 中剥离,成为独立的开源项目MongoDBl Now, MongoDB拥有10多家捐助者,并招募了来自Oracle和Google Bigtable的资深工程师进行核心开发和项目管理MongoDBMongoDB大事记大事记发布1.4版本,宣布开源发布1
6、.6 版本,增加自动分区与备份集支持发布1.8版本增加稀松索引和隐藏索引功能、改进Map/reduce功能2010年年3月月2010年年8月月2011年年3月月2011年年9月月发布2.0版本,增加压缩命令,改进并发处理和索引性能典型的图式典型的图式NoSQL数据库:数据库:Neo4j七桥问题提出Eular在1736年解决七桥问题,并发表“Graph Theory”论文推出第一个开源Graph DatabaseNeo公司以图论为指导汇报提纲汇报提纲 NoSQL云存储开源产品介绍1NoSQL云存储系统测试过程和结果分析34应用原则和讨论12NoSQL云存储系统测试框架及方案2测试目标和测试对象测
7、试目标和测试对象13MySQLMongoDBCassandraHBaseVoldemort基本功能基本功能,基本性能,扩展性,弹性,健壮性,一致性基本功能,基本性能,扩展性,弹性,健壮性,一致性基本功能,基本性能,扩展性,弹性,健壮性,一致性基本功能,基本性能测试对象:测试类型:Key-value存储SQL数据库NoSQL数据库列式存储文档存储图形存储存储测试内容测试内容测试项目测试内容MySQLVoldemortCassandraMongoDBHBase基本功能测试总结各系统的功能列表(数据定义、数据操纵、数据控制、管理维护、功能特性和接口)基本性能测试测试全读场景下系统的性能表现测试全插入
8、场景下系统的性能表现测试全更新场景下系统的性能表现测试在读频繁的场景下系统的性能表现测试在更新频繁的场景下系统的性能表现扩展性测试测试读频繁场景下稳定状态下的系统线性扩展的能力测试更新频繁场景下稳定状态下的系统线性扩展的能力弹性测试测试系统在线服务的同时动态扩展节点的能力健壮性测试测试管理节点宕机对集群的影响测试数据节点宕机对集群的影响测试路由节点宕机对集群的影响测试分布式同步节点宕机对集群的影响一致性测试测试系统集群节点的同步时间,评估系统一致性测试内容测试环境和平台测试环境和平台 基于西门子中国研究院R&D云数据中心的云存储环境,提供了超过100个节点(虚拟机)的分布式计算/存储环境,10
9、0T左右的数据存储资源; 每类典型NoSQL数据库系统配置12个节点进行系统部署和测试;存储采用本地存储(Local Disk、DAS)和集中存储(SAN)相结合的方式,为每类NoSQL数据库提供数据存储空间; 网络使用12个虚拟机共享使用4个千兆网卡,物理机以千兆网卡相连;测试环境测试环境 :n每种数据库有12个虚拟机节点,独立的测试客户端n虚拟机: 1 VCPU(s), 1024MB RAM, 40G DisknCassandra:1.1.2nMongoDB:2.0.3nHBase:0.92.1nZookeeper: 3.4.3n数据复制:2份csnode1 csnode2 csnode3
10、 csnode4 csnode5 csnode6 csnode7 csnode8 csnode9 csnode10 csnode11 csnode12tcnode1 tcnode21000M network for data172.17.0.*172.17.0.92172.17.0.215NoSQL数据库测试工具云存储节点Zookeeper节点Virtual MachineIBM RX3650待测待测NoSQL数据库的架构数据库的架构待测NoSQL数据库架构特点clientHMasterHDFSRegionServerRegionServerRegionServerZookeeper Quor
11、omZK PeerZK PeerZK Peer管理节点数据节点同步协调节点HBaseDataNodeSeedDataNodeDataNodeDataNodeMetaDataStorageclientDataData AccessSeed节点数据节点数据CassandraC1 mongodC2 mongodC3 mongodmongosmongos.P1 mongodS1 mongodS1 mongod配置服务器数据分片1Replica SetReplica Set.Replica Setmongos数据分片2数据分片nClient 1 .路由服务器Client 2 Client n 用户数据元
12、数据P1 mongodS1 mongodS1 mongodP1 mongodS1 mongodS1 mongod路由节点配置节点数据节点MongoDBNoSQL数据库测试框架设计数据库测试框架设计测试框架管理界面测试框架命令控制台配置管理管理界面数据生成协调队列访问模块负载生成器多线程管理数据统计操作系统性能监控文件存储参数统计其他云存储参数统计表存储参数统计统计分析测试报表展现表存储数据访问HBase数据访问Cassandra数据访问MongoDB数据访问分布式文件系统数据访问HDFS数据访问LUSTRE数据访问系统自带经过定制开发待定制开发NoSQL数据库测试框架是基于Yahoo! Clo
13、ud Serving Benchmark (YCSB+)开源框架扩展完成的经过定制开发:HBase数据访问(适配HBase新版本)MySQL数据访问(适配MySQL新版本)协调队列访问模块(访问Zookeeper)操作系统性能统计表存储参数统计待定制开发:兼容更多的云存储管理配置模块测试报表展现模块汇报提纲汇报提纲 NoSQL云存储开源产品介绍1NoSQL云存储系统测试过程和结果分析34应用原则和讨论应用原则和讨论18NoSQL云存储系统测试框架及方案2基本功能测试:测试目标、内容、结果基本功能测试:测试目标、内容、结果基本功能测试:测试目标、内容、结果基本功能测试:测试目标、内容、结果基本性
14、能测试:测试目标和内容基本性能测试:测试目标和内容测试不同数据访问场景下,Hbase、Cassandra、MongoDB系统的性能表现测试类别测试项目测试目的测试指标基本性能读操作频繁场景测试10万条数据记录下, 95读操作和5更新操作的性能表现吞吐量(throughput)单位时间内成功地执行操作数操作延时(Latency)各类操作的延时时间更新操作频繁场景测试10万条数据记录下, 50读操作和50更新操作的性能表现全读操作场景测试10万条数据记录下, 100读操作的性能表现全插入操作场景测试10万条数据记录下, 100插入操作的性能表现全更新操作场景测试10万条数据记录下, 100更新操作
15、的性能表现基本性能测试:测试步骤基本性能测试:测试步骤1.在硬件环境下安装MongoDB, Cassandra, HBase, MySQL的系统2.根据本次测试环境,依次对各系统进行合适的配置和优化,3.通过NoSQL数据库测试框架,针对读频繁、更新频繁、全读、全插入、扫描频繁等各场景对各系统进行测试,并记录相应的性能结果4.根据测试结果,填写测试用例报告,记录测试结果5.撰写性能对比报告测试过程操作数:10万读/更新/写/扫描:0.5/0.5/0/0操作分布: zipfian更新频繁操作数:10万读/更新/写/扫描:0.95/0.05/0/0操作分布: zipfian读频繁操作数:10万读/
16、更新/写/扫描:1/0/0/0操作分布: zipfian全读操作数:10万读/更新/写/扫描:0/0/1/0操作分布: zipfian全插入操作数:10万读/更新/写/扫描:0/1/0/0操作分布: zipfian全更新MySQLHBaseCassandraMongoDB基本性能测试:测试结果(基本性能测试:测试结果(单节点单节点 VS. 12节点节点)在12个节点更新频繁的业务场景下,MongoDB的吞吐量比Cassandra高49.4%, 比HBase高87.2%操作数:20万读/更新/写/扫描:0.5/0.5/0/0操作分布: zipfian更新频繁基本性能测试:测试结果(基本性能测试:
17、测试结果(12节点,更新频繁节点,更新频繁)在12个节点读频繁的业务场景下,MongoDB的吞吐量比Cassandra高32%, 比HBase高52.7%操作数:20万读/更新/写/扫描:0.95/0.05/0/0操作分布: zipfian读频繁基本性能测试:测试结果(基本性能测试:测试结果(12节点,读频繁节点,读频繁)测试类别测试项目测试目的测试指标扩展性MongoDB扩展性测试测试在读频繁的场景下MongoDB系统的扩展性吞吐量(throughput)单位时间内成功地执行操作数操作延时(Latency)各类操作的延时时间测试在更新频繁的场景下MongoDB系统的扩展性Cassandra扩
18、展性测试测试在读频繁的场景下Cassandra系统的扩展性测试在更新频繁的场景下Cassandra系统的扩展性HBase扩展性测试测试在读频繁的场景下HBase系统的扩展性测试在更新频繁的场景下HBase系统的扩展性1.选取基本性能测试中由N (2, 7 ,12)个节点组成集群的最佳性能作为扩展性比较的参考2.绘制性能变化曲线,根据测试结果,填写测试用例报告,记录测试结果3.撰写扩展性对比报告测试过程扩展性测试:测试目标、内容、过程扩展性测试:测试目标、内容、过程扩展性测试:测试结果扩展性测试:测试结果验证业务系统应用可以部署在具备服务伸缩能力的NoSQL数据库平台上,并同时在具备伸缩条件的数
19、据库环境保持高可用性测试类别测试项目测试目的测试指标弹性MongoDB弹性测试测试在不间断服务的情况下增加N个节点对MongoDB系统的影响吞吐量(throughput)单位时间内成功地执行操作数运行时间(Runtime)通过运行时间计算系统Rebanlance的时间Cassandra弹性测试测试在不间断服务的情况下增加N个节点对Cassandra系统的影响HBase弹性测试测试在不间断服务的情况下增加N个节点对HBase系统的影响弹性测试:测试目标和内容弹性测试:测试目标和内容1.在硬件环境下安装MongoDB, Cassandra, HBase的系统2.根据本次测试环境,依次对各系统进行合
20、适的配置和优化,3.通过NoSQL数据库测试框架,模拟业务场景持续对数据库进行读写,并持续记录测试指标,4.运行两分钟后,同时启动N个节点,观察性能指标变化情况直至性能稳定,5.根据测试结果,填写测试用例报告,记录测试结果6.撰写性能对比报告测试过程弹性测试:测试步骤弹性测试:测试步骤同时启动5个节点12节点稳定状态7节点稳定状态Rebalance时间: 500s1000s操作数:500万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkload弹性测试:测试结果(弹性测试:测试结果(HBase)同时启动5个节点12节点稳定状态7节点稳定状态Rebalance时间
21、: 100s200s操作数:500万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkload弹性测试:测试结果(弹性测试:测试结果(Cassandra, 单单Client)弹性测试:测试结果(弹性测试:测试结果(Cassandra,多多Client)同时启用5个shard7节点稳定状态操作数:100万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianRebalance时间: 1h弹性测试:测试结果(弹性测试:测试结果(MongoDB)测试类别测试项目测试目的测试指标健壮性MongoDB健壮性测试测试Primary mongod数据节点宕机对
22、系统影响吞吐量(throughput)单位时间内成功地执行操作数运行时间(Runtime)通过运行时间计算系统恢复正常服务的时间测试Secondary mongod数据节点宕机对系统的影响测试Slave config节点宕机对系统的影响Cassandra健壮性测试测试Seed节点宕机对系统的影响测试普通节点宕机对系统的影响HBase健壮性测试测试HRegionServer、ROOT、META节点宕机对系统的影响测试HMaster节点宕机对系统的影响测试Zookeeper节点宕机对系统的影响测试目标: 测试数据库系统的健壮程度,以预测发生宕机等突发状况时数据库系统对业务的影响; 由于高可用性和系
23、统硬件、系统架构、容灾性、IT管理的优劣等诸多人为和非人为的因素密切相关,所以本测试只是在不考虑容灾的条件下简单地根据测试环境的情况模拟测试分析系统高可用性 。测试Master config节点宕机对系统的影响。测试Mongos节点宕机对系统的影响。健壮性测试:测试目标和内容健壮性测试:测试目标和内容1.在硬件环境下安装MongoDB, Cassandra, HBase系统2.根据本次测试场景,依次对各系统进行合适的配置和优化,3.通过NoSQL数据库测试框架,模拟业务场景持续对数据库进行读写,并持续记录测试指标,4.运行两分钟后,通过kill某节点的进程模拟该节点宕机的情况,5.根据测试结果
24、,填写测试用例报告,记录测试结果6.撰写性能对比报告测试过程健壮性测试:测试步骤健壮性测试:测试步骤停止服务时间: 100s200s停止服务时间: 30s60s操作数:500万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkload操作数:500万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkload恢复服务恢复服务健壮性测试:测试结果(健壮性测试:测试结果(HBase)操作数:100万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkloadData Node (Heavy)Seed Node (
25、Not Heavy)Data Node (Not Heavy)停止服务时间: 3540s停止服务时间: 3035s停止服务时间: 3035s健壮性测试:测试结果(健壮性测试:测试结果(Cassandra)测试结论:MongoDB在健壮性方面有非常好的表现。当关闭一个Replica set中的Mongod进程时,不会 造成数据库服务中断;当关闭一个shard中Replica set的Primary mongod数据进程时,系统性能会短暂下降,持续时间为10-20s,系统吞吐量会下降约20%左右;当关闭一个shard中Replica set中的Second mongod数据进程时,对系统性能基本没
26、有影响。停止服务时间:1020s操作数:100万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkload操作数:100万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkload服务基本无影响健壮性测试:测试结果(健壮性测试:测试结果(MongoDB)测试结论:MongoDB Config Server采用Master-Slave模式进行数据的同步,关闭其中任何一个节点,对于系统性能没有影响;当关闭Config服务中Master节点上的服务进程时,系统性能不会出现明显变化,系统吞吐量、响应时间没有明显下降;当关闭Config服务中S
27、lave节点上的进程时,系统性能不会出现明显变化,系统吞吐量、响应时间没有明显下降。操作数:100万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkload操作数:100万读/写/更新/扫描:0.95/0.05/0/0操作分布: zipfianWorkload服务基本无影响服务基本无影响健壮性测试:测试结果(健壮性测试:测试结果(MongoDB, cont.)NoSQL ClusterfrontendClient ConsumerClient Producer6. 读取键值2. 插入数据3. 随机选取键值插入队列4. 通知读取1. 注册队列消息5. 出队列7.1
28、 if 读取成功,计算读延时,如果第一次就读取成功,读延时视为07.2 if 读取失败,插键值入队列一致性测试:测试目标和内容一致性测试:测试目标和内容1.在硬件环境下安装MongoDB, Cassandra, HBase系统2.根据本次测试场景,依次对各系统进行合适的配置和优化,3.Client1通过NoSQL数据库测试框架,持续执行数据负载workload_producer向数据库中写入数据,并持续记录测试指标,4.同时,Client2通过测试框架执行数据负载workload_consumer,读取写入的key-value对,并记录测试指标5.根据测试结果,填写测试用例报告,记录测试结果6
29、.撰写性能对比报告测试过程操作数:10万读/写/更新/扫描:0/1/0/0操作分布: uniformWorkloadProducer一致性测试:测试步骤一致性测试:测试步骤一致性测试:测试结果一致性测试:测试结果汇报提纲汇报提纲 NoSQL云存储开源产品介绍1NoSQL云存储系统测试过程和结果分析34应用原则和讨论43NoSQL云存储系统测试框架及方案2关系型 or 非关系型CAP特性选型产品特性+业务场景123NoSQL选型RDBMS or NoSQL管理信息系统数据库选型步骤管理信息系统数据库选型步骤关系型数据库关系型数据库 or NoSQL数据库数据库管理信息系统选型的建议:n 建议使用
30、关系型数据库的管理信息系统: 可能存在各种复杂的应用类型、数据格式(P7); 考虑到需要较高的服务质量保证以及很强的厂商技术支持(P4);考虑到可能需要事务、视图等ACID的支持(P3);需要复用已有的投资和遗留系统(P5):建议选择关系型数据库构建信息系统。n 建议使用NoSQL数据库的管理信息系统: 如数据量每年都会保持稳定的高速增长,对扩展能力要求较高(P7); 大规模提供分布处理能力,例如一些大规模数据挖掘的应用(P6);建议选择NoSQL数据库构建信息系统;进而,对照功能需求和数据库功能列表选择满足功能性需求的数据库产品(P1) IF: 希望有通用设计 ;THEN: 选择关系型数据库
31、;(P2) IF: 需要数据库支持视图、事务等功能;THEN: 选择关系型数据库;(P3) IF: 业务场景要求很强的数据查询和复杂分析功能;THEN: 选择关系型数据库;(P4) IF: 需要企业级支持和SLA ;THEN: 选择关系型数据库;(P5) IF: 要复用已有的系统且改造代价巨大;THEN: 选择关系型数据库;(P6) IF: 需要很强的弹性或扩展能力; THEN: 选择NoSQL数据库;(P7) IF: 期望规模化提供较强分布处理能力;THEN: 选择NoSQL数据库;根据根据CAP特性选型特性选型任何分布式系统,只能满足CAP原则三者中的两点: Consistency(一致性
32、) Availability(可用性), Partition tolerance (分区容错性);NoSQL数据库选型推导数据库选型推导CassandraHBaseMongoDB技术分析读性能影响读性能的技术很多写性能影响写性能的技术很多,HBase写性能较好的原因是先直接写到内存再统一flush到磁盘扫描性能利用连续范围分区技术的HBase和MongoDB扫描性能较好扩展性和弹性增强主从式的HBase通过分布式锁及时发现节点增减并进行资源调度,扩展性好高可用性Cassandra是P2P架构,每个节点功能等同,无主节点和路由节点之分,不存在主节点单点问题一致性Cassandra和MongoDB
33、利用锁技术实现强一致性业务场景业务场景+产品特性:产品特性:NoSQL数据库选型数据库选型性能类选型原则:(P1) IF: 期望读写性能较为均衡;THEN: 选择Cassandra和MongoDB;(P2) IF: 业务系统为读操作频繁的应用;THEN: 选择Cassandra或MongoDB;(P3)IF: 业务系统为数据吞吐量较大的应用;THEN: 选择MongoDB;(P4) IF: 业务系统为插入操作很多但读操作很少的应用 ;THEN: 选择HBase;(P5) IF: 期望数据库自身有非常高的扩展性;THEN: 选择HBase;(P6) IF: 期望数据库保持强一致性; THEN:
34、选择关系型数据库、MongoDB或HBase;(P7) IF: 对高可用性有非常高的要求;THEN: 优先选择P2P架构的 Cassandra管理信息系统选型的建议:管理信息系统选型的建议:n对于以归档和读取为主、存储规模较大的系统应用(如网上大学、数字档案等):对于以归档和读取为主、存储规模较大的系统应用(如网上大学、数字档案等): 业务系统主要是读操作频繁的数据操作业务系统主要是读操作频繁的数据操作(P2)(P2); ; 数据吞吐量很大,特别是集中到一个较短的时间段数据吞吐量很大,特别是集中到一个较短的时间段内内(P3)(P3); ; 建议选择建议选择MongoDBMongoDB数据库;数据库;n对于读写操作较为均衡的核心应用(如对于读写操作较为均衡的核心应用(如ERPERP等等):): 系统读写操作较为平均,希望性能较为平均系统读写操作较为平均,希望性能较为平均(P1)(P1); ; 考虑到读写的交替和并发性,希望保持较高的考虑到读写的交替和并发性,希望保持较高的数据一致性数据一致性 (P6)(P6);建议选择;建议选择MongoDBMongoDB数据库;数据库;49 谢谢 谢!谢!Q&A Q&A
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。