如何为Cloudant中的文档创建审计跟踪

时间:2016-05-24 06:57:27

标签: couchdb cloudant

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

观察到名为更新处理程序的内容,但这听起来更像是在数据库中推送文档之前使用某些内部字段(如时间戳)更新文档的方法。

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

1 个答案:

答案 0 :(得分:4)

虽然Cloudant会保留每个文档的修订历史记录,但不应将其用作版本控制系统,因为在修改过程中会定期删除旧修订版的主体。

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

ProjectB

每次要创建文档“abc123”的新版本时,只需使用新时间戳(ts)将新文档插入同一数据库即可。

{ "_id": "<autogeneratedid>", "_rev: "<autogeneratedrev>", "ref": "abc123", "ts": 1464074759315, "status": "provisional", "name": "the name", "body": "## document body" }

然后我们可以在Cloudant中创建secondary index,以便我们检索文档的最新版本:

{ "_id": "<autogeneratedid>", "_rev: "<autogeneratedrev>", "ref": "abc123", "ts": 1464074866595, "status": "live", "name": "the new name", "body": "## new document body" }

这会创建一个关键字为function(doc) { emit([doc.ref, doc.ts], null); } 的视图,因此当我们想要获取文档的最新版本时,我们可以查询此视图:

[doc.ref, doc.ts]

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