首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推荐在多租户应用程序中使用couchrest模型

推荐在多租户应用程序中使用couchrest模型
EN

Stack Overflow用户
提问于 2014-08-18 18:23:18
回答 1查看 170关注 0票数 3

我正在寻找关于如何在rails应用程序中使用couchrest模型实现多租户的建议。对于我的多租户应用程序,我正在考虑两个选项:

{编辑-删除我的丑陋选项,因为它们只会混淆未来的读者}

我希望这与10K用户很好地工作。

解决方案:基于Sam的建议,以下是我所做的工作,并且运行良好--在我的示例中,我需要重写proxy_database方法,因为代理数据库的标准命名与我的命名不匹配。

创建主程序

代码语言:javascript
复制
class Site < CouchRest::Model::Base
  property :name
  property :slug

  proxy_for :users
  proxy_for ...(all the other multi-tenant models)

  # Databases are on same server in this example
  def proxy_database
    @db ||= self.server.database!(slug)
  end

end

然后在每个多租户模型中

代码语言:javascript
复制
class User < CouchRest::Model::Base
  ...
  proxied_by :site

在ApplicationHelper中,创建一个可以在所有控制器中重用的'site‘方法。

代码语言:javascript
复制
  module ApplicationHelper

  def site
    db_name = current_user.db_name
    @site ||= Site.create(slug: "#{db_name}_#{Rails.env}" )
  end

然后控制器可能会执行如下操作:

代码语言:javascript
复制
 def show
    user = site.users.find(params[:id])
    render :json => user
  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-02 14:21:34

为此,您可能需要检查CouchRest模型的代理特性。更多细节可以在这里找到:

http://www.couchrest.info/model/proxying.html

虽然我没有个人经验,但我知道CouchDB处理>10k数据库。下面是一条很好的扩展用户数量的方法:

http://comments.gmane.org/gmane.comp.db.couchdb.user/13862

在处理大量数据库时需要考虑的几个问题:

  • 文件系统子目录计数,Ext4没有问题.
  • 要在子目录和/或服务器之间分离的命名空间数据库。
  • 系统打开文件限制。通常在10k左右。如果不是所有的数据库同时被访问的话,也可能很好。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25369695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档