Octopus gem

时间:2015-09-23 14:33:55

标签: ruby-on-rails ruby sharding octopus

我试图了解octopus gem上的默认迁移组是如何工作的。一直在谷歌搜索,没有关于这部分宝石的真正信息。任何帮助将非常感激。

shards.yml

octopus:
  default_migration_group: db_list
  environments:
    - development
  development:
    db1:
      adapter: mysql2
      database: db1
      username: root
      password:
      host: localhost
    db2:
      adapter: mysql2
      database: db2
      username: root
      password:
      host: localhost

rake db:migrate仅更新database.yml文件中定义的数据库

2 个答案:

答案 0 :(得分:0)

因此,Octopus的目的是允许rails应用程序运行数据库的多个实例。因此,数据库分片的目的是提供一种跨独立服务器的可扩展性方法,每个服务器都有自己的CPU,内存和磁盘。数据库分片的基本示例非常简单:使用大型数据库,并将其分解为跨服务器的多个较小的数据库,如下所示:Image of sharding。分片的核心优势在于它提高了可伸缩性。

在上面你所拥有的例子中。您可以选择属于特定服务器foo.company.com的特定“客户端/公司”,现在您不希望与您的主数据库共享此公司数据。因此,在这种情况下,您可以限制您的rails应用程序说好。访问foo.company.com时,我想以此foo_prod数据库为目标。此外,当您破坏数据库时,它使管理变得更容易,而且从安全角度来看,将“客户/公司”数据全部集中在一起会更安全。

答案 1 :(得分:0)

感谢您的解释,但最后在每次迁移中添加 using_group(:test)并在文档中描述的shard.yml中进行适当的更改之后,我们减少了所有的迁移时间服务器从近6小时到大约25分钟。

最后我无法弄清楚如何使 default_migration_group:db_list 工作,所以我写了一个小脚本,将 using_group(:test)添加到所有现有迁移并对迁移生成器进行了更改,以便所有新迁移都包含该方法。

相关问题