Какое хранилище использовать для хранения одной таблицы с большим кол-вом записей?
Здравствуйте. Подскажите пожалуйста, у меня есть таблица, в ней 5 столбцов path|name|type|user|date
Таблица может содержать миллионы записей (она хранит файловую структуру резервных копий всех пользователей за определённое время). Вопрос: где лучше это всё хранить? Почему я вообще пришёл к тому, что надо хранить файловую структуру бэкапов в хранилище (базе) данных?
Потому что сейчас у каждого бэкапа, который принадлежит пользователю, есть файл *.txt.gz, который хранит ту же самую информацию. Если мне нужно получить список файлов и директорий в какой-то директории, мне надо прочитать файл, и распарсить каждую его строку. Это занимает много времени (особенно, если в файле большое количество строк). Зачем я храню структуру файлов в бэкапе?
Я хочу дать пользователю своего скрипта возможность восстанавливать из резервной копии отдельный файл или папку и показывать ему список файлов и папок в произвольной директории (той, которую он выберет). Почему я не использую стандартные утилиты командной строки вроде tar --list
Архив лежит на удалённом сервере, а мне нужно будет к нему подключаться, выполнять эту команду и парсить выхлоп команды tar --list
Написать свой велосипед конечно интересней, чем научиться пользоваться одним из существующих.
Раз уж это ваш выбор - делайте его из того, что знаете: из водопроводных труб, если вы - водопроводчик, или из говна и палок, если вы больше в этой теме.
longclaps, в результате пришёл к следующему решению:
Хранить данные в Redis, где каждому path соответствует поле с данными в формате JSON. А эти данные уже содержат список папок и файлов по конкретному пути, тип пути (файл/директория/символическая ссылка и пр.)
longclaps, я в курсе про существующие решения для бэкапа. Я пишу свой скрипт (свой велосипед), для того, чтобы избежать установки дополнительного программного обеспечения на сервер.
Да без разницы какую базу использовать.
Если я правильно понял задачу, что нужно хранить список содержимого ассоциированного с конкретным path, я бы использовал redis