什么是适合以下的数据库?我对您在非关系型NoSQL系统方面的经验特别感兴趣。它们对这种用法有什么好处,您使用过并推荐使用哪个系统,还是我应该使用普通的关系数据库(DB2)?
我需要将大量来源的审计跟踪/日志记录类型信息收集到一个集中式服务器,在那里我可以有效地生成报告并检查系统中发生的情况。
通常,审计/记录事件总是包含一些必填字段,例如
- 全局唯一 ID(生成此事件的程序如何生成)
- 时间戳
- 事件类型(即用户登录、发生错误等)
- 有关源(server1、server2)的一些信息
此外,该事件可能包含 0-N 个键值对,其中值可能高达几千字节的文本。
- 它必须在 Linux 服务器上运行
- 它应该适用于大量数据(例如 100GB)
- 它应该支持某种高效的全文搜索
- 它应该允许并发读写
- 添加新事件类型和向新事件添加/删除键值对应该是灵活的。灵活=不需要更改数据库架构,生成事件的应用程序可以根据需要添加新的事件类型/新字段。
- 对数据库进行查询应该是有效的。用于报告和探索发生的事情。例如:
- 在某个时间段内发生了多少 type=X 的事件。
- 获取字段 A 的值为 Y 的所有事件。
- 获取类型为 X 且字段 A 的值为 1 且字段 B 不是 2 且事件发生在过去 24 小时内的所有事件