我在问自己,为什么我应该使用Node.js + CouchDB的组合而不是CouchDB独立的方法。让Node.js加入游戏有什么好处?欢迎任何评论/经验。
发布于 2011-12-09 06:34:55
节点可以做什么,而CouchDB不能
Node.js可以使用unix套接字进行进程间通信,实时上传文件,它可以启动websocket服务器,甚至可以启动SPDY服务器。
你可以创建DNS服务器,甚至可以处理一些地理目标的东西(MaxMind db)。
CouchDB可以做的好东西
然而,您可以使用CouchDB做许多有趣的事情,即使它们会更难实现。例如,使用_changes特性,您可以进行进程间通信,即实时聊天系统(长轮询)。
我不是专家(但CouchDB在我的学习列表中是最优先的),但我猜您也可以为登录的用户模拟会话。
CouchDB很棒,Node.js也很棒,所以重要的是你计划开发什么应用程序,你的用例是什么。
发布于 2012-03-01 05:42:03
还有第三种选择: CouchDB在前面,Node.js在后面……
传统上,数据库在后端,而不是前端,所以这种配置看起来有点“向后”,但听我说完……
在这种配置中,您仍然从CouchDB (而不是Node )为所有页面提供服务,并且使用Node作为一种“工作进程”,轮询数据库中的“作业”,处理它们,并将“结果”插入数据库。通过这种方式,您可以使用Node的全部功能进行特殊处理,但保留了从CouchDB为应用程序提供服务的所有好处。
实际上,在这种配置中,您可以有任何类型的专门工作程序来运行Python、Java或Ruby或其他任何程序。例如,假设您的网站上有一个" create -PDF“函数,并且您希望使用Python实际创建PDF。您只需编写一个python程序来监视CouchDB中是否有任何"PDF_Request“文档,对其进行处理,然后将其插入到CouchDB中。您不必使用Python编写整个应用程序,您可以只使用Python编写PDF创建函数,并保留应用程序的其余部分不变。
现在,假设您将CouchApp复制到另一台计算机或移动设备(它运行CouchDB,但不运行Node或Python )没有问题,您仍然可以在CouchDB中插入"PDF_Request“。当您最终与服务器同步时,您的PDF请求将被pdf creator程序看到并处理,您将获得PDF文件。即使不存在“辅助程序”,您的couchapp仍然可以在复制的CouchDB上运行,因为它们与主应用程序完全解耦。
我并不是说这是“可行的方法”,只是因为CouchDB的性质,这种配置实际上是一个可行的选择,并将为您提供扩展和复制的好处,如果您将Node放在前面,CouchDB放在后面,您将无法获得这些好处。
发布于 2012-03-31 11:01:08
尼克的回答特别耐人寻味。为了强调这种方法,以下是Mikeal Rogers在CouchOne工作时的一段视频(?)建议使用couchdb +节点后置方法:http://nosql.mypopescu.com/post/2896329122/node-js-couchdb-crazy-delicious。
另一方面,我认为有一个领域甚至连这种创新方法都失败了,那就是(更复杂的)安全性。基本的安全级别可以很好地工作,但是如果您想要由更复杂的安全级别控制内容,couchdb的map-reduce不能减少。但是,一些简单的node.js可以。
因此,出于某些安全原因(即,为了避免不安全的map-reduce结果),node.js可以更好地在前端实现这些安全措施。
仅供参考。
https://stackoverflow.com/questions/8438309
复制相似问题