加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 基于客户端的网站的最佳数据库策略(Ruby on Ra

发布时间:2020-12-17 03:25:37 所属栏目:百科 来源:网络整理
导读:我已经建立了一个很好的网站系统,以满足小型利基市场的需求.去年我通过使用Capistrano将软件副本部署到我的网络服务器来销售这些网站. 在我看来,这些网站的唯一区别是数据库,CSS文件以及用于单个客户端图形设计的一小组图像. 其他一切都完全一样,或者应该是
我已经建立了一个很好的网站系统,以满足小型利基市场的需求.去年我通过使用Capistrano将软件副本部署到我的网络服务器来销售这些网站.

在我看来,这些网站的唯一区别是数据库,CSS文件以及用于单个客户端图形设计的一小组图像.

其他一切都完全一样,或者应该是……现在我已经部署了大约20个这样的站点,用相同的代码保持它们全部更新变得很麻烦.这个问题只会变得更糟.

我想我应该重构这个系统,这样我就可以使用一组部署的ruby代码,通过传入请求的URL动态选择正确的数据库等.

似乎有两种处理数据库的方法:

>使用多个数据库,每个客户端一个
>使用一个数据库,每个表中包含一个client_id字段,以及一个额外的“客户”表

多数据库方法对我来说是最简单的,因为我不必重构应用程序中的每个模型来将client_id字段添加到所有CRUD操作中.

但是,每次我想要迁移数据库时,必须为数十个或数百个不同的数据库运行“rake db:migrate”是一件麻烦事.显然这可以通过脚本完成,但它闻起来不太好.

另一方面,每个客户在’items’表中将有20K-50K项目.当items表中有五十万或几百万个项目时,我担心全文搜索的速度.即使在client_id字段上有索引,我怀疑如果将项目分成不同的客户端数据库,搜索会更快.

如果有人对解决这个问题的最佳方法有了明智的意见,我非常希望听到它.非常感谢…

– 约翰

解决方法

使用单独的DB(包括您已列出的DB)有以下优点:

>当您要搜索数百万个大型文本blob时,全文搜索将变得缓慢(取决于您的服务器的功能).
>分离DB将使每个客户端的表索引速度更快.特别是,如果您使用新的大型客户端,它可能会使您早期的一些客户感到不满.突然之间他们的应用程序(对他们来说)没有明显的理由.同样,如果您保持在硬件容量之下,这可能不是问题.
>如果你放弃了一个客户端,那么打包他们的数据库比通过client_id移除所有相关行更简洁.如果他们以后改变主意,同样干净,以恢复他们.
>如果任何客户要求他们愿意支付额外的功能,您可以分叉他们的数据库结构,而无需修改其他任何人.
>对于悲观主义者:错误而不仅仅是一个客户的数据意外破坏所有客户数据的可能性较小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读