私は何年も前に、ファイル形式についてあまり考えずに.NETアプリケーションを作成しました。これは、soapフォーマッターを使用して、オブジェクトの大きな階層をシリアル化します。汚れが簡単だったので、あまり考えませんでした。
私は現在、次の問題を考慮して、より最適なファイル形式を考え出そうとしています。ファイルが保存されると、最終的にバイト配列に変換され、データベースに送信されて保存されます。すべてのオブジェクトがメモリにあり、シリアライザにさらに多くのメモリを割り当て、次にバイト配列にさらに多くのメモリを割り当てるため、これは大きな問題になります。適度なサイズのオブジェクトグラフでさえ、ファイルの保存を処理するために大量のメモリを使用することになります。
ファイル形式の観点からだけでなく、アルゴリズムの観点からもこれを改善する方法がわかりません(オブジェクト->ストリーム->バイト配列)
更新:私は常にバイト配列をネットワーク経由で送信する前に圧縮していたので、それは良いアドバイスですが、それはすでに私のアプリケーションに実装されていました。
私はSoapからBinarySerializationに変換しましたが、それは大きな違いをもたらしました。ファイルは以前の約7分の1になりました。(もちろん、マイレージは異なる場合があります)。