1

ポータル用のデータベース構造を構築していますが、データベースに保存しないと判断した要素 (通常はメディア、具体的には画像) に関連する疑問があります。

コンテンツがあり、すべてのコンテンツにメイン画像があるとします。また、コンテンツから大きな画像が必要な特集コンテンツのスライドショーもあります。直感的なアイデアは、このタスクをせずに DB を残し、名前規則を使用して画像を保存することです。次に、コード (php) で、ファイルが存在するかどうかを確認し、必要に応じて動作させることができます (スライドショー用の画像のアップロードを要求し、必要なメイン画像の代わりにデフォルトの画像またはマップを表示します...)。もう 1 つの極端な方法は、ファイル名をデータベースに保存することです。他のオプションは、ファイル名の規則を使用しますが、コード内の存在をチェックする代わりにブール値をデータベースに保存することです。

主観的な観点に興味がありますが、技術的および客観的な理由、または単に実用的な理由に基づいて、この状況のベストプラクティスがあるかどうかを本当に知りたいです...

4

2 に答える 2

1

各コンテンツ レコードとともに画像ファイル名をデータベースに保存します。データベース レコードを更新することで選択したイメージを簡単に変更できるため、これは最も柔軟なオプションです。

コンテンツを管理するために何らかのバックエンド/管理領域を追加するとします。コンテンツのメイン画像を変更するには、画像フォルダー (およびファイル アップロード オプション) 内のファイルのドロップダウンを表示し、レコードを選択した画像に簡単に更新できます。

コンテンツ画像のスライドショーが必要な場合は、テーブルから画像ファイル名を選択し、画像を<img />指すタグを出力するだけです。

データベースなしでそれを行う場合、たとえばcontent-image-{contentId}.jpg画像を変更するために命名規則を使用して、ファイルの名前を変更/削除する必要があり、さまざまな画像ファイル拡張子に対応する必要があります。

于 2012-10-03T15:29:31.050 に答える
0

データベースに画像を保存しません。代わりに、それらをディスク上の別のフォルダーに保存し、名前、サイズ、MIME タイプなどのテーブルを維持します。

それらをデータベースに保存しないという私の実際的な理由:

  • mysqldumpデータベース構造を変更したい場合は、エディタを使用します。ダンプ内にすべてのバイナリ データがない方が簡単です。
  • 私のデータベース サーバーは、パフォーマンスのために高速な 128 GB SSD SATA 600 ディスクで実行されます。スペースは限られています。images フォルダーは、サイズが 12 TB の NAS ストレージからマウントされます。
  • ブラウザが画像を必要とする場合、それは html で読み込まれるのではなく、別のリクエストで読み込まれます。html を配信する場合、イメージが非常に高速なストレージ デバイスから取得される必要はありません。
于 2012-10-03T15:29:53.740 に答える