私が最も興味を持っているのは、データのどの部分も変更される可能性がある、大量のオブジェクト指向データの変更に対するインプロセス (シングル ユーザー) ソリューションです。このようなシステムには、一般的に次のような問題があります。
- 大きなファイルを最初から書き出すのは非効率的です
- xml が冗長すぎる
- SQL BLOB は適切に一致しません
それで、あなたはそれをどのようにしますか?
私が最も興味を持っているのは、データのどの部分も変更される可能性がある、大量のオブジェクト指向データの変更に対するインプロセス (シングル ユーザー) ソリューションです。このようなシステムには、一般的に次のような問題があります。
それで、あなたはそれをどのようにしますか?
すぐに使用できるいくつかのソリューションのいずれかを使用した OR マッピング。
これは、要件によって異なります。正直なところ、高解像度の画像や音声に XML ブロブと SQL ブロブのどちらを使用しますか?
あなたの質問をもう一度読みます。ファイル イメージに保存したい任意のオブジェクトがたくさんある場合、それらを出し入れする方法は、コピーと再配置です。アウトコピーは GC から助けを得ることができます。インコピーは非常に簡単で、主に再配置ルーチンに依存します。
非常に大きなファイルを操作する必要がある場合は、そのシステムにオブジェクトを「ダーティ」とマークし、ファイル イメージ内の実際の位置をマークする方法を提供します。
何も削除しない場合を除き、削除されたオブジェクトにマークを付ける必要もあります。
大規模なデータセットの場合、構造化されたバイナリファイルを使用しますが、これほどスペースと時間の効率が良いものはありません。
構造化テキストデータの場合、S式(つまりLAML)を使用するか、i式のように実装された括弧LAMLを削減します。
小規模から中規模のファイルには YAML を使用しており、解析と保存が非常に簡単です。JSON は価値のある代替手段です。
O/R マッピングまたは db4o のようなオブジェクト データベースが必要です。
比較的独立したオブジェクトのコレクションの問題である場合は、それぞれを独自のファイルに保存し、オブジェクトがダーティな場合にのみ書き込むこともできます。しかし、明らかにより複雑なケースでは、参照をまっすぐに保ち、直感的でないディレクトリ構造を避けるために多くの作業が必要になる可能性があります。これは、実際に O/R マッパーとオブジェクト データベースがテーブルにもたらすものです。
XML は冗長すぎるため、多くの場合、圧縮 (zip 内の xml など) で解決できます。
XML ではなく、XAML へのシリアル化を試すことができます。これにより、より小さなファイルを作成でき、読み取りと書き込み (シリアル化/逆シリアル化) がはるかに高速になります。
明らかに、オプションである XAML に依存します。
主にバイナリデータを使用します。人間が読める必要がある場合を除きます(設定やユーザー設定など)。
xml が冗長すぎると思われる場合は、JSON を調べてください。とても良い代替品だと思います。
「大きなファイルをゼロから書き出すのは効率が悪い」 え?ファイル I/O ほど高速なものはほとんどありません。ファイル I/O が非効率的であるというあなたの主張を裏付ける例またはデータを提供してください。
ほとんどの OO システムは、オブジェクトをファイルにシリアライズまたはピクルすることができます。これは可能な限り最速の I/O です。
また、ほとんどの OO システムは、オブジェクトを XML、JSON、YAML などの標準表現に変換できます。
JSON/YAML は XML よりも冗長性が低く、解析がはるかに簡単です。