Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 八达通gem中的默认迁移组_Ruby On Rails_Ruby_Sharding_Octopus - Fatal编程技术网

Ruby on rails 八达通gem中的默认迁移组

Ruby on rails 八达通gem中的默认迁移组,ruby-on-rails,ruby,sharding,octopus,Ruby On Rails,Ruby,Sharding,Octopus,我试图了解八达通gem上默认的迁移组是如何工作的。一直在谷歌上搜索,关于这部分宝石的信息并不多。任何帮助都将不胜感激 shards.yml rake db:migrate只更新database.yml文件中定义的数据库,因此Octopus的用途是允许rails应用程序运行数据库的多个实例。因此,数据库分片的目的是提供一种跨独立服务器的可伸缩性方法,每个服务器都有自己的CPU、内存和磁盘。数据库分片的基本示例非常简单:以一个大型数据库为例,跨服务器将其分为多个较小的数据库,如下所示:。分片的核心优

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

shards.yml


rake db:migrate只更新database.yml文件中定义的数据库,因此Octopus的用途是允许rails应用程序运行数据库的多个实例。因此,数据库分片的目的是提供一种跨独立服务器的可伸缩性方法,每个服务器都有自己的CPU、内存和磁盘。数据库分片的基本示例非常简单:以一个大型数据库为例,跨服务器将其分为多个较小的数据库,如下所示:。分片的核心优势在于它增加了可伸缩性


在上面的例子中,你有什么。您可以选择属于特定服务器foo.company.com的特定客户机/公司,现在您不想与您的主数据库共享这些公司数据。所以在这个场景中,您可以限制rails应用程序说OK。当访问foo.company.com时,我想以这个foo_prod数据库为例。此外,当您将数据库分解时,管理起来更容易,而且从安全角度来看,不将客户/公司的数据集中在一起会更安全

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

最后,我不知道如何使默认的_migration _group:db_list工作,所以我只编写了一个小脚本,在所有现有迁移中添加了使用_group:test,并对migration generator进行了更改,以便所有新迁移中都包含该方法

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