Вывод:Похоже, что HDF5 - это путь для моих целей. В основном "HDF5 - это модель данных, библиотека и формат файлов для хранения и управления данными". и предназначен для обработки невероятных объемов данных. Он имеет модуль Python, называемый python-tables. (Ссылка находится в ответе ниже)
HDF5 делает работу на 1000% лучше, экономя тонны и тонны данных. Чтение/изменение данных из 200 миллионов строк - это боль, поэтому, чтобы решить следующую проблему.
Я создаю дерево каталогов, которое содержит множество подкаталогов и файлов. Около 10 миллионов файлов распространяются около ста тысяч каталогов. Каждый файл находится под 32 подкаталогами.
У меня есть python script, который создает эту файловую систему и читает и записывает эти файлы. Проблема в том, что, когда я достигаю более миллиона файлов, методы чтения и записи становятся чрезвычайно медленными.
Здесь у меня есть функция, которая считывает содержимое файла (файл содержит целую строку), добавляет к нему определенное число, затем записывает его обратно в исходный файл.
def addInFile(path, scoreToAdd):
num = scoreToAdd
try:
shutil.copyfile(path, '/tmp/tmp.txt')
fp = open('/tmp/tmp.txt', 'r')
num += int(fp.readlines()[0])
fp.close()
except:
pass
fp = open('/tmp/tmp.txt', 'w')
fp.write(str(num))
fp.close()
shutil.copyfile('/tmp/tmp.txt', path)
- Реляционные базы данных кажутся слишком медленными для доступа к этим данным, поэтому я выбрал подход к файловой системе.
- Ранее я пытался выполнять команды консоли linux для них, но это было медленнее.
- Сначала я копирую файл во временный файл, затем обращаюсь к нему, а затем копирую его, потому что обнаружил, что это быстрее, чем прямой доступ к файлу.
- Ввод всех файлов в один каталог (в формате reiserfs) вызвал слишком много замедления при доступе к файлам.
Я думаю, что причиной замедления является то, что в нем много файлов. Выполняя эту функцию, 1000 раз синхронизировались менее чем за секунду, но теперь она достигает 1 минуты.
Как вы предлагаете мне это исправить? Изменить структуру дерева каталогов?
Мне нужно только быстро получить доступ к каждому файлу в этом огромном пуле файлов *