URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3846
[ Назад ]

Исходное сообщение
"Why do not use BLOB (PostgreSQL)?"

Отправлено Alexandre , 19-Янв-05 09:40 
Может кто объяснить или ткнуть носом в ссылку: почему всегда пугают - "Не надо хранить бинарные данные в базе данных!". Почему не надо? Говорят про ужасные нагрузки на базу данных, на то, что она для этого не предназначена... Какой может быть вред от простой таблицы, которая имеет вид идентификатор/бинарные данные с индексом на идентификатор?
Понимаю, что реляционные базы данных создавались не для этого, но объясните, пожалуйста, кто знает - какие могут быть проблемы и почему так лучше не делать?

Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"Why do not use BLOB (PostgreSQL)?"
Отправлено DeadMustdie , 19-Янв-05 17:53 
Ничего фантастически плохого в хранении двоичных данных в БД нету.
Не так мало приложений, в которых по структурированному ключу необходимо
получить доступ к потоку неинтерпретируемых данных. Причём реляционный
движок обеспечивает высокую гибкость поиска.

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

Конкретно с PostgreSQL могут (теоретически) быть проблемы с
производительностью при большом числе записей с BLOB-полями. Последний
раз, когда я данным вопросом интересовался, у pgsql был весьма тупой
модуль, отвечающий за хранение данных, который очень не любил поля
плавающей длины. По слухам, сейчас проблема потихоньку устраняется.


"Why do not use BLOB (PostgreSQL)?"
Отправлено Alexandre , 19-Янв-05 19:45 
Спасибо за грамотный ответ.
А если использовать lo_* функции?

"Why do not use BLOB (PostgreSQL)?"
Отправлено Асен Тотин , 22-Янв-05 01:22 
Привет,

Простой вопрос: базы данных дла чего созданы? Простой ответ: для поиска. Истакь в бинарных объектах вы не в состоянии, ерго, незачем хранить бинарные данные в SQL. Все остальные соображния вторичны - нагрузка болюше, индексы, потребление памяти (SQL енджины прожорливы на память, чтоб держать всегда индексы "под рукой") и т.д.


"Why do not use BLOB (PostgreSQL)?"
Отправлено Alexandre , 22-Янв-05 16:55 
>Простой вопрос: базы данных дла чего созданы? Простой ответ: для поиска. Истакь
>в бинарных объектах вы не в состоянии, ерго, незачем хранить бинарные
>данные в SQL. Все остальные соображния вторичны - нагрузка болюше, индексы,
>потребление памяти (SQL енджины прожорливы на память, чтоб держать всегда индексы
>"под рукой") и т.д.

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

Хотя общая мысль - интересная...