2016-02-06 9 views
3

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

У меня есть по крайней мере 2 варианта:

  1. хранить их в Postgres.
  2. Сохраните их как файлы.

Какие критерии следует учитывать для принятия наилучшего решения?

+0

Вы будете хранить их в базе данных, если их хранить необходимо для транзакций. Или если доступ к ним должен управляться с теми же привилегиями, что и остальные данные. Вы храните их в файловой системе, если внешние инструменты (resizer, web server, ...) должны получить доступ к этим файлам, размер которых превышает 1 ГБ. –

+0

Файлы - это песни. Песня загружается один раз и ее можно прослушивать (но не загружать) много раз. –

+0

Предположим, что после загрузки песни песни останутся в базе данных навсегда. –

ответ

6

Я хотел бы рассмотреть следующие вопросы:

  • Performance. Хранение двоичных файлов в файловой системе обычно лучше, как для чтения, так и для записи.
  • Безопасность. Доступ к файлам в файловой системе контролируется операционной системой, однако если вы храните файлы в базе данных, применяются правила доступа PostgreSQL.
  • Резервная консистенция. Если вы храните данные отдельно (файловая система и база данных), очень сложно иметь последовательную резервную копию. Резервное копирование файловой системы и резервное копирование базы данных, скорее всего, не синхронизированы.
  • Коммерческие объекты. Файловая система не является транзакционной, но, очевидно, PostgreSQL.
+0

Хранение файлов в файловой системе не обязательно выполняется быстрее. См. здесь: http://research.microsoft.com/apps/pubs/default.aspx?id=64525 (это для SQL Server, но я не удивлюсь, если что-то подобное было верно и для других СУБД) –

+0

масштабируемость? Если у вас много файлов для хранения, что предпочтительнее? –

+0

@a_horse_with_no_name. Я действительно сомневаюсь, что SQL Server работает лучше, чем файловая система в отношении двоичных файлов. –