私は、データベースに保存されているデータが非常に一般的なコンテンツ管理アプリケーションに取り組んでいます。この特定の例では、コンテナには多くのリソースがあり、それらのリソースは、ピクチャ、ムービー、アップロードされたファイル、またはプレーンテキストであろうと、何らかの種類のデジタル資産にマップされます。データベースの代わりにファイルシステムからテキストを提供していますか?
写真を保存するだけでなく、ファイルシステムにテキストアセットを保存し、アプリケーションがファイルの場所をデータベースから検索するようにしたいので、私は同僚と1週間議論してきました。 )、クライアントアプリケーションに提供する前に(ファイルシステムから)テキストファイルを読み込みます。
これはばかげていると私は悲鳴を上げると私たちはデータベースから何かを見て気にしている場合は、テキストをデータベースの列に格納し、行のルックアップに一緒に役立つかもしれない。データベースルックアップ+ファイルIOは、コントロールできないほど遅く、データベースルックアップのように思えました。しばらくの間行ったり来たりして、私はいくつかのベンチマークを実行することにしました。結果は少し驚くべきものでした。ベンチマーク時は一貫性がほとんどないようです。ベンチマークの唯一の優秀な唯一の勝者は、データベースから大量のデータセットを取り出し、結果を繰り返してテキスト資産を表示することでしたが、データベースからオブジェクトを一度に1つずつ取り出し、テキストコンテンツを表示することは首と首のようでした。
ベンチマークの実行の限界を知っていますが、 "テスト"の正しいアイデアを実行しているかどうかはわかりません(たとえば、ファイルシステムの書き込みはデータベースの書き込みが馬鹿馬鹿しく高速ですが、 。私は私の質問が確認のためだと思う。ファイルI/Oは、データベースのテキストストレージ/ルックアップに匹敵しますか?私はここで議論の一部を欠いていますか?あなたのご意見/アドバイスをお寄せいただきありがとうございます!
私が使用しているかについての迅速な作業: これは、Ruby 1.8.6とsqlite3のを使用してのRuby on Railsのアプリケーション、 です。明日、 と同じコードベースをMySQL に移動し、ベンチマークが であるかどうかを確認します。
Iの避難所を使用することができませんでしたそのようなテストは自分ではできませんでしたが、ファイルシステムがどのように多くのファイルが存在するのかと不思議です。最終的にファイルシステムは単なる一種のデータベースでもあります。私が "本当の"データベースについて気に入っているのは、トランザクション処理/アトミック・インサートです。どういうわけかファイルシステムで私は編集的であり、操作の途中で書き込みがクラッシュし、ファイル全体が破損状態になる恐れがあります。 これは、ファイルシステムに大きな「ダム」ファイル(画像など)を入れて、ファイル名をdbに保存するのが一般的なアプローチだと言いました。ただし、Webサーバーに直接提供するようにしてください。 –