什么数据库用于扩展日志文件分析?

时间:2013-01-09 08:51:56

标签: sql database nosql analysis logfile

任务是从完成的研究项目中过滤和分析大量的日志文件(大约8TB)。我们的想法是用数据填充数据库,以便以后能够运行不同的分析任务。

值以逗号分隔存储。原则上,这些值是最多5个值的元组:

id, timestamp, type, v1, v2, v3, v4, v5

在第一次尝试使用MySQL时,我使用了一个表,每行有一个日志条目。所以日志值之间没有直接关系。这里的缺点是对子集的查询速度很慢。

由于没有关系,我研究了像NoSQL数据库这样的替代方案,而像hbase或cassandra这样的基于列的表似乎非常适合这种数据。但是这些系统是为大型分布式系统而制造的,我们没有。在我们的例子中,分析将在一台机器或某些VM上运行。

哪种数据库适合此任务?是否值得使用hadoop + hbase设置单个机器实例...或者这有点过大吗?

您会选择哪种数据库来执行高性能日志文件分析?

编辑:我的问题可能并不清楚,我们不能花钱购买云服务或新硬件。问题是使用noSQL方法而不是mySQL(特别是对于这些数据)有好处。如果没有,或者它们太小,以至于设置noSQL系统的努力不值得,我们可以使用我们的ESXi基础设施和MySQL。

EDIT2:我在这里仍然遇到问题。我做了进一步的MySQL实验,只插入了四分之一的可用数据。插件现在运行超过2天,尚未完成。目前我的单表db中有2,147,483,647行。使用indeces,这需要211.2 GiB的磁盘空间。这只是所有测井数据的四分之一...... 表格的查询

SELECT * FROM `table` WHERE `timestamp`>=1342105200000 AND `timestamp`<=1342126800000 AND `logid`=123456 AND `unit`="UNIT40";

需要761秒才能完成,在这种情况下返回一行。 时间戳,logid,unit上有一个组合索引。

所以我认为这不是可行的方法,因为稍后我将需要在一个时间范围内获取所有条目并比较数据点。

我读过关于MongoDB和Redis的内容,但问题是它们存在于内存数据库中。

在后面的分析过程中,将有非常少量的并发数据库访问。事实上,分析将从一台机器上运行。 我不需要冗余。如果发生故障,我将能够重新生成数据库。 当数据库一次完全写入时,也不需要更新或添加更多行。

您如何看待Redis,MongoDB等替代品。当我做对了,我需要数据维度的RAM ... 使用单个节点系统或可能有两个节点,这个任务是否可能以某种方式实现?

1 个答案:

答案 0 :(得分:0)

我个人更喜欢更快的解决方案,正如您所说,您需要进行高性能分析。问题是,如果你必须设置一个全新的系统,并且性能改进与你需要的额外工作相比会很小,那么请继续使用SQL。

在我们公司,我们有一个非常小的数据库,在VM上甚至不包含半GB的数据。现在的问题是,只要你使用虚拟机,你就会遇到重大的性能问题,当在虚拟机上打开数据库时,你可以在此期间去喝咖啡;)

但是,如果将数据库加载到缓存的时间不是那么重要,那么无关紧要。这一切都取决于你认为新系统的速度有多快,以及你需要付出多少努力,但正如我所说,如果你不得不进行“高性能分析”,我更喜欢更快的解决方案。