我已经使用 CouchDB 和 CouchApp 一段时间了。我计划将它用于我正在开发的一个新网站项目。
-
从可扩展性的角度来看,我喜欢 CouchApp 的想法。
缺点是,由于没有服务器端代码,有些事情(例如 oAuth 身份验证)很难在客户端完成。在某些时候,我确信我将需要一些描述性的服务器端代码 - 我想您可以查看 Node.js,但此时不希望这样做。
-
当您的页面由另一台服务器提供服务时,使用 CouchDB 纯粹作为后端解决方案也是一个很好的选择,但这里的缺点是跨域问题使您无法轻松使用内置的 CouchDB API。
那么有人能解决这两个缺点之一吗?
您能否以某种方式从 CouchApp 提供服务器端代码(甚至 PHP 也将是一个胜利),或者您能否以某种方式使用单独的站点来为您的页面提供服务,但克服跨域问题?
我真的试图让解决方案尽可能干净(和可扩展),CouchDB 的伟大之处之一就是超级简单、超级快速的 API,所以我真的不想在它周围使用包装器 - 除非它不这样做不妨碍性能/可扩展性。
欢迎您提出意见。
由于 CouchDB 使用基于 HTTP 的 API,因此有多种方法可以将服务器端代码(node.js、PHP 等)与 CouchApp 进行“混合和匹配”。
我将选项分为三类:
- 首先,您现在拥有的是 2 层架构:浏览器 + 由 CouchDB 提供服务的 CouchApp。对于只需要浏览器和 CouchDB 所能提供的功能的应用程序来说,这是一个很好的解决方案,但是当您需要发送电子邮件、调整图像大小或从另一个不需要的数据库获取数据时,您将需要另一层有一个 HTTP API(MySQL、MongoDB 等)。
- 接下来是 3 层架构:浏览器 + Apache/PHP(或类似堆栈)+ CouchDB。这是更“传统”的选项(即 LAMP)。这对于逐步迁移到 CouchDB 来说很好,但从长远来看,必须通过第二个 HTTP 服务器(也许作为代理)或服务器端脚本语言(例如 PHP)路由所有内容可能会变得很麻烦。
- 最后,也是我最喜欢的,是 2.5 层架构:浏览器 + CouchDB + 外部或 _changes 基于提要的“操作”。在这种情况下,PHP(或类似的)充当 CouchDB 的某种服务提供者。可以通过让 PHP 监视某些类型文档及其更改(即图像上传、电子邮件消息文档)的 _changes feed 来触发操作,或者可以将 CouchDB 设置为“ping”_external 处理程序以对文档进行进一步处理或其附件。这本质上就是 couchdb-lucene 的工作原理,即监视更新并在更新发生时或定期对其采取行动。
您可以在下面找到有关 _changes feed 和 _external 处理程序的更多信息:
- _更改提要:http://guide.couchdb.org/draft/notifications.html http://guide.couchdb.org/draft/notifications.html
- _外部处理程序:http://wiki.apache.org/couchdb/ExternalProcesses http://wiki.apache.org/couchdb/ExternalProcesses
无论其价值如何,我将在下周三讨论这三个选项PHP 和 CouchDB 网络广播 http://oreillynet.com/pub/e/1785。您的问题将为网络广播结束时的讨论提供宝贵的补充。
我很想知道您的 CouchApp 结果如何,以及您如何解决上述问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)