存储 频道

MarkLogic NoSQL闪存方案基准测试

        【IT168 评测】今年五月份华为发布了一篇名为《华为Tecal ES3000 PCIe SSD国际权威评测第一》的文章中提到华为的Tecal ES3000 PCIe SSD在Storagereview的评测中业内知名,笔者近日找到Storagereview关于这次评测的原文并进行了编译。以此来对MarkLogic NoSQL存储基准测试以及测试结果进行介绍。

  MarkLogic 6是一款企业级NoSQL(“Not Only SQL”)数据库,其灵活性和可扩展性都优于传统SQL数据库。并能够为关键应用提供提供企业级的搜索、ACID事务处理、故障恢复、复制以及安全等功能。MarkLogic将数据库功能、搜索以及应用服务融合进一个系统中。综合起来说MarkLogic就是综合了现有的工具、技术以及数据库经验向关键应用提供一个可靠、可扩展的安全平台。

MarkLogic NoSQL闪存方案基准测试

  公共领域、传媒以及金融等多个领域中很多公司和组织都使用了MarkLogic架构。引入MarkLogic的这些公司和组织大多面临着大规模数据量、多种数据结构以及复杂的数据类型数据环境,当然这些环境我们现在也叫大数据。MarkLogic典型方案支持智能分析、实时的决策、风险关系、数据资产管理、信息化供应链管理以及内容迁移等功能。

  MarkLogic基准测试(MarkLogic Benchmark)

  这项测试由MarkLogic研发,测试主要对硬件的性能以及MarkLogic软件的功能进行评价。测试的工作负载主要包括两个方面:

  1. 导入阶段(Ingestion phase)。将一个大数据集插入到MarkLogic数据库索引中。

  2. 查询阶段(Query phase)。对数据库进行搜索、视图更新以及删除数据操作。

  用于测试的数据来源于维基百科的xml,文件以zip的格式存于磁盘上。在导入阶段会使用到MarkLogic内容汲取工具(mlcp)。

  导入阶段的测试是一个I/O密集型的人物。I/O的变化分为三个阶段:

  1. 文档被写入内存,并将操作以日志的形式写入硬盘。

  2. 内存很快过载,数据只能被写到磁盘上

  3. 随着硬盘磁盘数量的增加,MarkLogic必须对硬盘进行整合,

  未来保证测试结果的精准,我们在同一个环境下重复对每个闪存设备进行24次导入和查询的测试。每款PCIe产品测试的间隔时间为1~2个小时,所以每个产品的测试大约要话费24~48个小时。每次测试中都会涉及日志写 (J-lat), 保存写(S-lat), 合并读(MR-lat) 合并写 (MW-lat)的操作。

MarkLogic NoSQL闪存方案基准测试

  从上图我们可以看见整个测试中的IO路径:

  日志写操作是将变化记录到数据库中,当一个更新请求被发起,所有对数据库的更改都会被写入日志。再次根据日志对数据库进行更改的时候可以不必发起新的请求。这种更改数据库的操作可以是添加、更换或者是删除文档的操作。这种日志的主要作用就是在断电的时候维持数据库的更新,减少系统宕机带来的损失。其中操作的延迟主要是J-LAT来衡量。

  当文件数量足够多,内存容量不足时,数据将被存到磁盘上,写操作的延迟主要来源于磁盘。这种将内存溢出的数据存往磁盘被称为保存。保存写的延迟主要通过S-lat来衡量。

  当磁盘数量越来越多的时候,整个系统的效率问题变得非常明显。读一个单独的数据表(term list),MarkLogic必须要先把数据表先从所有的个人数据表里提取相关的数据然后将结果进行整合。为了易于管理,MarkLogic将这种收集整理的工作都放到了后台。这一步操作包括两个部分,一个部分就是将需要的数据从多块磁盘上进行搜集,这步叫做合并读(Merge Read);另一个过程是将数据进行整合进一个新的表里,这步叫做合并写(Merge Write)。整个过程中会涉及到索引和数据的合并和优化,以及对碎片的整理等操作。其中合并读的延迟通过MR-lat来显示,合并写通过MW-lat进行显示。

  在导入阶段,MarkLogic还会对所有的文档建立索引,并且建立索引表等等。这需要整个系统在I/O密集和CPU密集的两种环境之间保持一个平衡。

  测试的原数据来自维基百科,之所以选择这里面的数据,是因为维基百科中包含有很多非英语以及非ASCII编码的文本在其中。测试用的数据大多是阿拉伯语、荷兰语、法语、德语、日语、简体中文、繁体中文等等种类的语言。这样的数据环境会给MarkLogic带来多方面的压力。最后静态数据使得基准测试可以重复进行,这对于准确的衡量多个软件版本下的硬件性能非常必要。

0
相关文章