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

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

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

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

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

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

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

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

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

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

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

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

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

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

их и в 4.0 нету
...
Рейтинг: 0 / 0
14.05.2020, 18:08
    #39957643
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование блобов в базе
Зато можно посылать запросы из UDR, обрабатывая результат любым способом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.05.2020, 18:09
    #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
14.05.2020, 18:11
    #39957649
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование блобов в базе
_Vasilisk_> Хочется что-то типа
>
> ІSELECT createBlob(....) FROM my_table t WHERE

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

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

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

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

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

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

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


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