1

具体的な答えを探しているので、具体的な例でこの質問をしたいと思います。:) user_id で分割された一連の MySQL データベースがあるとします。たとえば、ID が 1 ~ 10000 のすべてのユーザーはデータベース D1 に入り、ID が 10001 ~ 20000 のユーザー ID はデータベース D2 に入ります。RoR アプリケーションにモデル「ユーザー」があります。情報が必要な user_id に応じて、このモデルは適切なデータベースにクエリを実行し、結果を返す必要があります。RoR の専門家は、それを可能にする方法を教えてもらえますか?

関連する質問として、N 個のデータベース D1、D2 ... DN を、MySQL が実行されている同じボックスに作成し、これらのデータベースの前に memcached キャッシュ レイヤーを作成したとします。このようにデータベースを構造化すると、パフォーマンスが低下しますか? (DB層やmemcache層でキャッシュミスが多くならないか心配です。)

4

3 に答える 3

1

必要なのはhttp://partitioned.rubyforge.org/だと思います

于 2010-01-26T15:18:12.587 に答える
0

Active Record にデータベース シャーディング サポートを追加するDataFabric gem を見てみましょう。次のようなことができます。

class User < ActiveRecord::Base
  data_fabric :replicated => true, :shard_by => :user_id
end
于 2010-01-26T16:00:47.610 に答える
0

探しているものは、一般にshardingと呼ばれます。これについてはウィキペディアに非常に包括的な記事があり、必ず読む必要があります

Rails でのシャーディングに関しては、アプリケーション レベルのデータベース シャーディングとマスター/スレーブ レプリケーションをサポートするデータ ファブリックgem をお勧めします。

これが役立つことを願っています!

于 2010-01-26T16:04:01.067 に答える