Architecture 用CouchDB后端设计日志系统

Architecture 用CouchDB后端设计日志系统,architecture,logging,couchdb,Architecture,Logging,Couchdb,我正在考虑设计一个基于CouchDB的事件日志系统 存储每个事件的好方法是什么 一份以事件为“附件”的文档 每个活动一份文件 每个事件类型一个文档,事件作为附件 其他?我会为事件设置一个文档。若它是事件日志系统,那个么事件就是主要实体,对吗?所以我认为它应该是文件,而不仅仅是一些附件。此解决方案在搜索/筛选事件时为您提供了灵活性。我肯定也会为每个事件选择一个文档。除了阿莫菲斯的回答之外,除非您非常小心地序列化更新,否则在更新期间使用附件可能会导致对文档的争用。只需在事件发生时将事件作为文档扔进c

我正在考虑设计一个基于CouchDB的事件日志系统

存储每个事件的好方法是什么

  • 一份以事件为“附件”的文档
  • 每个活动一份文件
  • 每个事件类型一个文档,事件作为附件

  • 其他?

    我会为事件设置一个文档。若它是事件日志系统,那个么事件就是主要实体,对吗?所以我认为它应该是文件,而不仅仅是一些附件。此解决方案在搜索/筛选事件时为您提供了灵活性。

    我肯定也会为每个事件选择一个文档。除了阿莫菲斯的回答之外,除非您非常小心地序列化更新,否则在更新期间使用附件可能会导致对文档的争用。只需在事件发生时将事件作为文档扔进couchdb,并使用视图对事件进行切片和切分以进行分析。

    hmmm。。。couchDB中的争用?我以为它是基于一个没有锁定的“修订”系统。请解释?如果您有当前版本,您只能更新文档(包括添加附件)。每次存储文档时都会分配一个新版本。因此,如果有很多东西试图更新一个文档,例如大量的日志记录者,那么他们最终可能会为文档“争吵”。失败者会重新加载文档并重试。我知道这是旧的,但我已经成功地使用这种方法完成了couchdb日志系统。我有超过200台机器在报告,它工作得很好。