私はここ 1.5 年間、Rails で働いています (真剣に取り組んでいるという意味です)。.Net のバックグラウンドとデータベース/OLAP 開発の経験から、Rails には多くの点が気に入っていますが、意味をなさない点はほとんどありません。そのような問題の1つについて説明が必要です。
私は教育機関の入学プロセスに取り組んできましたが、これはより大きなアプリケーションのほんの一部にすぎません。ここで、管理者のために、すべての申請済み/登録済みの学生 (1000 から 10,000 の範囲) のリストを表示し、それらを Excel ファイルとしてエクスポートする方法を提供する必要がありました。今のところ、CSV 形式でのエクスポートにのみ焦点を当てています。
私の質問は次のとおりです。
Rails は、これほど多くのレコードを同時に表示することを意図していますか?
Railsでレコードをページ分割する唯一の方法はwill_paginateですか? 私が理解していることから、DBからすべてのレコードを取得し、関連するレコードを選択的に表示します。.Net/PHP/JSP に戻って、ストアド プロシージャを作成し、そこから関連するレコードを選択的に返します。ストアド プロシージャを使用することは Rails の既知の問題であるため、他にどのようなオプションがありますか?
このデータのエクスポートと同じ問題。サーバーでリクエストを受信し、クエリを実行し、レスポンスが返されるプロセスをベンチマークしました。ActiveRecord の作成には非常に時間がかかりました。それはなぜですか?レコードは 1000 件程度しかなく、ページにはユーザーの接続タイムアウトが表示されました。つまり、1000 レコードの作業中に接続がタイムアウトした場合、なぜ Rails を使用するのか、または Rails がそのようなアプリケーション向けではないことを意味します。私は以前に TB のデータを扱ったことがありますが、この問題は一度もありませんでした。
ORM テクニックの核心を理解したことがありませんでした。たとえば、 table
users
があり、他の複数の table に関連付けられていますが、レコードを表示するには、 tableusers
とそれに関連付けられた tableからのデータのみが必要であり、関連付けadmissions
られたすべての table のオブジェクトを実際に作成します。関連付けを使用した場合にのみデータがフェッチされることはわかっていますが、事前にすべてのオブジェクトを作成するのでしょうか?
これらの質問が独立したものではなく、SF のガイドラインに従っていることを願っています。
ありがとうございました。
編集:何か助けて?1000 レコードについて、4 ~ 5 個の異なるテーブル (1000 ユーザー、2 ~ 3 個の 1 対 1 関連付け、および 2 ~ 3 個の 1 対多関連付け) を結合している場合、再確認して再度ベンチマークを行いました。 15000 以上のオブジェクトを作成しています。これは熱心な読み込み用です。遅延読み込みに関しては、1000 のユーザー クエリと 20 以上のクエリになります)。そのような問題やアプリケーションに対して他に考えられるオプションは何ですか? 私は知っています、私はちょっと質問をぶつけて、再びトップに来ます!