我应该让我的CouchDB数据库服务器面向公众吗?

时间:2012-12-11 00:43:52

标签: model-view-controller architecture couchdb heuristics

我是CouchDb的新手,正在尝试理解如何正确使用它。我来自MongoDB,我总是写一个网络层并将它放在mongo前面,以便我可以允许用户访问其中的数据等。事实上,这就是我的方式使用了我写过的每个网站的所有数据库。所以,看看Couch,我发现它的原生API是HTTP,它内置了OAuth支持等内容,以及其他暗示我的功能,也许我不应该让我的代码层位于Couch前面,而是写Views和事情,然后向我的用户提供Couch帐户?我正在考虑像我的网站的基于HTTP的API,或用户将通过我的数据消费的东西。尽管如此,打开这样的Couch对我来说似乎很奇怪。从Couch的意义上来说,OAuth对于我正在编写并在我自己的网络内部“正式”运行的软件的远程访问意味着什么,或者它是否真正意味着最终用户?

我知道可能只能通过CouchDB上的代码层来完成这些事情,就像您希望在API请求期间发生其他非数据库相关的事情一样。因此,我认为我仍然需要一个代码层。

2 个答案:

答案 0 :(得分:3)

经销商的选择。

Nodejitsu对这类主题here有很好的写作。

不了解您的具体应用我将采取广泛的方法......

后端

如果您想阻止用户查看您的数据库,请将其设为后端。您可以通过像node.js之类的东西来管道所有内容,并且只显示用户需要查看的内容,并且他们永远不会知道有关数据库的任何信息。 见Resource View Presenter

前端

如果您不关心数据安全性,可以在CouchDB上托管整个应用程序;见CouchApp。此方法的好处是可以使用复制机制来控制发布站点/数据。这里的缺点是你几乎肯定会遇到一些技术限制,需要将CouchDB移到后端附近。

B1中端

让应用服务器显示接口,客户端分别从数据库中提取数据。这提供了最大的灵活性,但可能会造成伤害,因为即使设计良好,也可能导致可支持性和可伸缩性问题。

我的推荐

在后端使用CouchDB。如果您需要移动客户端进行同步,请使用为此目的公开公开的辅助数据库,并有选择地将此数据同步到需要的位置。

答案 1 :(得分:1)

简单地说,不。

在面向公众的网站上无法正确保护Couch。没有办法在足够精细的粒度级别上区分访问。如果有人可以访问任何数据,他们就可以访问所有数据。

并非所有网站上的数据都是供公众使用的,除了最简单的网站。