Couchdb 如何在Cloudant中为文档创建审核跟踪

Couchdb 如何在Cloudant中为文档创建审核跟踪,couchdb,cloudant,Couchdb,Cloudant,为cloudant中文档中发生的更改创建审计跟踪记录的正确方法是什么。需要创建一个单独的文档,该文档具有任何可区分的文档类型(如审计),记录任何文档中发生的更改(更新、删除等) 观察到一种叫做更新处理程序的方法,但这听起来更像是在将文档推入数据库之前使用某些内部字段(如时间戳)更新文档的方法 从关系数据库中进行类比,需要一个触发器,该触发器与表的更新和删除操作相关联,并在审计表中创建一个单独的记录,记录当前事务中更改的列。尽管Cloudant保留每个文档的修订历史,这不应用作版本控制系统,因为旧

为cloudant中文档中发生的更改创建审计跟踪记录的正确方法是什么。需要创建一个单独的文档,该文档具有任何可区分的文档类型(如审计),记录任何文档中发生的更改(更新、删除等)

观察到一种叫做更新处理程序的方法,但这听起来更像是在将文档推入数据库之前使用某些内部字段(如时间戳)更新文档的方法


从关系数据库中进行类比,需要一个触发器,该触发器与表的更新和删除操作相关联,并在审计表中创建一个单独的记录,记录当前事务中更改的列。

尽管Cloudant保留每个文档的修订历史,这不应用作版本控制系统,因为旧版本的主体在压实过程中会定期移除

一种方法是在数据库中采用“只写”模式。假设您的文档如下所示:

{
“_id”:“在Cloudant中,允许我们检索您文档的最新版本:

功能(doc){
发出([doc.ref,doc.ts],空);
}

这将创建一个键为
[doc.ref,doc.ts]
的视图,因此当我们想要获取文档的最新版本时,可以查询此视图:


GET/mydb/_design/mydesigndoc/_view/myview?endkey=[“abc123”]&startkey=[“abc123z”]&降序=true&限制=1&包含_docs=true


获取具有最新时间戳的版本。

尽管Cloudant保留每个文档的修订历史记录,但不应将其用作版本控制系统,因为在压缩过程中会定期删除旧修订的正文

一种方法是在数据库中采用“只写”模式。假设您的文档如下所示:

{
“_id”:“在Cloudant中,允许我们检索您文档的最新版本:

功能(doc){
发出([doc.ref,doc.ts],空);
}

这将创建一个键为
[doc.ref,doc.ts]
的视图,因此当我们想要获取文档的最新版本时,可以查询此视图:


GET/mydb/_design/mydesigndoc/_view/myview?endkey=[“abc123”]&startkey=[“abc123z”]&降序=true&限制=1&包含_docs=true


获取具有最新时间戳的版本。

这将使应用程序的其他细节复杂化,因为我在某些位置使用cloudant查询索引,应用程序不完全基于二级索引。我是否可以在update handler/validator中创建另一个文档,它将转储现有值,然后让更改的文档保持不变,或者类似的东西,使这个不可知于我的应用程序具有的任何其他依赖关系。理想情况下,它应该被视为一个方面,我可以独立于应用程序的行为来应用/删除。这会使应用程序的其他细节复杂化,因为我在某些地方使用cloudant查询索引,应用程序不是基于二级索引ly.我是否可以在update handler/validator中创建另一个文档,该文档将转储现有值,然后让已更改的文档持久化,或类似的操作,以使此不可知于我的应用程序具有的任何其他依赖关系。理想情况下,它应被视为一个方面,我可以独立于应用程序的行为应用/删除。