我的用例是资源的审核日志记录。为了进行讨论,考虑一个非常简单的模式:资源名称、访问时间戳和访问用户名。有了所有 NoSQL 选项,我想知道哪种解决方案最适合我的用例?
资源名称保存在图形数据库(Neo4j)中,虽然我们可以将顶点和边添加到连接到资源顶点的审计顶点,但审计信息可能很大,我担心会污染相对简单的图形。
我目前倾向于使用 MongoDB 或 Couchbase 等文档数据库,其中每个资源都有自己的文档,并且审核日志是该文档中附加的一个简单数组。我担心 I/O 可能会成为一个问题,因为审核日志会变得很长,并且整个文档必须在应用程序服务器和数据库之间交换。我认为可以最大限度地减少这种情况的一个办法是让每个审计条目都有自己的文档,并将其 ID 附加到父资源文档数组中。
目前不需要搜索审核日志,但有了文档数据库,我觉得以后有一个集成 Elastic Search 的好方法。
看来 Redis 可能更适合我的用例,但数据持久性似乎不像其他解决方案那么严格。
从概念上讲,我想我正在寻找任何支持“追加”API 方法调用而不需要交换太多信息的 NoSQL 解决方案。讽刺的是,这基本上是一个 SQL INSERT 语句,但我担心传统的 RDBMS 无法满足我的规模要求。审计表会很快变得巨大,我宁愿利用最新、最好的 NoSQL 方法来进行分区/分片。
任何有关日志附加用例的见解都将受到赞赏!
这些似乎是类似的问题:
审计日志记录的数据库设计 https://stackoverflow.com/questions/2015232/database-design-for-audit-logging
用于审计数据的 NoSQL 或 RDBMS https://stackoverflow.com/questions/15405014/nosql-or-rdbms-for-audit-data
谢谢,
贾里德
阿帕奇·卡夫卡 https://kafka.apache.org/面向日志,高度可扩展,并允许以多种不同方式订阅消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)