database - 缺少OSS数据库系统性能测试的原因?

标签 database jdbc open-source benchmarking performance-testing

我使用tpc-c benchmark的开源java实现(通过jdbc调用tcj-tpc-c(由mmatejka去年创建))来比较oracle和2个oss dbms的性能。
TPC-C是专利领域的标准,我的问题是:
OSS数据库系统没有系统地进行性能测试的主要原因是什么?

最佳答案

首先,我不确定你的问题是否完全适合,因为它接近于征求意见,所以我的回答更多的是意见而不是事实。这些年来,我读了很多,但很难再找到参考/证据。我不是tpc的成员,但是我做了大量的调查,试图在tpc-h套件下测试dsitributed列存储数据库。
基准点
不幸的是,这些测试非常擅长于测试一个特性并对它们进行比较,这并不像听起来那么容易。公司将花费大量精力来获得更好的结果,有时(我也听说过)在基准测试的源代码中实现特定的功能。关于基准测试结果的整体可靠性有很多讨论。此外,基准测试可能非常适合某些产品,但不适合其他产品。
您的示例使用jdbc,但并非每个数据库都有jdbc,或者更糟的是,它可能只是一个“小插接”来启用该类应用程序。因此,当所有主要使用都将嵌入sql时,通过jdbc执行基准测试可能会不公平/不好地描述一些解决方案。
围绕基准测试分散了供应商对实际优先级的注意力,他们只为基准测试花费精力和实现特性,这是有争议的。
基准测试也很容易被误解,即使tpc是一套不同的基准测试,您也需要根据需要选择正确的基准测试(tpc-c用于oltp,tpc-h用于dss等)。
TPC公司
如果这对tpc来说是否定的,请原谅我,我支持tpc。
tpc定义了一组非常紧密的测试需求。你必须把这些写下来。对于tpc-h,这是您必须做的一个示例
进行多次运行,一些并行运行,一些单用户运行
完全使用所提供的sql,根本不能更改它。如果您需要,因为您的系统使用稍微不同的语法,但必须得到豁免。
你必须使用外聘审计员。
您不能索引超出指定范围的列等。
对于tpch,您必须以指定的方式编写(这将消除“单编写器”样式的数据库)
以上保证了阅读结果的人可以信任结果的完整性,这对企业买家来说是件好事。
tpc是一个非盈利组织,任何人都可以加入。有一个费用,但它不是一个主要的障碍,除了开放源码软件。只有当你认为你能取得很好的成绩,或者你需要公开的成绩来投标政府合同等的时候,你才会实际地支付这笔费用。
我看到tpc for oss最大的问题是,它严重偏向于关系型供应商,很少有oss解决方案能够满足其产品的入门标准,或者如果它们满足了,那么它们在每次测试中的性能可能都不够好。对某些团队来说,做一个基准测试可能会分散他们的注意力。
TPC的替代品
当然,TPC存在替代品,但没有人真正获得牵引力,这是我意识到的。主要供应商通常规定您不能对其产品进行基准测试并发布结果。因此,任何新的基准都需要有政治头脑,才能让他们加入。我同意供应商的立场,我讨厌有人错误地实现一个基准,并报告我的产品很差。
自tpc启动以来,数据库环境已经断开了很多,但许多“赌你一把”的应用程序仍然运行在“经典”数据库上,因此它们仍然有一席之地。然而,随着nosql等的兴起,有了一个新的基准,但真正的问题是要衡量什么——甚至选择xyz,比如'%kitten%'。或者像xyz一样的“小猫百分比”。会对不同的解决方案产生巨大的影响。如果您解决了这个问题,那么您所允许的公共接口(odbc、jdbc、http/ajax、嵌入式sql等)将极大地影响性能。那么实际的模型呢,比如关系模型的acid和最终的一致性模型呢?使用特定设计硬件的硬件/软件解决方案如何?
每个数据库都为不同的需求做出了设计上的权衡,而一个基准正在试图平衡竞争环境,只有当您有一些共同点,或者报告许多不同的度量标准时,这才是真正可能的。
试图创造一个替代方案的一个问题是“谁来付钱”?您需要了解要执行的测试类型,然后需要审核结果以使其有意义。这些都要花钱。

关于database - 缺少OSS数据库系统性能测试的原因? ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17250346/

相关文章:

mysql - SQL从多对多+phonegap中选择

android - 为什么我们需要 onUpgrade(); SQLiteOpenHelper 类中的方法

java - 传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议(protocol)流不正确。参数 1 ("") : Data type 0x38 is unknown

Java TL1协议(protocol)

architecture - 用于 build /设计房屋的开源软件?

c# - C#/.NET 3.5 的文件存储数据库?

php - 当使用 while ($row = $result->fetch_assoc()) 命令创建表时,如何获取表中任何一个 <tr> 的值?

java.sql.结果集 : flawed by design?

java - 使用Java从MySQL中检索图片

c# - C# 编译器是开源的吗?