Формат архива для добавления данных в файлы без извлечения - PullRequest
0 голосов
/ 18 февраля 2012

У меня есть большой XML-файл (100 ГБ или более), который содержит неупорядоченные записи, что-то вроде этого:

<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...

Страницы не должны быть упорядочены по идентификатору.

Мое решение сейчас требует предварительной обработки xml и для каждой страницы:

  • открыть файл с уникальным соглашением об именах (например, «1.data» для страницы 1, «2.data», ...)
  • добавить содержимое текущей страницы
  • закрыть файл

Проблема для меня заключается в том, что обработка большого количества страниц требует создания миллионов файлов, что, конечно, не очень хорошо.

У меня вопрос, если можно использовать какой-нибудь архивный файл (например, tar или zip) для сериализации всех моих данных . Преимущество заключается в наличии только одного большого файла, содержащего все мои данные, который можно читать последовательно, сжатие не обязательно требуется.

Я предпочитаю избегать использования базы данных, потому что мое программное обеспечение должно быть автономным, и я бы предпочел использовать python.

Спасибо

Риккардо

1 Ответ

0 голосов
/ 18 февраля 2012

Я предлагаю вам использовать модуль sqlite3, который находится в стандартной библиотеке Python.
Один файл базы данных sqlite может содержать 128TB данные, которые >>200GB.
Гораздо удобнее управлять всеми этими данными, а не миллионами файлов.

...