没有对oss数据库系统进行性能测试的原因?

时间:2013-06-22 11:42:12

标签: database jdbc open-source benchmarking performance-testing

我使用TPC-C基准测试的开源java实现(通过JDBC称为TCJ-TPC-C(去年由MMatejka创建))来比较Oracle和2 OSS DBMS的性能。

TPC-C是专有领域的标准,我的问题是:

OSS数据库系统没有系统地实施性能测试的主要原因是什么?

1 个答案:

答案 0 :(得分:0)

首先,我不确定你的问题是否适合SO,因为它已经接近提出意见,所以我所有的答案都是更多的意见而不是事实。这些年我读过的大部分内容,但很难找到参考/证明。我不是TPC成员,但是他曾在TPC-H套件下测试了一个dsitributed柱存储数据库。

<强>基准

这些非常适合测试单个功能并且不幸地比较它们,这听起来很简单。公司将花费大量精力来获得更好的结果,有时(因此我听说)在源中实现特定功能以获得基准。关于可靠的基准测试结果总体上有很多讨论。此外,基准测试可能非常适合某些产品,但不适用于其他产品。

您的示例使用Jdbc,但并非每个数据库都有jdbc,或者更糟糕的是它可能只是启用该类应用程序的“小螺栓”。所以当嵌入所有主要用法时,通过jdbc执行基准测试sql可能会不公平/不良地描述一些解决方案。

有一些争论认为,基准测试会将供应商从实际优先事项中分散出来,他们会花费精力并仅为基准测试实现功能。

基准测试也很容易被误解,即使TPC是一套不同的基准测试,你需要根据需要选择正确的基准测试(tpc-c代表oltp,tpc -h代表dss等)

<强> TPC

如果这对tpc显示为负面,请原谅我,我是专业人士。

Tpc定义了一组非常紧凑的测试要求。你必须遵循这些信件。对于tpc-h,这是你必须做的一个例子

  1. 进行多次运行,一些并行,一些用户
  2. 完全使用提供的sql,你根本不能改变它。如果您需要,因为您的系统使用略有不同的语法,但必须获得豁免。
  3. 您必须使用外部审计员。
  4. 您可能不会将colmns等编入索引范围之外。
  5. 对于tpch,你必须以指定的方式写作(这会消除'单一作家风格的数据库)
  6. 以上内容确保阅读结果的人可以信任结果的完整性,这对公司买家来说非常有用。

    Tpc是一个非盈利组织,任何人都可以加入。虽然收费,但它不是主要的障碍,除了OSS。如果你认为你可以取得非常好的成绩,或者你需要公布的结果来竞标政府合同等,你实际上只会支付这笔费用。

    我看到tpc对于oss的最大问题在于它严重偏向于关系供应商,很少有oss解决方案可以满足其产品的入门标准,或者如果他们这样做,它们可能无法在每次测试中表现良好。做一个基准测试也可能会让一些团队分心。

    替代tpc

    当然,tpc存在替代方案,但是我所知道的还没有真正获得牵引力。主要供应商通常规定您不能对其产品进行基准测试并公布结果。所以任何新的基准都需要在政治上明确地让他们参与其中。我同意这里的供应商立场,我讨厌有人错误地实施基准测试并且报告我的产品很差。

    自tpc开始以来,数据库格局已经发生了很多分裂,但许多“打赌你的业务”应用程序仍在“经典”数据库上运行,因此它们仍然占有一席之地。然而,随着nosql等的增加,有一个新的基准测试的地方,但真正的问题变成了测量 - 甚至选择xyz像'%kitten%'。或xyz喜欢'小猫%'。将对不同的解决方案产生巨大影响。如果你解决了这个问题,那么你允许(odbc,jdbc,http / ajax,嵌入式sql等)这些接口会影响性能。实际模型如关于关系模型与最终一致性模型的ACID怎么样?那些使用特定设计硬件的硬件/软件解决方案呢?

    每个数据库都针对不同的需求进行了设计权衡,基准测试正在尝试平衡竞争环境,这只有在您有共同点或报告大量不同指标时才真正可行。

    尝试创建替代方案的一个问题是“谁来支付”?您需要了解要执行的测试类型,然后您需要审核结果才能使其有意义。这一切都要花钱。