我应该将我的CouchDB数据库服务器设为公共访问吗?

7
我对CouchDb还比较陌生,正在尝试理解如何正确使用它。以前我用的是MongoDB,通常会编写一个Web层并将其放在Mongo之前,以便允许用户访问其中的数据等。实际上,这是我编写的每个网站上所使用的所有数据库方式。因此,看着Couch,我发现它的本机API是HTTP,并且它内置了一些东西,例如OAuth支持和其他功能,这些功能提示我也许不再需要让我的代码层坐在Couch的前面,而是编写视图和其他东西,然后只向我的用户提供Couch帐户?我考虑的是像我的站点的基于HTTP的API或用户通过消费我的数据的某些东西。但是,这样打开Couch对我来说似乎很奇怪。在Couch的意义上,OAuth更多地用于我编写和运行在自己网络内部的软件的远程访问,还是真正面向最终用户的?

我知道可能有一些事情只能通过在CouchDB顶部添加代码层才能完成,例如,如果您想在API请求期间执行其他与数据库无关的操作,那么我仍然认为我需要一个代码层。

2个回答

4

随意选择。

Nodejitsu在这方面有一篇很好的文章,可以在这里阅读。

不知道您的应用程序具体情况,我会采取广泛的方法...

后端

如果您想防止用户看到数据库,则使其成为后端。您可以通过类似于node.js的东西来传输所有内容,并仅呈现用户需要看到的内容,他们将永远不会了解数据库的任何信息。 请参见资源视图演示器

前端

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

混合

让应用程序服务器呈现界面,然后客户端从数据库单独提取数据。 这样最灵活,但可能会导致支持性和可扩展性问题。

我的建议

在后端使用CouchDB。 如果需要移动客户端进行同步,则使用公开暴露的第二个数据库来完成此目的,并将此数据有选择地同步到需要去的任何地方。


为什么移动客户端不能使用网站上的API与后端的CouchDB通信?这样你就可以控制访问了。 - Piotr Kula
当然可以,那就是“bl-end”选项。有很多方法可以开发SOA风格的API接口,将CouchDB数据以及其他服务的数据暴露出来。 - Jake

1

简单来说,不行。

在公共网站上,没有办法正确地保护Couch。没有办法以足够细粒度的方式区分访问权限。如果某人可以访问任何数据,则可以访问所有数据。

并非所有网站上的数据都适合公开使用,除了最琐碎的网站外。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接