2008-10-22 2 views
6

Мне нужны клиенты, чтобы иметь возможность загружать PDF-файлы писем, которые были отправлены им.Должен ли я динамически воссоздавать PDF-файл, а не хранить его в базе данных или в файловой системе?

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

То, что я хочу знать:

  • бы разумной альтернативой будет просто хранить информацию письмо в базе данных, и воссоздать PDF «на лету», когда она запрашивается?
  • Этот подход превосходит или выводит PDF из файловой системы?

ответ

3

Я бы хранить его по двум причинам

1) Если вы когда-нибудь изменить, как вы генерировать PDF, вы, вероятно, не хотите, исторические элементы, чтобы изменить.Если вы генерируете их каждый раз, либо они будут меняться, либо вам необходимо сохранить код совместимости для создания записей «старого стиля»

2) Дисковое пространство дешево. Терпения пользователя нет. Если вы на самом деле не нажали для хранения или вытащить из хранилища, это сложнее, чем генерировать PDF, будьте добры к своим пользователям и сохраните их.

Очевидно, что если вы создадите тысячи из них в час из редкого набора данных, у вас может не быть хранилища. Но если у вас есть место, я бы проголосовал за «использовать его»

0

Я склонен сказать «это зависит».

Когда один документ запрашивается много раз, это может быть экономия, если вы создаете его по первому запросу и извлекаете его подпоследовательно.

OTOH, если большинство запросов на документ имеют тип только один раз, и процесс создания не поглощает большую часть вашего объема сервера, «на лету» будет иметь явное преимущество.

0

Если вы используете ASP.NET, почему бы не кэшировать PDF. Ваш кеш может храниться в базе данных, если вам нравится или оставлен в памяти столько, сколько вам может понадобиться в первую очередь. enterprise library реализует это для вас в блоке приложения кэширования, и он очень прост в использовании. Если вы кешируете объект, создайте хранилище в базе данных с помощью блока, а затем загрузите его, когда вам это нужно, вам не придется беспокоиться о его повторном создании.

9

Если это для архивных целей, я бы определенно сохранил PDF, потому что в будущем ваш скрипт генерации PDF может измениться, а затем письмо не будет точно таким же, как и то, что было первоначально отправлено. Клиент будет ожидать, что он будет точно таким же.

Не имеет значения, какой подход превосходит, иногда лучше пойти на какой-то подход, более безопасный.

+0

Все, что я когда-либо делал, требует архивного метода. Мы фактически добавили триггер в таблицу, чтобы новый PDF был сгенерирован всякий раз, когда запись была вставлена ​​или обновлена. – 2008-10-22 22:47:56

0

Немногие вещи, которые следует учитывать, - это генерация PDF на основе данных, как они существовали в определенный момент времени. НАПРИМЕР. законопроект, основанный на данных за предыдущий месяц?

Если да, то будете ли вы использовать один и тот же шаблон каждый месяц для создания этого письма? Что произойдет, если/когда формат письма изменится, если вы регенерируете «на лету», это уже не то, что было отправлено им. Возможно ли сохранение потока PDF в базе данных?

Я предполагаю, что я получаю, вам нужно точное представление того, что было отправлено пользователю, или это гибко?

+0

Я предлагаю сохранить всю буквенную информацию на дату, когда она была изначально создана в ее собственных таблицах. Таким образом, текст абзаца и данные клиента не будут меняться. Я получаю (или теряю) что-либо с помощью «на лету»? – Tony 2008-10-23 14:09:38

2

Есть ли причина судебной экспертизы, почему вы должны вести учет писем, отправленных клиентам? Если вы собираетесь обновлять «на лету», как вы знаете, что будущие изменения кода не будут переписывать письмо (или, по крайней мере, клиент может сделать этот аргумент в суде, если информация используется в судебном процессе) ...

0

Вопрос о том, следует ли динамически создавать или хранить их в формате pdf, скорее напоминает вопрос о законе, чем вопрос программирования.

Если у вас нет доступа к юрисконсульту, который может дать руководство по этому вопросу, это будет намного безопаснее, если вы ошибетесь на стороне осторожности и храните их в статике.

0

До тех пор, как документ PDF имеет постоянный характер (а не только рабочий документ, а что-то официальное, подписанное и отправленное где-то еще в компании или за пределами компании), вы должны иметь копию этого файла PDF на вашей сети и ссылку на этот файл в вашей базе данных.

Вы не можете полагаться на имеющиеся данные, чтобы воспроизвести тот же документ в разное время в основном потому, что:

  1. Данные могут быть изменены (да предположить, что письмо решен быть подписан руководителем отдела! , а персонал изменился?)
  2. Формат вашего отчета будет изменяться (верхний колонтитул, нижний колонтитул, логотип и т. д.)
  3. Документ, который вы создали, хранится кем-то другим, кто будет использовать данные, доступные в документе.
Смежные вопросы