我的用例是资源的审计日志记录。有关讨论,请考虑一个非常简单的模式:资源名称,访问时间戳和访问用户名。有了所有的NoSQL选项,我想知道哪种解决方案最适合我的用例?
资源名称保存在图形数据库(Neo4j)中,虽然我们可以将顶点和边缘添加到连接到资源顶点的审计顶点,但审计信息可能很大,我担心污染一个相对简单的图形。 / p>
我目前正倾向于使用MongoDB或Couchbase等文档数据库,其中每个资源都有自己的文档,审计日志是本文档中附加的简单数组。我担心I / O可能会成为一个问题,因为审计日志变长,整个文档必须在应用服务器和数据库之间交换。我认为最小化这一点的一个观点是使每个审计条目成为自己的文档,并将其ID附加到父资源文档数组。
目前不需要搜索审核日志,但是对于文档数据库,我觉得以后可以很好地集成Elastic Search。
看起来Redis可能对我的用例更加优化,但数据持久性并不像其他解决方案那样严格。
从概念上讲,我想我正在寻找支持“附加”API方法调用的任何NoSQL解决方案,而无需交换太多信息。具有讽刺意味的是,这基本上是一个SQL INSERT语句,但我担心传统的RDBMS不符合我的规模要求。审计表会变得非常快,我宁愿利用最新和最好的NoSQL方法进行分区/分片。
对日志附加用例的任何见解都表示赞赏!
这些似乎是类似的问题:
Database design for audit logging
谢谢, 贾里德