使用Workload E运行带有和不带加密的YCSB之间的巨大运行时差异

时间:2017-07-06 00:35:45

标签: mongodb encryption ycsb

我已经在mongodb企业中运行ycsb进行了一些测试,有静态加密和不加密。我正在使用默认工作负载,并且在运行工作负载E时发现了一些奇怪的结果。

没有加密,运行时约为13分钟但是当我将其切换到加密数据库时,运行时跳到了可疑的17小时!!!

一定有什么不对,但我无法确定它可能是什么。所有测试都是使用100K操作计数和10M计数,并在每次运行后重新启动系统。希望得到一些帮助来解决这个问题

1 个答案:

答案 0 :(得分:0)

YCSB本身不加密 ,但依赖于MongoDB的java驱动程序。你有没有尝试过MongoDB的文档?

您使用的是哪种加密方式?

我发现你的结果并不令人惊讶。根据您的问题,您的工作负载文件如下所示:

recordcount=10000000
operationcount=100000
readproportion=0
updateproportion=0
scanproportion=0.95
insertproportion=0.05
requestdistribution=zipfian
maxscanlength=100
scanlengthdistribution=uniform

这是一项非常密集的扫描工作量。首先,扫描是列存储上最慢的操作。其次,假设加密需要250毫秒,解密需要400毫秒,客户端和REST服务器都必须为每个操作执行此操作,因此需要(0.25 + 0.4)*100000秒,即大约18小时。

修改

根据您的评论,您正在使用AES256并比较工作负载A和E. 工作负载A大约50%读取和50%写入。如果您使用YCSB的标准行大小,则每行代表1 kB(10个字段,每个100 B)。

因此,对于100k操作,您正在操纵以下数据量:

  • 工作量A:100000*0.5*1kB + 100000*0.5*1kB = 100 MB
  • 工作量E:100000*0.95*100*1kB + 100000*0.05*1kB = 9505 MB,因为您的扫描代表100行!

由于AES是分布式的,即AES(A + B) = AES(A) + AES(B),因此您使用工作负载E加密了95倍的数据,这解释了时差。