файлы против файловых путей в базе данных - PullRequest
0 голосов
/ 04 февраля 2011

У меня довольно обычная таблица users (идентификатор, логин, пароль).И каждый пользователь может загружать PDF-файлы (которые должны быть менее 2 МБ).Это отражено в таблице users_pdf:

id | pdf     | user_id
---------------------
1  | some_pdf|  1
2  | pdf2    |  1
3  | pdf3    |  3

Вопрос в том, стоит ли хранить пути к файлам PDF в столбце pdf или вместо реальных файлов PDF?

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

Итак, что бы вы посоветовали?

UPD.Работа с файловой системой означает, что папка на пользователя, как

-users
|----user_id_1
   |--file.pdf
|----user_id_2
   |--file.pdf
   |--file.pdf
|----user_id_3
   |--file.pdf
   |--file.pdf

, так что если бы у меня было миллион пользователей, эта файловая структура была бы слишком медленной, верно?

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

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

1 голос
/ 04 февраля 2011

Вы сказали, что это менее 2 МБ, поэтому вариант сохранения файлов в таблице - вариант.Хотя лучшим решением является наличие системы управления документами, такой как alfresco, или даже использование существующего решения для управления версиями, такого как svn.(вместо непосредственного хранения в файловой системе вам нужна система управления контентом).Вы можете просто сохранить URL-адрес документа.Это поможет вам в обслуживании, позволит избежать вздутия базы данных, не повлияет на производительность вашей базы данных и, что более важно, упростит ваше программирование за счет использования существующего решения (я сказал, что управление версиями, на случай, если оно вам может понадобиться).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...