我试图在使用Hadoop和HBase的系统设置和使用Oracle DB作为后端实现相同的功能之间进行比较。我缺乏关于Oracle方面的知识,所以进行公平的比较。
工作量和非功能性要求大致如下:
A)两个表上的12M事务,在4小时内具有一个简单关系和多个(非文本)索引。这相当于每秒833次交易(TPS),持续。这需要每8小时完成一次。
B)确保所有写入都是持久的(因此,在群集设置的情况下,正在运行的事务会因机器故障而存在)且具有相当的可用性级别吗?具有良好的可用性水平,我的意思是诸如磁盘和单个网络接口/ tcp连接丢失之类的常规故障不应该需要人为干预。罕见的故障可能需要干预,但应该通过启动可以快速接管的冷备用来解决。
C)另外添加另外300 TPS,但这些在几个表中几乎连续24/7发生(但是所有表都是两对,具有相同的简单关系和多个索引)?
某些情况:此工作负载是24/7,系统需要保存10年的可用于实时查询的历史数据。查询性能可能比亚秒级要差一些,但必须足够活泼才能考虑日常使用。 ETL作业的设置方式几乎没有流失。此外,在关系设置中,此工作负载将导致很少的锁争用。我希望索引更新成为主要的痛苦。为了使比较尽可能公平,我希望Oracle提供最松散的一致性级别。
我无意抨击Oracle。我认为它是一个很好用的数据库。我试图在开源(和NoSQL)和我们之间进行权衡,并使用商业支持的,经过验证的设置。
答案 0 :(得分:3)
没人能最终回答这个问题。
当您购买汽车时,您可以明智地预期其最高速度,加速度和燃料消耗将在独立测试值的百分之几之内。这同样不适用于一般软件,也不适用于特定数据库。
即使您提供了硬件,操作系统和数据结构的确切详细信息,以及存储的数据量和事务的完整详细信息,性能也可能很容易变化100倍,具体取决于用法(由于记录缓存的热点,磁盘碎片的发展)。
然而,说过我可以给出一些指示:
1)nosql数据库总是优于传统的DBMS - nosql数据库的原因是性能和并行化。这并不意味着传统的DBMS是多余的 - 它们为与数据交互提供了更大的灵活性
2)对于中小范围数据量,与其他关系数据库相比,Oracle的体验相对较慢。我对Oracle RAC作为可扩展解决方案的印象也不过分。
3)我怀疑工作负载需要中端服务器才能获得运行Oracle的一致结果(大约8,000美元以上)
4)虽然拥有热备用是一种快速覆盖各种中断的方法,但在很多情况下,风险/成本/收益有利于RAID,多网卡,UPS等方法而不是维护问题同步集群。5)支持 - 如果开源软件包的开发人员提供支持付费,您是否曾打扰过他们? IME,商业软件的SLA / EULA更多的是关于保护供应商而不是客户。
因此,如果您认为值得考虑并且成本不是一个大问题,那么最好的答案就是亲自尝试。
答案 1 :(得分:1)
这里没有冒犯,但如果你几乎没有Oracle的知识,那么你真的无法进行公平的比较。我与经验丰富的Oracle DBA和系统管理员团队合作,他们会争论比较测试的设置(硬件/软件设置变量几乎是无限的)。通常这些测试是放弃基础设施方向的理由(货币也是一个关键问题)。
另外,您是否计划聘请Hadoop专家团队来管理公司的数据基础架构? Oracle并不便宜,但你可以找到经验丰富的Oracle专业人士(从DBA到开发人员再到分析师),对hadoop admins / dbas不太确定......
只是值得深思(不,我不为Oracle工作;)