日志查看实用程序数据库选项



我将很快实现日志查看实用程序。但我坚持选择数据库。我的要求如下:

  • 每天存储 5 GB 数据
  • 5 TB 数据的总大小
  • 不到 10 秒的时间内搜索此日志数据

我知道如果我对表进行分段,PostgreSQL 将起作用。但是我能把这个表演写在上面吗?据我了解,NoSQL是日志存储的更好选择,因为日志不是很结构化。我看到了下面这样的例子,使用hadoop-hbase-lucene似乎很有希望:http://blog.mgm-tp.com/2010/03/hadoop-log-management-part1/

但在决定之前,我想问一下以前是否有人做过这样的选择,可以给我一个想法。哪种 DBMS 最适合此任务?

我的日志非常结构化:)

我会说你不需要数据库,你需要搜索引擎:

  • 基于Lucene的Solr,它将您需要的所有内容打包在一起
  • ElasticSearch 另一个基于 Lucene 的搜索引擎
  • 狮身人面像的好处是,你可以为每个搜索索引使用多个来源——用其他事件丰富你的原始日志
  • 抄写Facebook搜索和收集日志的方式

@JustBob更新:大多数提到的解决方案都可以处理不影响性能的平面文件。然后,所有这些都需要倒排索引,这是最难构建或维护的部分。您可以在批处理模式下或在线更新索引。索引可以存储在RDBMS,NoSQL或自定义"平面文件"存储格式(自定义 - 由搜索引擎应用程序维护)

你可以在这里找到很多信息:

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

看看哪个适合您的需求。

无论如何,对于这样的任务,NoSQL是正确的选择。


你还应该考虑学习曲线,MongoDB/CouchDB,即使它们不像Cassandra或Hadoop那样执行,它们也更容易学习。

Craigslist使用MongoDB来存储旧档案:http://www.10gen.com/presentations/mongodb-craigslist-one-year-later

最新更新