BLOB или ссылки в PostgreSQL

Мне нужно хранить файлы двоичных данных в базе данных PostgreSQL, которая выполняется на сервере Ubuntu. Первоначально будет несколько десятков файлов размером примерно 250 кб каждый. Однако количество файлов со временем увеличивается. Иногда мне приходится извлекать данные из файлов для других анализов ниже по течению.

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

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

Я прочитал вопрос и ответы здесь ; комментарий там говорит о том, что сохранение двоичных файлов по ссылке (в файловой системе) на Linux лучше. Мои вопросы здесь относятся к PostgreSQL специально и к извлечению данных из файлов для различных анализов.

Обновление: аналогичный вопрос .

11 голосов | спросил SabreWolfy 23 Jpm1000000pmSun, 23 Jan 2011 13:30:11 +030011 2011, 13:30:11

1 ответ


9

Я думаю, что вы должны хранить данные в базе данных как обычный столбец bytea. Таким образом, вы получаете все преимущества базы данных, и вы можете обрабатывать данные с помощью функций базы данных (и даже PL /Python, если хотите). Более крупные элементы данных будут автоматически сохранены вне линии, поэтому нет причин для введения другой ссылочной ссылки.

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

ответил Peter Eisentraut 24 Jam1000000amMon, 24 Jan 2011 00:26:17 +030011 2011, 00:26:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132