画像(ファイル)は通常、base64でエンコードされたデータベースに保存されないと私は主張します。代わりに、生のバイナリ形式でバイナリ(blob)列またはファイルに保存されます。
Base64はトランスポートメカニズムとしてのみ使用され、ストレージには使用されません。たとえば、base64でエンコードされた画像をXMLドキュメントやメールメッセージに埋め込むことができます。
Base64もストリームフレンドリーです。 (データの合計サイズを知らなくても)オンザフライでエンコードおよびデコードできます。
base64は転送には問題ありませんが、base64でエンコードされた画像を保存しないでください 。
Base64は、チェックサムなど、ストレージに価値のあるものを提供しません。
Base64エンコーディングでは、ストレージ要件が生のバイナリ形式に比べて33%増加します。また、永続ストレージから読み取る必要のあるデータの量も増加します。これは、依然として一般的にコンピューティングの最大のボトルネックです。一般に、より少ないバイトを読み取り、その場でエンコードする方が高速です。システムがIOバウンドではなくCPUバウンドであり、定期的にbase64で画像を出力している場合にのみ、base64での保存を検討してください。
インライン画像(HTMLに埋め込まれたbase64エンコード画像)自体がボトルネックです。ネットワーク経由で33%多いデータを送信し、シリアルに送信します(Webブラウザーは、ページのダウンロードを完了する前にインライン画像を待機する必要があります) HTML)。
それでもbase64でエンコードされた画像を保存する場合は、何をするにしても、base64でエンコードされたデータをUTF8列に保存しないようにして、インデックスを作成してください。