Oracle 11g vs MySQL vs Hadoop:- 10^6 到 10^9 记录的基准测试
Posted
技术标签:
【中文标题】Oracle 11g vs MySQL vs Hadoop:- 10^6 到 10^9 记录的基准测试【英文标题】:Oracle 11g vs MySQL vs Hadoop:- benchmarking for 10^6 to 10^9 records 【发布时间】:2013-06-24 12:13:05 【问题描述】:我需要针对 10^6 到 10^9 条记录(mysql 中的行)对 Oracle 11g、MySQL 和 Hadoop 进行基准测试。将有大量的数据挖掘查询全天候进行,并提供实时数据。我想知道哪个数据库会更好,尤其是在一些真实的统计数据方面。未来几个月的数据肯定会超出这个范围。
是否有任何开源基准测试工具可以做到这一点?或者谁有一些有用的数据?
提前致谢。
编辑:-
Hadoop 不是数据库。它是一个分布式文件系统。让我更详细地解释一下我的要求。这就是我现在所拥有的,我的所有数据都在 mysql 中,我计划将其导出到 hadoop 并在其上运行我的数据挖掘算法。算法结束后,最终结果将被发送到 mysql 以更新当前数据。我现在还不能具体说明。现在算法将是广泛的,不完全是实时的,但我将运行一个 cron 作业,以每小时或 2 小时左右将数据导出到 hadoop。我们将分析当前数据,如果需要更新,则更新旧数据。
算法将主要基于神经网络。
我正在查看的是:- 我应该在 MySQL 中运行我的数据挖掘查询,还是按照我上面解释的操作,或者通过将数据导出到 Oracle db 来做到这一点?
【问题讨论】:
您能否阐明您对 Oracle 的计划?您打算迁移到 Oracle 还是打算继续在 MySQL 中收集数据,而不是定期将数据导出到 Oracle,在那里进行处理,然后将结果拉回 MySQL? @olaf,这正是我想要做的。我更喜欢 hadoop 作为它的开源,但如果 oracle 足以处理非常大的数据和复杂的挖掘算法,那么它也应该这样做。而且我们不是在谈论 TB 的数据,可能远不止这些(在某个时间点的 PB)。 @olaf,我打算将数据收集在mysql中并定期导出 那么,MySQL 数据库将只是存储数据的中间位置,而数据的最终存放位置将在 Oracle 中,对吗?对于中等到相当大量的数据,这应该是一个很好的方法。如果您已经为具有分区和分析功能的 Oracle 许可证付费,那么这将是一条阻力最小的途径。如果没有,您可能会以此类 Oracle 许可证的价格构建一个小型(6 节点?)Hadoop 集群。 @olaf,我还没有支付 oracle 许可证的费用。这就是我想设计我的系统的方式:- 所有前端数据都来自 MySQL,通过 sqoop 导出到 hadoop。说 10 节点 hadoop 集群。我将在这里运行我所有的数据挖掘算法。然后所需的结果集将存储在 MySQL 中。每隔 1 小时左右,我将导入数据(cron 作业),再次对这些数据运行算法。如果需要,也可以运行过去数据的算法。我希望我的系统在每次运行算法时都变得更智能。 【参考方案1】:TPC-H 基准测试将是一个好的开始:http://www.tpc.org/tpch/default.asp。但是比较 Oracle 和 Hadoop 几乎就是比较苹果和橘子。我可以想象,对于关系数据库基准测试,Oracle 会击败 Hadoop 集群,而如果您的查询可以表示为 Map/Reduce 作业,那么 Hadoop 在性能/成本和可扩展性方面会击败 Oracle。
【讨论】:
【参考方案2】:我有两件事要说:
Hadoop is "not" a DB.
Comparing un-comparable things is useless, IMHO.
您不能使用 Hadoop 作为 RDBMS 的替代品。它不是为实时的东西而开发的。 Hadoop 最适合离线批处理的要求。正如@Olaf 所说,您正在尝试将苹果与橙子进行比较。但是你为什么需要这个?我的意思是通过查看你的用例,我觉得 Haddop 对你没有用处。
响应您的编辑:
最好的办法是在 MySQL 本身上运行查询。原因:
1- 导入/导出时间。
2- 就 MR 程序而言,实现所需的算法并不总是很容易。
3-1 小时的数据量不足以成为大数据,恕我直言。(我假设您打算只处理最新数据而不是整个数据集)。
【讨论】:
每次新数据出现时,算法都会在当前数据上运行,由于它是神经算法,因此它会不断改进,如果找到新结果,则会根据新结果在整个数据集上运行。这个想法是机器变得越来越聪明,并尽可能地获取相关数据。所以,它不会只是 1 小时数据,而是 1 小时数据 + 现有数据。 恕我直言,最好的选择是此时仅使用 MySQL。当您的数据实际开始超过当前系统的阈值时,您可以在稍后阶段使用 Hadoop。 你说的是对的。我的系统设计是对奥拉夫的回应的评论。但我不是在寻找一个短期的解决方案。我需要一个可以在未来 2-3 年内工作的系统。按照我收集数据的速度,达到 MySQl 阈值不会超过一两个月。我的 MySQL 对应表中已经有 2 亿行了。以上是关于Oracle 11g vs MySQL vs Hadoop:- 10^6 到 10^9 记录的基准测试的主要内容,如果未能解决你的问题,请参考以下文章
vs2015连接oracle 11g(.net自带方式 using System.Data.OracleClient;)