16

什么是适合以下的数据库?我对您在非关系型NoSQL系统方面的经验特别感兴趣。它们对这种用法有什么好处,您使用过并推荐使用哪个系统,还是我应该使用普通的关系数据库(DB2)?

我需要将大量来源的审计跟踪/日志记录类型信息收集到一个集中式服务器,在那里我可以有效地生成报告并检查系统中发生的情况。

通常,审计/记录事件总是包含一些必填字段,例如

  • 全局唯一 ID(生成此事件的程序如何生成)
  • 时间戳
  • 事件类型(即用户登录、发生错误等)
  • 有关源(server1、server2)的一些信息

此外,该事件可能包含 0-N 个键值对,其中值可能高达几千字节的文本。

  • 它必须在 Linux 服务器上运行
  • 它应该适用于大量数据(例如 100GB)
  • 它应该支持某种高效的全文搜索
  • 它应该允许并发读写
  • 添加新事件类型和向新事件添加/删除键值对应该是灵活的。灵活=不需要更改数据库架构,生成事件的应用程序可以根据需要添加新的事件类型/新字段。
  • 对数据库进行查询应该是有效的。用于报告和探索发生的事情。例如:
    • 在某个时间段内发生了多少 type=X 的事件。
    • 获取字段 A 的值为 Y 的所有事件。
    • 获取类型为 X 且字段 A 的值为 1 且字段 B 不是 2 且事件发生在过去 24 小时内的所有事件
4

3 回答 3

4

我见过成功使用的两个是MongoDBCassandra

于 2010-05-05T15:08:19.147 回答
2

我应该使用普通的关系数据库(DB2)吗?

是的你应该!如果您只想存储内容并对其进行扫描,则不妨写入文件。非常快,没有开销!但是,随着时间的推移(过去 24 小时,或时间 t 和 t+1 之间)您想要汇总数据的那一刻,您就越关心数据而不是文本行,毫无疑问,合适的 RDBMS 是您的朋友。

于 2010-09-18T21:11:41.613 回答
2

我们使用Redis为 mflow.com 上的所有应用服务器执行所有集中式日志记录。它非常快,基于这些基准,它每秒执行大约 110000 次 SET,每秒大约 81000 次获取。它有一个 VM 实现(如果您的数据集超过可用内存),它将不常用的值换出到磁盘。

它是一个高级数据结构服务器,可以存储任何二进制安全数据,并原生支持字符串、列表、集合、排序集合和散列。根据邮件列表上的讨论,很多人大量使用它来存储分析。

于 2010-09-11T16:06:20.837 回答