powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сохранить поле bytea в файл в триггере
7 сообщений из 7, страница 1 из 1
Сохранить поле bytea в файл в триггере
    #39436423
mihmih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем таблицу:

Код: plsql
1.
2.
3.
4.
CREATE TABLE "public"."documentcontents" (
"documentid" uuid NOT NULL,
"content" bytea
)



Данные постоянно добавляются, но содержимое поля bytea используется редко, внутри текст, но запросов по содержимому нет.
Т.к. по сути бинарные данные хранятся в БД это вызывает излишнюю нагрузку.

Возникла идея (не меняя логику legacy-системы) хранить BLOB-ы просто в файловой системе:
1. По аналогии с хранением кеша squid создадим структуру папок:
/var/lib/postgresql/{00..FF} (или даже двухуровневую /var/lib/postgresql/{00..FF}/{00..FF}

2. При вставке данных триггером с помощью команды COPY BYNARY экспортировать значение поля в файл, в БД записывать null

3. При выборке поля из БД "подставлять" содержимое с помощью механизма RULES Postgresql

Как правильно написать триггер?
Или может идея в корне неправильная, тогда подскажите как можно сделать?
...
Рейтинг: 0 / 0
Сохранить поле bytea в файл в триггере
    #39436480
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmih,

а чем не устраивает lo 777
https://www.postgresql.org/docs/current/static/largeobjects.html

тем , что сделано за вас 777
...
Рейтинг: 0 / 0
Сохранить поле bytea в файл в триггере
    #39436488
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

Не надо LO.

Лучше всего заморочиться и выпилить это всё из базы совсем. Тем более если никому особо и не нужно.
Или же скриптом архивацию производить.
...
Рейтинг: 0 / 0
Сохранить поле bytea в файл в триггере
    #39436591
mihmih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понял, lo - это фишка для клиента (хранение больших бинарных объёмов в БД), работа через специальные дескрипторы.
У меня же задача - решить проблему хранения не затрагивая клиента.
...
Рейтинг: 0 / 0
Сохранить поле bytea в файл в триггере
    #39436606
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmihКак я понял, lo - это фишка для клиента (хранение больших бинарных объёмов в БД), работа через специальные дескрипторы.
У меня же задача - решить проблему хранения не затрагивая клиента.
LO- оставлена для совместимости.
Скорее всего. выпилят в будущих версиях.
Пользоваться не рекомендую, т.к. есть застарелые проблемы и косяки.
...
Рейтинг: 0 / 0
Сохранить поле bytea в файл в триггере
    #39436694
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmih,

см . например.
12677917
или более широко 00
http://www.sql.ru/forum/actualsearch.aspx?search=pg_file_write&sin=0&bid=7&a=&ma=0&dt=-1&s=1&so=1

насколько это ( 12677917 ) кошерно -- не знаю, но работает

зы :
https://www.postgresql.org/docs/current/static/adminpack.html
...
Рейтинг: 0 / 0
Сохранить поле bytea в файл в триггере
    #39436878
PgSQLanonymous3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mihmihТ.к. по сути бинарные данные хранятся в БД это вызывает излишнюю нагрузку.

Какую именно излишнюю нагрузку? Вы уверены, что проблема излишней нагрузки именно в этом?

mihmihИли может идея в корне неправильная, тогда подскажите как можно сделать?
Вы понимаете, что это совсем не одно и то же, и в результате ACID в отношении этого поля у Вас уже не будет?
Если Вас это устраивает, то вариант с adminpack может подойти. Кстати,
mihmihПри выборке поля из БД "подставлять" содержимое с помощью механизма RULES Postgresql

можете просто использовать VIEW, RULES на SELECT ничего большего всё равно не дают, а работать с VIEW проще, IMHO.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Сохранить поле bytea в файл в триггере
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]