Model view controller 我应该使我的CouchDB数据库服务器面向公众吗?

Model view controller 我应该使我的CouchDB数据库服务器面向公众吗?,model-view-controller,architecture,couchdb,heuristics,Model View Controller,Architecture,Couchdb,Heuristics,我是新来的CouchDb,我试图理解如何正确地使用它。我来自MongoDB,在那里我总是写一个web层,并把它放在mongo前面,这样我就可以让用户访问其中的数据,等等。事实上,我就是这样使用我所写的每个网站的所有数据库的。所以,看看coach,我发现它的本机API是HTTP,它内置了OAuth支持等功能,这些功能向我暗示,也许我不应该再让代码层坐在coach前面,而应该编写视图等内容,并向coach的用户提供帐户?我的想法是为我的站点提供一个基于HTTP的API,或者用户可以通过它来使用我的数

我是新来的
CouchDb
,我试图理解如何正确地使用它。我来自
MongoDB
,在那里我总是写一个web层,并把它放在mongo前面,这样我就可以让用户访问其中的数据,等等。事实上,我就是这样使用我所写的每个网站的所有数据库的。所以,看看coach,我发现它的本机API是HTTP,它内置了OAuth支持等功能,这些功能向我暗示,也许我不应该再让代码层坐在coach前面,而应该编写
视图
等内容,并向coach的用户提供帐户?我的想法是为我的站点提供一个基于HTTP的API,或者用户可以通过它来使用我的数据。不过,像这样打开沙发对我来说似乎很奇怪。在coach的意义上,OAuth更多的是用于远程访问我将在自己的网络内部“正式”编写和运行的软件,还是它的字面意思是用于最终用户

我知道有些事情可能只能通过CouchDB之上的代码层来完成,比如如果您希望在API请求期间发生其他与数据库无关的事情。因此,按照这些思路考虑,无论如何,我认为我仍然需要一个代码层。

经销商的选择

Nodejitsu在这类话题上写得很好

由于不知道您的应用程序细节,我将采取广泛的方法

后端 如果您想阻止用户查看您的数据库,请将其设置为后端。您可以通过node.js之类的管道传递所有内容,只显示用户需要查看的内容,而他们永远不会知道关于数据库的任何信息。 看

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

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

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

简单地说,不是

在一个面向公众的网站上,并没有办法保证沙发的安全。没有办法在足够精细的粒度级别上区分访问。如果有人可以访问任何数据,他们就可以访问所有数据


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

为什么移动客户端不能在网站上使用API,而该API在后台与CouchDB进行通信?这样你就能控制访问吗?你当然可以,这就是“bl端”选项。有很多方法可以开发SOA风格的API接口,该接口公开CouchDB数据以及来自其他服务的数据。