我有一个Oracle数据库(大约12亿条记录)的数据,其上面有一个Web应用程序,可以生成查询(生成SQL代码并返回计数)。基本上,您通过AJAX UI以图形方式生成SQL查询......并且它在性能方面运行得非常好。
这大约是400 GB的数据库。我一直在寻找Hadoop并考虑使用它而不是Oracle(让我的应用程序生成HIVE查询代码),但在我看来它似乎是一种矫枉过正的......不是hadoop的目标更多是几十TB到PB级比例数据集?是否适合代替我正在做的任务的关系数据库(如Oracle)?
答案 0 :(得分:4)
没有更多细节,很难说。但是,根据我的经验,如果所有数据都在SQL中,那么SQL引擎可能比简单的map reduce有更多的优化。
如果不知道你想要什么,以及数据的状态,那么除非你在你的环境中遇到一些主要的边缘情况,否则在你的情况下设置和使用hadoop可能会有更多的麻烦,它可能不会最终需要更长的时间。
如果您在Oracle中拥有所有数据,那么它可能都会被解析,编入索引,并且希望有些规律。如果完全存在于该域中(并且您没有尝试使用像大量BLOB或其他奇怪的情况那样不常见的东西),那么大多数情况下它更好地让您的数据库引擎处理它。
故事的道德:
Hadoop非常棒,但事实并非如此 魔术,并不会使常规的旧SQL更快!
答案 1 :(得分:3)
是不是hadoop更倾向于数十TB到PB级的数据集?
也许。但它适用于各种各样的问题。它也适用于Hadoop“功能”编程风格有用的非常小的数据集。
SQL不是完美的查询语言。它被广泛采用。
对于我正在做的任务,是否适合代替关系数据库(如Oracle)?
没有太多要求,几乎不可能说出来。但是,如果您正在进行大量插入,更新和删除的事务性事务,则可能需要SQL RDBMS。
如果你没有做复杂的交易;如果你正在进行批量加载和批量查询,那么数据库就会妨碍你。文件系统会更快。而且往往更简单。
答案 2 :(得分:2)
基本上如果没有破坏的东西不要试图修复它。从我在维基百科中读到的内容来看,它肯定是一种矫枉过正,但除此之外,你说应用程序“在性能方面运行得非常好。”