Author: Sergey Sverchkov Translated by: baudzhou@163.com
3of18
性能评估方法
在衡量产品能力时,数据库供应商通常采用专门设计以保证各自方案优势的
硬件、软件组合。在 我 们的测试中,我们尝试在同等的条件下测试 NoSQL 数据库
的表现。
在测试基准方面,我们采用了雅虎的云服务基准测试平台(YCSB)。YCSB
的核心框架包括一个用于生成测试负载的负载生成器与一个负载场景的集合。使
用 YCSB,开发者需要通过操作类型来描述负载的场景,例如,明确什么样的操
作执行在什么类型的记录上。支持的操作包括:插入、更新(修改一个字段)、
读取(一个随机字段或一条记录的所有字段)与 扫描(从一个随机选取的记录开
始按照键的顺序读取一系列记录)。
在我们的测试中,每个工作负载都操作一个有 100,000,000 条记录的表;
每条记录为 1,000 字节,10 个字段。主键用来标识每条记录,通常为一个字符
串,如“user234123”。每个字段都被命名为 field0,field1 等。每个字段的
值都是随机的 ASCII 字符,其长度都是 100 字节。
数据库的性能由其进行基本操作时的计算速度决定。由负载执行器执行的,
驱动多个客户线程的一个动作,作为一个基本操作。在 NoSQL 数据库中,每个线
程通过调用数据库的接口层执行一个操作序列来进行数据库加载(在加载阶段)
并执行工作负载(在事务阶段)。每个线 程都可以控制它们生成请求的频率。因
此我 们可以直接控制负载。另外,线程可以度量在执行操作时的延迟与吞吐量,
之后这些数据被发送给统计模块。
测试环境
在测试中,我们决定采用 AWS 公共云环境。所有的虚拟机都运行在同一个区
域(欧洲,爱尔兰)并且在同一个可用区域(或同一个数据中心)。每个数据库
都在一个四节点集群中存储数据。我们采用了 m1.xlarge 计算实例。我们的节点
都是 64 位的实例:16GB 内存,4vCPU,8ECU 与高性能网络,操作系统为 Amazon
Linux。
我们在集群中的每个节点上创建了数据存储,采用了 4 个拥有 EBS 优化的
EBS 卷,每个大小为 25GB,这些卷组成了 RAID0 阵列。数据被分布或分片在 4
个节点上。
采用 YCSB 框架的客户端运行在一个单独的 c1.xlarge 实例上。由于 MongoDB
的架构需要,我们增加了两个 c1.medium 实例作为路由器。
所有的实例都位于相同的安全组并提前配置了必要的网络端口用于节点间
通信,同 时 配 置 了 每 个 欲开放的数据库所需的所有端口。之后我们将工作负载定
义上传至 YCSB 客户端以运行测试,测试结果在安装了 YCSB 的实例上进行度量。
评论2
最新资源