FB1.5 Вопрос по BLOB.

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
_SRG_
Сообщения: 17
Зарегистрирован: 22 окт 2007, 09:36

FB1.5 Вопрос по BLOB.

Сообщение _SRG_ » 22 окт 2007, 09:48

Здравствуйте.

Хотел поинтересоваться - возможно ли средствами FB решить следующую задачку...

Возможно ли написать процедуру, которая будет собирать из таблиц поля типа VARCHAR склеивать их и возвращать все собранное в виде BLOB. Т.е. возмножно ли в процедуре создать "псевдо" BLOB накидать туда чего то и вернуть?

Заранее спасибо за помощь.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 окт 2007, 10:07

нет. блоб должен где-то сохраняться.
p.s. вопрос настолько простой, что мог бы и сам проверить перед тем как спрашивать.

_SRG_
Сообщения: 17
Зарегистрирован: 22 окт 2007, 09:36

Сообщение _SRG_ » 22 окт 2007, 10:33

kdv писал(а):нет. блоб должен где-то сохраняться.
p.s. вопрос настолько простой, что мог бы и сам проверить перед тем как спрашивать.
Согласен. Может быть, я плохо сформулировал вопрос. Меня больше инетерсует не "возможно/не возможно", а каким образом такое можно реализовать?

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 22 окт 2007, 11:38

kdv писал(а):нет. блоб должен где-то сохраняться.
Вопрос конечно интересный.
Меня всегда интересовало, почему UDF может порождать временный блоб, ни к какой таблице не привязанный, а процедура нет.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 окт 2007, 11:46

а каким образом такое можно реализовать?
которая будет собирать из таблиц поля типа VARCHAR склеивать их
b=a||c.

_SRG_
Сообщения: 17
Зарегистрирован: 22 окт 2007, 09:36

Сообщение _SRG_ » 22 окт 2007, 11:51

WildSery писал(а):
kdv писал(а):нет. блоб должен где-то сохраняться.
Вопрос конечно интересный.
Меня всегда интересовало, почему UDF может порождать временный блоб, ни к какой таблице не привязанный, а процедура нет.
Так. Ну это уже теплее. Т.е. все таки сущестует возможность реализовать необходимую мне штуку с помощью UDF? Хотелось бы по подробнее про это услышать.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 22 окт 2007, 12:08

_SRG_ писал(а):Т.е. все таки сущестует возможность реализовать необходимую мне штуку с помощью UDF?
Нет, тебе не пригодится.
UDF не работает с наборами данных.
Каков у тебя объём возвращаемых данных, почему строка не подходит? (ведь информация текстовая, я так понимаю)

_SRG_
Сообщения: 17
Зарегистрирован: 22 окт 2007, 09:36

Сообщение _SRG_ » 22 окт 2007, 12:23

WildSery писал(а):
_SRG_ писал(а):Т.е. все таки сущестует возможность реализовать необходимую мне штуку с помощью UDF?
Нет, тебе не пригодится.
UDF не работает с наборами данных.
Каков у тебя объём возвращаемых данных, почему строка не подходит? (ведь информация текстовая, я так понимаю)
Теоритически объем возвращаемых данных может быть сколь угодно большим, формируется он из простых строк, но при их конкатенации может получиться достаточно большой объем. Вот и была мысли собрать эту всю кучу в "псевдо BLOB" и выкинуть на клиенте.

_SRG_
Сообщения: 17
Зарегистрирован: 22 окт 2007, 09:36

Сообщение _SRG_ » 22 окт 2007, 12:31

kdv писал(а):
а каким образом такое можно реализовать?
которая будет собирать из таблиц поля типа VARCHAR склеивать их
b=a||c.
Вам это кажется смешным? Мне - нет.

Вопрос мой не с луны упал. Данную методику применял ранее, где в качестве СУБД выступал Oracle. Там была процедура которая собирала необходимые данные, формируя, в результате BLOB содержащий XML с данными (частенько - ОЧЕНЬ большого размера) все это возвращалось на клиента и сохранялось в файл. Именно поэтому возник вопрос о реализации аналогичного механизма в FB.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 окт 2007, 13:09

Вам это кажется смешным? Мне - нет.
я ничего смешного тут не вижу. Вы пока теоретизируете, или все-таки хоть что-нибудь попробовали?
Хотя скорее всего из идеи долго чего-то склеивать в блоб вряд-ли что получится. Не совсем ясно, зачем это делать на сервере и пересылать клиенту, если клиент сам может сделать то же самое, причем в данном случае куда проще.

_SRG_
Сообщения: 17
Зарегистрирован: 22 окт 2007, 09:36

Сообщение _SRG_ » 22 окт 2007, 15:38

kdv писал(а):
Вам это кажется смешным? Мне - нет.
я ничего смешного тут не вижу. Вы пока теоретизируете, или все-таки хоть что-нибудь попробовали?
Хотя скорее всего из идеи долго чего-то склеивать в блоб вряд-ли что получится. Не совсем ясно, зачем это делать на сервере и пересылать клиенту, если клиент сам может сделать то же самое, причем в данном случае куда проще.
К сожалению, решить данную проблему на клиенте в моих условиях не возмно. Вопрос звучал - Возможно ли со стороны сервера собрать строки в BLOB и вернуть.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 22 окт 2007, 16:21

_SRG_ писал(а):К сожалению, решить данную проблему на клиенте в моих условиях не возмно. Вопрос звучал - Возможно ли со стороны сервера собрать строки в BLOB и вернуть.
Не выйдет.
Даже в 2.1 можно напрямую работать с текстовыми блобами только до размера 32 килобайта.
Аргументируй, почему нельзя сделать на клиенте, и я возможно дам совет, хоть и проктологический, как можно-таки сделать этот блоб.

Slavik
Сообщения: 115
Зарегистрирован: 17 янв 2007, 11:52

Сообщение Slavik » 22 окт 2007, 17:01

Ну почему все так категорично: Нет и всё.

Можно :). Связка процедуры с несложной UDF, которая собственно и приклеивает к BLOB'у очередной строковый кусочек должна работать... Правда я не уверен на счёт скорости работы и расхода памяти. Но опять же, можно "кэшировать" обращения к UDF до 32Кб в строковой переменной.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 22 окт 2007, 17:44

Slavik писал(а):Можно :)
Щас научишь плохому.
Возможно, всё решается проще. Пусть автор скажет-таки, куда это ему запихать надо.

Карабас Барабас
Сообщения: 4
Зарегистрирован: 10 авг 2005, 16:25

Сообщение Карабас Барабас » 23 окт 2007, 08:57

_SRG_ писал(а):процедура которая собирала необходимые данные, формируя, в результате BLOB содержащий XML с данными (частенько - ОЧЕНЬ большого размера) все это возвращалось на клиента и сохранялось в файл. Именно поэтому возник вопрос о реализации аналогичного механизма в FB.
А выдавать на клиента построчно не подойдет ?

_SRG_
Сообщения: 17
Зарегистрирован: 22 окт 2007, 09:36

Сообщение _SRG_ » 24 окт 2007, 21:41

Вопрос решился ограничением собираемой строки <= VARCHAR(MAX_LEN).

Новая головоломка - http://forum.ibase.ru/phpBB2/viewtopic.php?t=3948

Ответить