首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于VoltDB的YCSB

用于VoltDB的YCSB
EN

Stack Overflow用户
提问于 2012-09-02 11:38:06
回答 2查看 724关注 0票数 1

有没有人知道YCSB客户端/驱动程序的实现可以用来对VoltDB进行基准测试?或者甚至是任何参考出版物/博客/文章/研究项目?

我们可以使用TPC工作负载进行VoltDB基准测试吗?

非常感谢大家。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-05 22:41:07

这里是VoltDB开发人员。

虽然一些用户已经使用YCSB框架进行了基准测试,但没有官方的YCSB驱动程序。在YCSB和VoltDB之间存在一点阻抗不匹配。YCSB旨在与范围分片列存储一起使用。VoltDB是一个散列分片关系存储,它对服务器端逻辑提供了丰富的支持。

这表现为三个方面的问题。

第一个是YCSB需要范围扫描。如果您对键分布有一定的了解,并且可以对键进行归一化,那么您就可以在散列分片存储中进行高效的范围扫描,以便有效地存储它们。下面是一个在Cassandra中如何实现的示例。

这不是无法克服的,但它需要一些思考。

第二个问题是列存储模型不能很好地映射到关系数据模型。通过使用blob将较小的map打包到一行中,并在添加/更新k/v对时重写它,我可以获得相当多的速度和内存效率。这就是Redis处理小地图的方式。

对于具有许多/较大k/v对的较大密钥,反规范化并允许数据库管理内存是有意义的。只需做一点工作,您就可以创建一个透明地执行此操作的存储过程API。

同样,它也不是不可克服的,但也不是微不足道的。

第三个问题是,YCSB是在假设所有逻辑都存在于客户端并且服务器必须为客户端实现所有数据的前提下编写的。这意味着在现实世界中,使用VoltDB编写的应用程序可以提高数倍的速度和更高的空间效率。更快,因为服务器端逻辑可以消除与客户端的多次往返,并且更有效地利用空间,因为对事务的支持使您可以避免以日志结构的方式编写应用程序。

YCSB将让您大致了解VoltDB如何执行和扩展,但通过以适合关系数据模型和Volt对服务器端逻辑的强调的方式编写您的应用程序,将会获得巨大的收益。

关于TPC-C。VoltDB是专门为类似TPC-C的基准测试而构建的。我说"like“是因为它不是官方的,而且它在一些方面与TPC-C有所不同。最重要的区别是,新订单事务只使用一个仓库(而不是所需的1-10个仓库来处理一些新订单)。这一点很重要,因为它允许在没有任何分布式事务的情况下完美地进行基准测试。

VoltDB TPC-C之类的基准测试没有随发行版一起提供,但可以在github上获得。

票数 3
EN

Stack Overflow用户

发布于 2014-05-08 05:37:46

另一位VoltDB开发人员,他刚刚完成了实现YCSB驱动程序的过程。此驱动程序的源代码可以在https://github.com/VoltDB/voltdb/tree/master/tests/test_apps/ycsb的GitHub上找到。

关于我们的实现的一些细节:

YCSB使用宽列格式,将字符串键映射到许多字符串-二进制k/v字段映射。创建一个灵活处理这种情况的驱动程序,即处理任意YCSB配置的驱动程序,不允许直接使用固定的关系模式。为了解决这个问题,我们采取了一种“小映射”类型的方法,也就是说,对于每个键,我们将所有字段压缩到一个blob中,以便以k/v对处理整个YCSB行。这确实做出了一个隐含的(软)假设,即每行的字段数量将相对较少(例如,<=50),考虑到现有的、已发布的YCSB结果,这似乎是合理的。可以在存储过程级别添加额外的逻辑,以处理每行有大量字段的情况,但是考虑到基准测试的现有用法,这似乎是不必要的复杂性。

作为进一步的说明,我们将“扫描”操作解释为“从这个键开始,以某种确定的顺序翻阅数据”。在现实世界中,数据意味着一些东西,并且可能(也可能不)具有有意义的顺序。在YCSB的世界里,没有特别的理由喜欢一个订单而不是另一个。因此,我们对VoltDB分区进行了人工排序;与主键索引施加的分区内排序相结合,这对数据集施加了总排序。对于感兴趣的读者,此操作的客户端实现使用了我们的一些示例中使用的"run everywhere“模式的某种新颖变体。

我们发布的测试结果可以在https://voltdb.com/blog/voltdb-in-memory-database-achieves-best-in-class-results-running-in-the-cloud-on-the-ycsb-benchmark-3/上看到。正如我的同事上面建议的那样,尽管非常强大,但这个基准测试的结果实际上低估了VoltDB的性能,因为它没有利用通过在存储过程调用中捆绑逻辑而获得的优化。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12233225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档