現在、行制限のあるherokuデータベースを使用しているクライアントと一緒にいて、アクティビティをログに記録する大きなテーブルがあるため、いくつかのソリューションを試した後、単一のモデルに別の接続を使用できることがわかりました。
パフォーマンスに大きく影響しますか?このテーブルだけでpostgresでマイクロインスタンスを作ろうと思います。
現在、行制限のあるherokuデータベースを使用しているクライアントと一緒にいて、アクティビティをログに記録する大きなテーブルがあるため、いくつかのソリューションを試した後、単一のモデルに別の接続を使用できることがわかりました。
パフォーマンスに大きく影響しますか?このテーブルだけでpostgresでマイクロインスタンスを作ろうと思います。
1 つのアプリケーションで大量のデータと複数のテナントを扱う場合は、複数のデータベースを用意することをお勧めします。私は、database.yml で別のセクションを使用しています。特定のモデルはこのセクションを指します。データの繰り返しも避けることができます。
複数のテナントがあり、各テナントには異なるデータベースがあるとします。ただし、各テナントには、消費する共通のデータがあります。したがって、これらのモデルでは、異なるデータベースを使用できます。したがって、すべてのテナントがこのデータベースからデータを取得します。したがって、回避できます。データの繰り返しも。
他の要件によっては、これは、プライマリ DB をシャドウする読み取り専用インスタンスを作成する Heroku の Postgres の「フォロー」機能に適しているようです。詳細はこちら: Heroku Postgres フォローする
いいえ、複数のデータベース接続を使用してもパフォーマンスに影響はありません。ワーカー プロセスごとに若干多くのメモリを使用する可能性がありますが、おそらく問題になるほどではありません。
2 番目のデータベース接続をセットアップする方法は、database.yml で別のスタンザを使用することでした。開発セクションと本番セクションに加えて、それを使用するモデルで参照する「other_db」接続が存在する場合があります。いくつかのモデルが他の接続を使用することになった場合、ActiveRecord::Base から継承し、確立_接続行だけを持つ 1 つの「スーパークラス」モデルを作成し、実際のモデルがそのモデルから継承するようにすることができます。そうすれば、確立_接続行を繰り返し続けることはありません。