Альтернатива написанию многих файлов. MongoDB?

У меня есть скрипт Perl, который создает ~ 10000 файлов в области размером 1kB - 10kB, что не является оптимальным для производительности, поэтому я хотя и об использовании MongoDB вместо написания многих файлов. Мне нужно запустить сценарий на моих ноутбуках Linux и OSX.

Вопрос

Может ли MongoDB быть излишним? Или есть что-то более подходящее для такого рода локального хранилища файлов?

1 ответ

Некоторые файловые системы лучше, чем другие, имеют дело с десятком тысяч небольших файлов. Согласно слухам, BTRFS или ReiserFS были лучше, чем Ext3 или Ext4. И вы можете настроить размер блока (возможно, до 1 Кбайт) при создании файловой системы.

Вы можете оставаться с 10K файлами, но может быть проще разместить их в сотнях каталогов, то есть иметь dir01/file000.txt dir01/file999.txt dir02/file000.txt... dir02/file999.txt.... dir99/....

Это, по крайней мере, более дружелюбный человек -so ls дает разумный output- и может быть более эффективным для некоторых старых файловых систем.

MongoDB, такие как MariaDb (или MySQL) или PostgreSQL, являются серверами баз данных, поэтому вам необходимо запустить сервер (возможно, только на localhost), а единственное соединение с клиентским сервером имеет определенную стоимость.

Вы также можете рассмотреть GDBM, который представляет собой библиотеку, предоставляющую индексированные файлы.

И вы также можете рассмотреть Sqlite, который также является библиотекой, предоставляющей базу данных Sql.

Наконец, 10K файлов по 10 Кбайт каждый составляет всего 100 Мбайт. Это легко вписывается в память или в один файл...

И хранение 10K файлов от 1 до 10 килобайт каждый может иметь преимущества, например, если контент является текстовым: стандартные инструменты, такие как grep или awk хорошо работают на них.

Это действительно зависит от вашего приложения.

licensed under cc by-sa 3.0 with attribution.