【问题标题】:Should I make my CouchDB database server public-facing?我应该让我的 CouchDB 数据库服务器面向公众吗?
【发布时间】:2012-11-28 12:11:30
【问题描述】:

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

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

【问题讨论】:

    标签: model-view-controller architecture couchdb heuristics


    【解决方案1】:

    经销商的选择。

    Nodejitsu 有一篇关于此类主题的精彩文章here

    不知道您的应用程序细节我会采取广泛的方法...

    后端

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

    前端

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

    Bl端

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

    我的建议

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

    【讨论】:

    • 为什么移动客户端不能在网站上使用API​​,它与后台的CouchDB通信?用这种方式控制访问?
    • 当然可以,这就是“bl-end”选项。有很多方法可以开发 SOA 风格的 API 接口,该接口公开 CouchDB 数据以及来自其他服务的数据。
    【解决方案2】:

    简单地说,没有。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      相关资源
      最近更新 更多