1

私は、データを継続的に分析し、マルチスレッド方式で結果を出力するスクリプトに取り組んでいます。したがって、基本的に、結果ファイル(xmlファイル)は常に更新/変更されています(1秒あたり2〜3回の場合もあります)。

私は現在lxml、xmlファイルの解析/変更/更新に使用しています。これは現在正常に機能しています。しかし、私が言えることから<weather content=sunny />、ファイルのどこかにあるように1つのエントリ/サブエントリを追加するだけの場合でも、xmlファイル全体を書き直す必要があります。xmlファイルは徐々に大きくなり、オーバーヘッドも大きくなります。

効率/リソースに関する限り、xmlファイルを更新/変更する他の方法はありますか?または、xmlファイルが大きすぎて解析/変更/更新できない場合は、いつかSQLデータベースなどに切り替える必要がありますか?

4

2 に答える 2

2

いいえ、通常はできません。XMLファイルだけでなく、任意のファイル形式です。

「インプレース」で更新できるのは、バイトを正確に上書きした場合のみです(つまり、文字を追加または削除せず、同じバイト長のものに置き換えるだけです)。

データベースの形式を使用することは良いオプションのように思えます。

于 2012-05-13T09:26:52.070 に答える
0

Li-anung Yipは、これであらゆる種類の厄介なマルチスレッド同期の問題を処理できると述べているため、確かに何らかのデータベースが必要なようです。

データが徐々に増えているとおっしゃいましたか?どのように消費されていますか?クライアントは毎回結果ファイル全体をダウンロードする必要がありますか?

ユースケースはわかりませんが、ATOMフィードを使用してデータの変更を配布することを検討できますか?Atom pubのサポートを提供すると、データを効果的にREST対応にすることもできます。それはまだXMLですが、変更を消費してポーリングするのが簡単な標準に準拠した形式です。

于 2012-05-13T12:41:23.060 に答える