5

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

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

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

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

4

2 回答 2

5

我的日志非常结构化:)

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

  • Solr基于 Lucene,它将您需要的所有东西打包在一起
  • ElasticSearch另一个基于 Lucene 的搜索引擎
  • Sphinx的好处是您可以为每个搜索索引使用多个来源——使用其他事件丰富您的原始日志
  • Scribe Facebook 搜索和收集日志的方式

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

于 2012-11-19T09:05:29.223 回答
4

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

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

于 2012-11-19T08:35:42.130 回答