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

时间:2010-05-05 14:59:16

标签: logging nosql audit-trail

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

  

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

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