4

多数の mysql テーブルを利用する完全に機能する ruby​​-on-rails アプリケーションを開発しました。これをサブスクリプション ベースのサービスにしたいと考えていますが、一般的な、おそらく基本的な、概念的な質問がいくつかあります。

  1. Basecamp などの設定では、各ユーザーは自分の (一意の) データベース テーブルにアクセスできますか、それともテーブルは何百万ものユーザーと共有され、変数によって識別されますか?

  2. これが当てはまる場合、それはどのくらいうまくスケーリングしますか?使用するのに最適なデータベースは何ですか (mysql、oracle など)?

  3. 各ユーザーに独自の一意のデータベース テーブルが与えられている場合。これはどのように達成されますか?レーキタスクによるものですか?

  4. これらの方法のいずれかを達成する方法を説明しているリソース (書籍、メディアなど) を提案できますか?

ありがとう!

4

2 に答える 2

2

私はそれが全体的なアカウントを使用して達成されると信じています。これにより、現在のシステムのリソースはそのアカウントによってスコープされます。つまり、インデックスアクションでは、@ projects =@account.projectsのようになります。Basecampを見ると、非常にうまくスケーリングできると思います。この問題が発生した場合は、解決すべき問題があります。それまではあまり心配しないでください。データベースがクラスターであることをイメージする必要がありますが、各ユーザーが独自のテーブルセットを持っていることは非常に疑わしく、管理するのは悪夢になります。

簡単なグーグルと私はこれを見つけました:http ://www.robbyonrails.com/articles/2009/01/11/subdomain-accounts-with-ruby-on-rails-explainedこれもDHHによる投稿にリンクしていますそれは彼らがそれをどのようにしたかを説明しているように見えます。

おそらく新しい記事がありますが、それらは素晴らしい出発点になると思います。

幸運を!

于 2010-02-08T14:23:54.437 に答える
0
  1. テーブルは共有され、外部キー値を使用して「親」に識別されます。ユーザーごとに別々のテーブルを用意するのは悪夢です。データベースを適切に正規化すると、これらの問題のほとんどが修正される可能性が高くなります。やることはプロジェクトに関連し、プロジェクトはアカウントに関連し、各アカウントには多くのユーザーがいます。
  2. 使用するのに最適なデータベースは完全にあなた次第です。RailsとDBの移行を使用している場合は、そのインターフェースが利用できるものにのみ制限されます。まず、MySQLまたはPostgreSQL(私の好み)のいずれかを使用します。それらは無料で、趣味のプロジェクトに利用できる豊富な知識があります。
  3. 私は個人的にユーザーごとに個別のテーブルを作成しません
  4. データベースの正規化データベース設計に関するウィキペディアのエントリを読むことは良いスタートです。その後、データベース設計に関して開発者が犯す一般的な間違いから始めて、優れたデータベース設計についてできるだけ多くのことを読む必要があります。
于 2010-02-08T14:23:30.070 に答える