Получение вложений из BLOB-полей MySQL и в файловую систему - PullRequest
1 голос
/ 10 августа 2010

У меня есть стандартный сервер LAMP, и в настоящее время есть способ прикрепить / загрузить PDF или JPEG с инвентарной записью. Я разработал эту систему еще в 1999/2000 году, и она, конечно, стала довольно большой по размеру. Таблица, содержащая вложения, приближается к 10 ГБ, что делает работу с данными несколько медленной (особенно, когда я хочу запросить все и отсортировать по размеру файла, чтобы увидеть, где находятся большие вложения)

Я бы хотел «переместить» это вложение, хранящееся из MySQL, в файловую систему. Я просто хочу как-то сохранить путь к имени файла вместо текущего поля BLOB.

Кто-нибудь или кто-нибудь делал что-то подобное, и если да, то какой подход вы использовали, чтобы вытащить вложения из базы данных и в файловую систему? В настоящее время приложение написано на PHP, поэтому я думаю написать сценарий для перебора каждой записи и сохранения текущих BLOB-данных в файловой системе.

Есть какие-нибудь мысли или идеи о том, как лучше всего этого добиться?

Большое спасибо,

Bruce

1 Ответ

0 голосов
/ 10 августа 2010

В настоящее время приложение написано на PHP, поэтому я думаю написать сценарий для итерации каждой записи и сохранения текущих BLOB-данных в файловую систему.

Я думаю, что это в значительной степени так. Установите max_execution_time в PHP огромное значение и просмотрите каждую запись, fwrite() извлекая содержимое - не более того (если я не ошибаюсь в вашем вопросе).

После успешной записи запишите записанный путь к файлу в новое поле filepath и очистите содержимое поля BLOB (возможно, после выполнения сравнения CRC32, чтобы убедиться, что содержимое действительно записано правильно).

Если файл записан неправильно, не очищайте поле BLOB. Таким образом, вы можете возобновить сбойный прогон без необходимости повторного прохождения каждой записи.

...