私のアプリケーションは、次の要件を持つXMLのような階層情報を大量に保存する必要があります。
- 読みやすい
- 最小限のメモリ消費
- 単なるテキストではなく、入力されたデータ
これらの目標を達成するバイナリ形式の提案はありますか?
私のアプリケーションは、次の要件を持つXMLのような階層情報を大量に保存する必要があります。
これらの目標を達成するバイナリ形式の提案はありますか?
他のアプリケーションは保存されたデータを読み取る必要がありますか、それともあなただけのデータを読み取る必要がありますか?「標準」フォーマットである必要がありますか?
Fast Infosetは、要件(1)および(2)を満たしていますが、XML情報モデルの単なるバイナリ表現であるため、XMLと同じように型指定されていません。ただし、他に何もなければ、目的には十分かもしれません。
要件の詳細が少なすぎて、適切な提案を行うことができません。たとえば、ストレージメディアを自由に選択できますか?それはファイルシステム、データベース、または他の何かでしょうか?
「最小メモリ消費量」とはどういう意味ですか?制約のあるプラットフォームで実行していますか?他のアプリケーションとリソースを共有する必要がありますか?コンピュータに4GBのメモリがある場合、1GBのフットプリントは十分に小さいですか?データはメモリに保存されますか、それとも作業中の部分のみに保存されますか?
プラットフォームがJavaの場合、標準のシリアル化から始めて、パフォーマンスに満足できない場合はカスタムのシリアル化を調査します。
xmlがフォーマット要件であるかどうかを指定せず、xmlのように階層化する必要があるとだけ言っています。
データの種類に関する詳細がなければ、アドバイスを提供することは困難です。ここに小さなリストがあります。
この問題に関するウィキペディアの説明: http://en.wikipedia.org/wiki/Binary_XML
おそらく、推奨される組織とその Java および .net SDK は、 http ://www.agiledelta.com/product_efx.html からダウンロードできます 。
xml は純粋なテキストですが、シリアル化されたオブジェクトを表すために使用できます。シリアライザーがオブジェクトを xml にシリアライズしていると仮定しましょう。
エンディアン ( http://en.wikipedia.org/wiki/Endian ) とデータ表現の問題に取り組む必要があるため、オブジェクトをバイナリ ストリームに変換しようとしないでください。ただし、データ アーキテクチャの中立性を確保するために、どうしても XDR ( http://en.wikipedia.org/wiki/External_Data_Representation ) を使用する必要があります。
それ以外の場合は、標準のシリアライザーを使用してオブジェクトを XML にシリアル化し、ライブラリと SDK が利用できるため、xml をバイナリ/コンパクト xml に変換する必要があります。次に、バイナリ xml から圧縮解除して逆シリアル化します。
形式について議論できる場合は、XML ではなく JSON をお勧めします。実際、JSON は標準の XML よりも読み込みと書き込みが高速です。
JSON の詳細:
http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=060ca7c3-b03f-41aa-937b-c8cba5b7f986 http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=39842a17-781a-45c8 -ade5-58286909226b
XML をオブジェクト グラフに読み込んで、Google プロトコル バッファとして保存することもできます。これらは非常に効率的になるように設計されています。