0

次のような順序付けられていないレコードを含む大きな xml ファイル (100GB 以上) があります。

<page id = "1">content 1</page>
<page id = "2">...</page>
<page id = "2">...</page>
... many other pages ...
<page id = "1">content 2</page>
... many other pages ...

読み取り専用モードでデータにアクセスする必要がありますが、ページごとにグループ化します。

<page id = "1">
    content1
    content2
    ...
</page>
<page id = "2">
    ...
    ...
</page>
...other pages...

ページを ID 順に並べてはなりません。

私のソリューションでは、今ではxmlを前処理する必要があり、ページごとに:

  • 固有の命名規則でファイルを開きます (例: 1 ページ目は「1.data」、「2.data」など)。
  • 現在のページのコンテンツを追加する
  • ファイルを閉じる

私にとっての問題は、多数のページを処理するには、何百万ものファイルを作成する必要があることです。もちろん、これはあまり良くありません。

私の質問は、ある種のアーカイブ ファイル (tar や zip など) を使用してすべてのデータをシリアル化できるかどうかです。利点は、すべてのデータを含む大きなファイルが 1 つだけで、順次読み取ることができることです。圧縮は必ずしも必要ではありません。

私のソフトウェアはスタンドアロンである必要があり、Python を使用することを好むため、データベースの使用を避けることを好みます。

ありがとう、

リカルド

4

1 に答える 1

0

sqlite3Python標準ライブラリにあるモジュールを使用することをお勧めします。
単一の sqlite データベース ファイル128TBは、>>200GB.
何百万ものファイルではなく、これらすべてのデータを管理する方がはるかに便利です。

于 2012-02-18T16:29:02.443 に答える