什么是审计/日志数据库的NoSQL和非关系数据库解决方案

最后发布: 2010-05-05 14:59:16


问题

什么是适合以下的数据库? 我对你使用非关系型NoSQL系统的经历特别感兴趣。 它们是否适用于这种用法,您使用过哪个系统并建议使用,或者我应该使用普通的关系数据库(DB2)?

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

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

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

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

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

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


回答

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

它是一个高级数据结构服务器,可以存储任何二进制安全数据,本机支持字符串,列表,集合,有序集和哈希。 根据对邮件列表的讨论,很多人都会大量使用它来存储分析。


回答

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

是的你应该! 如果你只想存储东西并扫描它,你也可以写一个文件。 非常快,没有开销! 但是,随着时间的推移,你想要总结数据的那一刻(最后24小时,或者在时间t和t + 1之间),你越是关心数据而不是文本行,那么毫无疑问,正确的RDBMS是你的朋友。