Clojure与CouchDB:数据处理与Web开发的完美结合
1. 视图函数需为纯函数
在编写视图时,要记住无法控制视图何时被调用以及调用的次数。使用JavaScript编写视图时,CouchDB的这一实现细节无关紧要,因为JavaScript没有进行I/O或其他有副作用操作的功能。但用Clojure(或其他非JavaScript语言)编写视图时,必须确保所写的函数是纯函数。例如,每次视图处理 sales/purchase 类型的事件时都发送通知邮件会是一场灾难,因为每次购买事件文档更改、数据库压缩,或者CouchDB决定使该购买文档的视图结果无效时,都会发送邮件。
2. 滥用CouchDB作为消息队列:_changes
CouchDB提供了一个变更通知API(称为 _changes ),它让客户端在定义如何响应数据流方面有很大的灵活性。 _changes 的工作流程如下:
1. 向感兴趣的CouchDB数据库的 _changes URL打开一个HTTP连接。
2. 等待。当相关数据库发生任何更改(任何文档的创建、删除或更新)时,会向客户端发送一个JSON映射,描述受影响的文档ID和修订版本。
3. 如果选择持续接收更改通知,则从步骤2重复。
下面是一个使用Clojure通过 Clutch 的 watch-changes 函数将所有更改通知回显到 *out* 的示例:
Clojure与CouchDB:数据处理与Web开发结合
超级会员免费看
订阅专栏 解锁全文
1926

被折叠的 条评论
为什么被折叠?



