0

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

分片.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 文件中定义的数据库

4

2 回答 2

0

所以 Octopus 的目的是允许 Rails 应用程序运行数据库的多个实例。所以 Database Sharding 的目的是提供一种跨独立服务器的可扩展性方法,每个服务器都有自己的 CPU、内存和磁盘。数据库分片的基本示例非常简单:获取一个大型数据库,并将其分成多个跨服务器的较小数据库,如下所示:分片的图像。分片的核心优势在于它增加了可扩展性。

在上面的例子中你有什么。您可以使用属于特定服务器的特定“客户/公司”,foo.company.com现在您不想与您的主数据库共享该公司数据。因此,在这种情况下,您可以限制您的 rails 应用程序说没问题。例如,何时foo.company.com访问我想以该foo_prod数据库为目标。此外,当您分解数据库时,它更易于管理,而且从安全角度来看,不将您的“客户/公司”数据全部混合在一起会更安全。

于 2015-10-07T01:45:11.280 回答
0

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

最后我不知道如何使default_migration_group: db_list工作,所以我只写了一个小脚本,将using_group(:test)添加到所有现有的迁移中,并对迁移生成器进行了更改,以便所有新的迁移会有这种方法。

于 2015-10-07T09:03:47.143 回答