49、Clojure与CouchDB:数据处理与Web开发的完美结合

Clojure与CouchDB:数据处理与Web开发结合

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* 的示例:


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值