Формат архива для добавления данных в файлы без извлечения

У меня есть большой 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...

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

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

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

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

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

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

Спасибо,

Riccardo

1 ответ

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

Другие вопросы по тегам