ファイルシステムベースの読み取りと単純なデータベースクエリ?
-
27-10-2019 - |
質問
Kentico Store Media Libraryファイルと呼ばれるCMSをファイルシステムに使用し、ファイルメタデータ(タイトル、説明など)のデータベースにレコードを保存します。メディアライブラリコントロールを使用してそれらのアイテムをリストすると、ファイルシステムからファイルを読み取り、表示します。ファイルシステムから読み取り、データベースを照会する方が速いですか?または、メディアファイルメタデータデータベーステーブルで簡単なクエリを実行する方が速いでしょうか?
仮定:
- KenticoはASP.NETアプリケーションであるため、コードはC#にあります。データを渡すために簡単なデータセットを使用します。
- ファイル名やサイズなどの直接ファイルからメタデータのみが読み取られます。
- フォルダーごとに最大100個のファイル。
- データベースクエリは正しくインデックス付けされます。
クエリは次のようなものになります:
選択する *
Media_fileから
ここでfilepath 'path/to/current/media/folder/%'
解決
短い答えは、多くの変数要因に依存しますが、ファイルシステムは一般にDBよりも高速になります。
より長い答えは次のとおりです。リソースが自宅に近く、コンピューターがこれらの操作を非常に効率的に行うように設計されているため、既知の場所でローカルファイルシステムをスキャンすることは一般的に高速です。
ただし、データベースよりも速いかどうかは、データベースの実装、配置されている場所、および私たちが話しているデータの量に依存します。全体として、DBMSEは大規模なデータセットを非常に効果的に保存および照会するように最適化されていますが、「フラット」ファイルシステムは、ハードウェアのように速度でドライブをスキャンすることができます。それらが実装に依存する速さ(SQLiteはMS SQL ServerまたはOracleほど全体的に速くなることはありません)、通信スキーム(ネットワークを介してファイルを転送することは、コンピューターが定期的に行う最も遅いことです。非常に高速なインタープロセス通信を提供します)、およびあなたがそれに投げているハードウェアの量を提供します(Sata-Raidストライプを備えたクアッドXeonブレードサーバーは、セレロンラップトップよりもはるかに速くなります)。
他のヒント
ここで他の人が言ったことに加えて、キャッシュの設定に応じてキャッシュが登場する可能性があります。 Kentico、SQL、およびIISはすべてさまざまなレベルのキャッシュを持ち、セットアップ、構成、および最適化するユースケースに応じてさまざまな時期に使用されているため、それらを考慮に入れることを忘れないでください。
このレベルでのパフォーマンスの問題に関しては、答えはしばしば次のとおりです。したがって、独自のソリューションをベンチマークして、特定のユーザーの状況的ニーズで最も役立つものを確認してください。
Kenticoはいくつかのパフォーマンスガイドをリリースしました( 5.0 そして別の 5.5)それは助けになるかもしれませんが、あなたがそれを自分でテストするまで、彼らはまだあなたに決定的な答えを与えません。