【问题标题】:What Database for extensive logfile analysis?什么数据库用于广泛的日志文件分析?
【发布时间】:2013-01-09 08:51:55
【问题描述】:

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

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

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

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

因为没有关系,所以我研究了 NoSQL 数据库等替代品,而 hbase 或 cassandra 等基于列的表似乎非常适合此类数据。但是这些系统是为我们没有的大型分布式系统而设计的。在我们的例子中,分析将在单台机器或一些虚拟机上运行。

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

您会选择什么数据库来进行高性能日志文件分析?

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

EDIT2:我在这里仍然遇到问题。我对 MySQL 做了进一步的实验,只插入了所有可用数据的四分之一。该插件现在运行了 2 天以上,尚未完成。目前我的单表数据库中有 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、单位有组合索引。

所以我认为这不是要走的路,因为在稍后的分析中,我必须获取时间范围内的所有条目并比较数据点。

我阅读了有关 MongoDB 和 Redis 的信息,但它们的问题是,它们位于内存数据库中。

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

您如何看待 Redis、MongoDB 等替代方案。当我做到这一点时,我需要数据维度的 RAM ...... 单节点系统或两个节点是否有可能完成这项任务?

【问题讨论】:

  • 如果您需要这样做但没有相应的系统,您可以看看像亚马逊这样的解决方案,您可以在指定时间内使用它们。与投资硬件相比,这使您能够非常简单且经济地进行此类大数据分析。
  • 出于隐私和财务方面的考虑,我们不能使用像亚马逊这样的资源。
  • 好的,明白了,接下来是一个重要的问题:你有多少硬件?这是8TB的数据,根据您拥有的系统,我们可以给出更明确的答案。现在发生的情况是,您要求提供性能建议,但没有提供以下信息:系统、它们的性能、它的可用性(你可以在没有其他用户的情况下使用它几天)以及你想做什么样的分析。所有缺失的部分使得无法给出好的建议。需要明确的是:您将需要一些重要的内存来分析 8TB 的数据。但是,例如,如果您可以拆分它,我们的创建聚合就更容易了。
  • 有几个 ESXi 服务器可以使用,可能只有一个(8 核 24GB RAM)。分析将类似于“给我所有 id=x 和 type=y 以及范围内的时间戳的日志条目......”然后我们将查看这些值以分析项目特定参数。确切的分析问题还有待确定。日期应采用我们可以轻松进行此类分析的形式。

标签: sql database nosql analysis logfile


【解决方案1】:

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

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

但是,如果数据库加载到缓存之前的时间不是那么重要,那也没关系。这完全取决于您认为新系统的速度有多快,以及您必须投入多少精力,但正如我所说,如果您必须进行“高性能分析”,我更喜欢更快的解决方案

【讨论】:

  • 问题是:更快的解决方案是什么?我在 noSQL 方法和不在分布式系统上运行时的性能方面没有经验。也许安装新的 noSQL 单节点服务器的努力不值得小小的性能提升。当说“高性能”时,我的意思是相对于数据量的相对快速的查询。
  • 我也没有这方面的经验,所以我只是说出了我的想法。无论哪种方式,您都必须自己决定,并且在单节点模式下,我想这两种尝试都会很慢。执行速度更快的解决方案显然是 sql 尝试,从性能的角度来看,这取决于您需要多久分析一次数据。我认为实现一些你全新的东西只是运行 10 次然后丢弃是不合理的。 [...]
  • [...] 您分析得越频繁,通过更快的解决方案赢得的时间就越多,但是您必须考虑实施它需要多长时间。根据您的描述,我认为这确实是一些“一次又一次”的任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多