【问题标题】:default migration group in Octopus gemOctopus gem 中的默认迁移组
【发布时间】:2015-09-23 14:33:55
【问题描述】:

我正在尝试了解 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 文件中定义的数据库

【问题讨论】:

    标签: ruby-on-rails ruby sharding octopus


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-06
        • 2021-11-26
        • 2020-04-20
        • 2016-11-16
        • 2017-10-19
        • 1970-01-01
        • 2020-11-07
        • 1970-01-01
        相关资源
        最近更新 更多