2013-12-10 31 views
6

我的用例是对资源进行审计日志记录。讨论考虑一个非常简单的模式:资源名称,访问时间戳和访问用户名。有了所有的NoSQL选项,我想知道哪种解决方案最适合我的用例?哪个NoSQL数据库最适合追加审计日志用例?

资源名称被保存在图形数据库(Neo4j)中,尽管我们可以将顶点和边添加到连接到资源顶点的审计顶点,但审计信息可能很大,我担心会污染相对简单的图。

我目前正倾向于一个文档数据库,如MongoDB或Couchbase,其中每个资源都有自己的文档,审计日志是该文档中的一个简单数组,附加到该文档中。我担心随着审计日志变长,整个文档必须在应用程序服务器和数据库之间交换,I/O可能会成为问题。我认为最大限度地减少这种情况的一个灵魂就是使每个审计条目都是自己的文档,并将其ID附加到父资源文档数组中。

搜索审计日志目前不是必需的,但是对于文档数据库,我觉得有一个很好的途径可以在以后集成Elastic Search。

看来Redis可能会更适合我的用例,但数据持久性并不像其他解决方案那样严格。

从概念上说,我想我正在寻找任何支持“附加”API方法调用而不需要交换太多信息的NoSQL解决方案。具有讽刺意味的是,这基本上是一个SQL INSERT语句,但是我担心传统的RDBMS不能满足我的规模要求。审计表会变得非常快,我宁愿利用最新和最好的NoSQL方法来进行分区/分片。

任何对日志附加用例的深入了解都将受到赞赏!

这些似乎是相似的,所以问题:

Database design for audit logging

NoSQL or RDBMS for audit data

感谢, 贾里德

+0

每秒多少次请求?你需要多长时间保存数据?老实说,postgres或mysql会很好,只是存档旧数据。分析数据也会更容易。 – scalabilitysolved

+0

伟大的问题,但可悲的是没有体面的反应,你最终选择哪种解决方案? –

回答

0

Apache Kafka是登录为本,高度可扩展的,并且允许订阅在多个消息不同的方式。