0

タコの宝石のデフォルトの移行グループが実際にどのように機能するかを理解しようとしています。グーグルで調べてみましたが、宝石のこの部分に関する情報はあまりありません。どんな助けでも本当に感謝しています。

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 ファイルで定義されているデータベースのみを更新します

4

2 に答える 2

0

したがって、Octopus の目的は、Rails アプリケーションがデータベースの複数のインスタンスを実行できるようにすることです。したがって、データベース シャーディングが提供する目的は、それぞれが独自の CPU、メモリ、およびディスクを備えた独立したサーバー間でスケーラビリティを実現する方法を提供することです。データベース シャーディングの基本的な例は非常に簡単です。大規模なデータベースをサーバー間でいくつかの小さなデータベースに分割すると、次のようになります。シャーディングの主な利点は、スケーラビリティが向上することです。

あなたがそこに持っているものの上記の例では。特定のサーバーに属する特定の「クライアント/会社」foo.company.comを使用すると、この会社のデータをメインデータベースと共有したくない場合があります。したがって、このシナリオでは、Rails アプリケーションを制限して、OK と言うことができます。がアクセスされたときに、たとえば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 に答える