СУБД против файловой системы для хранения файлов - PullRequest
0 голосов
/ 07 июня 2011

Есть ли преимущества хранения целых файлов в СУБД по сравнению с хранением файлов в файловой системе со ссылками на путь к файлу в СУРБД?

Какой подход должен быть быстрее? Когда я выбираю одно над другим? Имеет ли значение какая файловая система используется? (скажем, ext3)

Я не ожидаю, что файлы изменятся вообще. Файлы могут быть json или xml или pdf (менее вероятно). Кроме того, может не потребоваться часто обращаться к этим файлам. Они предназначены только для архивации.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 07 июня 2011

Учитывая, что файлы не должны изменяться, хранение файлов в СУБД ограничено.Основное преимущество хранения файлов в СУБД состоит в том, что СУБД знает, как управлять транзакциями, но если файлы не изменятся, то это преимущество становится крошечным.

Еще одно преимущество хранения файлов в СУБД состоит в том, чторезервная копия базы данных будет содержать файлы;если файлы хранятся отдельно, вам необходимо сделать резервную копию отдельного хранилища файлов, а также самой СУБД, чтобы обеспечить безопасность всех данных.

Еще одно преимущество хранения файлов в СУБД заключается в том, что база данных может обеспечить более тонкую защиту.контролирует доступ к файлам.

Основным преимуществом хранения файлов в файловой системе является то, что легко (проще) увидеть, что у вас есть.

Вторым преимуществом являетсячто вы можете создавать резервные копии или манипулировать файлами вне СУБД, хотя это также является недостатком с некоторых точек зрения.

Если файлы хранятся в BLOB-объектах в СУБД, то обычное клиентское программное обеспечение SQL может извлечьсодержимое поверх обычного соединения SQL.Если клиентское программное обеспечение SQL находится не на том же компьютере, что и СУБД и файлы, вам нужно беспокоиться о том, как клиенты делают захватывают данные файла.

Еще одно преимущество разделенияфайлы из СУБД в том, что файлы могут храниться с компьютера СУБД.С другой стороны, это усложняет загрузку файлов «в СУБД».


В целом, с учетом вышеперечисленных проблем, кажется, есть некоторые преимущества при работе с файлами вПодход СУБД.С другой стороны, многие люди используют подход «файлы в файловой системе», и они выживают.Может случиться так, что их клиенты SQL находятся на той же машине, что и СУБД, поэтому проблемы с передачей файлов не являются непреодолимыми, но это то, что меня больше всего беспокоит.

1 голос
/ 07 июня 2011

Чтобы добавить к тому, что написал Джонатан Леффлер:

СУБД не так эффективны при работе с BLOB-объектами, как при работе с объектами фиксированного размера, поэтому мы можем сказать, что СУБД "не любит" большие объекты. Также многие СУБД хранят большие двоичные объекты вне таблиц, в отдельном хранилище.

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

1 голос
/ 07 июня 2011

Если размер файла меньше 1 МБ, вы можете сохранить их в СУБД, но в противном случае рассмотрите возможность их хранения в файловой системе. Смотри http://technet.microsoft.com/en-us/library/bb933993.aspx

Есть ли какие-либо преимущества хранения целых файлов в СУБД по сравнению с хранением файлов в файловой системе со ссылками на путь к файлу в СУБД?

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

Какой подход должен быть быстрее?

RDBMS

Когда я выбираю одно над другим?

продиктовано практическими соображениями. рассмотрим файловую систему, если файл> 1 МБ. Многие провайдеры виртуального хостинга не включают FILESTREAM.

Имеет ли значение, какая файловая система используется?

Я не знаю об этом.

...