Формат архива для добавления данных в файлы без извлечения
У меня есть большой 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
,
Гораздо удобнее управлять всеми этими данными, а не миллионами файлов.