powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Формирование блобов в базе
25 сообщений из 30, страница 1 из 2
Формирование блобов в базе
    #39957547
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В базе есть куча данных, из которых нужно сформировать один блоб

Есть COM объект (с исходниками), который умеет формировать из данных нужный мне TStream.

Как бы это все красивее подружить? По сути мне нужна агрегатная UDF функция, которая работает в потоке с вызванным CoInitialize().

Версия сервера 3.0.5

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957552
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UDR.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957555
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
В базе есть куча данных, из которых нужно сформировать один блоб....

ох уж эта проктостоматология
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957576
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Как бы это все красивее подружить?

Только я не понял вопроса?

Или ты пытаешься сделать это на
сервере, не вываливая на клиента?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957579
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Или ты пытаешься сделать это на
сервере, не вываливая на клиента?
Именно так. С работой на клиенте все просто.
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957581
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда надо уточнять куда сохранить, когда вызывать и пр. детали.
А уж потом придумать как. Простая ХП чем не устраивает, например?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957604
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Тогда надо уточнять куда сохранить, когда вызывать и пр. детали
Сохранить в базу. Вызвать по команде пользователя
Гаджимурадов Рустам
Простая ХП чем не устраивает, например?
Еще раз, проблема именно в формировании бинарного стрима. Формат стрима знает конкретный COM-объект, с которым работают в таком виде.
Код: pascal
1.
2.
3.
4.
5.
obj.Add(...);
obj.Add(...);
obj.Add(...);
.....
obj.SaveToStream(strm)

Каждый Add - это строка в таблице. И т.к. это COM, то нужен еще и вызов Coinitialize. Каким боком тут ХП? Или ты предлагаешь в ней формировать блоб побайтово?
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957612
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

геморрой тот ещё. Это надо хендл блоба в процедуру возвращать и там следить за временем жизни.

Точно это надо на стороне сервера делать?
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957616
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Или ты предлагаешь в ней формировать блоб побайтово?

Стрим формируется кем и где (сам СОМ где)? Это независимый от БД объект?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957618
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

хотя если весь блоб формировать внутри одной UDR функции то можно и попроще.
Смутила ваша надпись про агрегатную функцию. Подумал, что хочется что-то типа

Код: plaintext
1.
2.
3.
b = CreateBlob();
addToBlob(b, 'a');
addToBlob(b, 'b');
CloseBlob(b);
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957632
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тройке же не было агрегатных UDR? Или уже были?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957637
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

их и в 4.0 нету
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957643
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато можно посылать запросы из UDR, обрабатывая результат любым способом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957644
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
(сам СОМ где)?
dll на сервере
Гаджимурадов Рустам
Это независимый от БД объект?
Да

Симонов Денис
Смутила ваша надпись про агрегатную функцию. Подумал, что хочется что-то типа
Код: plaintext
1.
2.
3.
b = CreateBlob();
addToBlob(b, 'a');
addToBlob(b, 'b');
CloseBlob(b);
Нет. Хочется что-то типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
  createBlob(....)
FROM
  my_table t
WHERE
  t.fld1 = ...
  ....
INTO
  :var_blob
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957649
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Хочется что-то типа
>
> ІSELECT createBlob(....) FROM my_table t WHERE

Гм... То ли я туплю, то ли лыжи того.
Простой List() не устраивает чем?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957654
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Хочется что-то типа

Весь вопрос в том что дальше происходит с var_blob. Если она сохраняется в базе, то это
нормально, хоть и денормализация, а если отдаётся клиенту, то это ахтунг и "руки отрывать".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957656
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Простой List() не устраивает чем?
LIST мне просто склеит строки. А блоб имеет строго определенный формат. Те же SMALLINT хранятся строго двумя байтами. У блоба есть свой заголовок... В общем LIST вообще не то.
Dimitry Sibiryakov
Весь вопрос в том что дальше происходит с var_blob
Сохраняется в базу, а потом отправляется на удаленную систему. Что удаленная система с ним делает, я не знаю
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957657
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

ещё раз повторяю пока что агрегатные функции писать нельзя.
Но как и сказал Dimitry Sibiryakov этот запрос целиком можно обработать внутри UDR и выплюнуть готовый блоб.
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957669
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> LIST мне просто склеит строки. А блоб имеет строго определенный формат.

Тогда пиши UDR (если в ХП возможностей недостаточно),
которая сформирует готовый БЛОБ и выплюнет 1 раз.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957673
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Сохраняется в базу, а потом отправляется на удаленную систему.

А сразу отправить на удалённую систему, без сохранения и прочих блобов что-то мешает?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957679
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что в интерфейсе удаленной системы ждёт на входе БЛОБ, а не датасет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957683
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что мешает сделать это вне базы и отправить во внешний мир?
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957684
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений> а что мешает сделать это вне базы и отправить во внешний мир?

Чтобы сделать это вне БД все строки (а их много) придётся тащить наружу из БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957706
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгений
а что мешает сделать это вне базы и отправить во внешний мир?
Разнесенные во времени операции формирования (с параметрами, задаваемыми пользователем) и самой отправкой
Гаджимурадов Рустам
Чтобы сделать это вне БД все строки (а их много) придётся тащить наружу из БД.
Даже скорее не это, потому, что блоб все равно придется тащить для отправки. А то, что параметры формирования блоба могут меняться. Разве, что в базу записывать сами параметры, а блоб формировать уже на выгрузке. Может даже это имеет смысл. Нужно подумать
...
Рейтинг: 0 / 0
Формирование блобов в базе
    #39957713
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Чтобы сделать это вне БД все строки (а их много) придётся тащить наружу из БД.

не каждую минуту такое делается, не вижу в этом проблемы, в том чтобы вытащить все эти данные из БД, правильно отформатировать и сложить на диск. когда нужно отдать с диска.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Формирование блобов в базе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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