SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » isc_bpb_type_stream (не вижу разницы)
Re: isc_bpb_type_stream [сообщение #1217 является ответом на сообщение #1214] Thu, 29 December 2022 00:48 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
МП писал(а) Wed, 28 December 2022 17:01
касаемо roundtrip'ов: я правильно понимаю, что пофигу стримовый БЛОБ, или нет, но больше 64к за один вызов isc_get_segmet() не будет ну никак?
Да, правильно.
Re: isc_bpb_type_stream [сообщение #1218 является ответом на сообщение #1216] Thu, 29 December 2022 12:22 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
Старый Плюшев
Всё-таки прогресс - он от лукавого и развращает, порождает шаблонность мышления. Вот году эдак в 96м, ещё в здании ВЧК на углу Гороховой и Адмиралтейской, с ихним музеем на втором этаже, выкопали яму во дворе-колодце, оборудовали кессон, вытяжку наладили, поставили сервер, протянули провода, заасфальтировали и года полтора, пока не переехали на Робеспьера, в ус не дули. Облака, датацентры... Крылья, крылья... Ноги!
невоспроизводимая технология.
секреты былой цивилизации утрачены...
Re: isc_bpb_type_stream [сообщение #1219 является ответом на сообщение #1200] Thu, 29 December 2022 12:27 Переход к предыдущему сообщениюПереход к следующему сообщению
Dmitry Kovalenko в настоящее время не в онлайне  Dmitry Kovalenko
Сообщений: 51
Зарегистрирован: December 2022
Member
МП писал(а) Tue, 27 December 2022 16:35
Dmitry Kovalenko
Ну тогда завезите денег серверописателям, чтобы они (хотя бы) сделали загрузку/создание блобов за одно обращение к серверу.
да хотя бы размер сегмента больше 64к.
но сильно подозреваю, что помимо нового API это повлечёт ещё и новую ODS.
Я тут ничего сказать не могу Smile

Мой встроенный клиент игнорирует "сегменты" клиента и пишет блоками по 64K-1 (возможно это я из FBPlus позаимствовал). Там были опасения связанные с кодовыми страницами - при записи 64K WIN1251 символов в UTF8-BLOB он станет 128K. Но вроде как сервер переваривает это без проблем - у меня куча есть связанных тестов. FB3 - точно переваривает, но возможно и FB2.5 тоже.

Насчет потоковых (не сегментированных) блобов. Я хотел на них полностью переехать. Но у них, если я все правильно помню, вылезло ограничение на общий размер в 4GB. Массивы, кстати, можно хранить только в потоковых блобах.

---
Вообще по твоим проблеме - тут, наверное, надо вообще менять стратегию.

Потому что она сильно напоминает мне как вы пытались работать с CVS через shared-папку. В локальной сети было хорошо. Как только стали работать через 64KB-канал (это 2004 год) - обмен данными реально стал еле дышать. Вылечилось переездом на CVSNT-сервер. Он до сих пор живет на VM и нормально (в плане скорости) работает удаленно через OpenVPN.

---
PS. Не ругайся на меня, если что Smile
Re: isc_bpb_type_stream [сообщение #1220 является ответом на сообщение #1217] Thu, 29 December 2022 12:42 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
hvlad
МП
касаемо roundtrip'ов: я правильно понимаю, что пофигу стримовый БЛОБ, или нет, но больше 64к за один вызов isc_get_segmet() не будет ну никак?
Да, правильно.
ну, знач я зря искал волшебный секрет.

на данном этапе развития образования ©, склоняюсь к тому, чтоб вместо БЛОБов пользовать SSH/SCP, а в базе - ссылка на файл.

зы: на стандартной офисной сети (100base-T) даже позывов таких не возникало.
Re: isc_bpb_type_stream [сообщение #1221 является ответом на сообщение #1219] Thu, 29 December 2022 13:10 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
Dmitry Kovalenko
Мой встроенный клиент игнорирует "сегменты" клиента и пишет блоками по 64K-1 (возможно это я из FBPlus позаимствовал).
их все игнорируют.
только по-разному.
у Джефа в IBX размер 16К прибит гвоздиком.
у меня соответственно тоже так было, пока не начал ковырять эту тему.
сейчас тоже выставил 0xFFFF, хоть оно и не кратное двойке.
но на скорость это никак не повлияло.

Dmitry Kovalenko
Там были опасения связанные с кодовыми страницами - при записи 64K WIN1251 символов в UTF8-BLOB он станет 128K. Но вроде как сервер переваривает это без проблем - у меня куча есть связанных тестов. FB3 - точно переваривает, но возможно и FB2.5 тоже.
вот тут поподробнее, плс.
т.е. если ты выставил CHARSET UTF8 в секции BPB, то сервер схавает 128K байт за раз?

Dmitry Kovalenko
Насчет потоковых (не сегментированных) блобов. Я хотел на них полностью переехать. Но у них, если я все правильно помню, вылезло ограничение на общий размер в 4GB.
общий на таблицу, на базу, на коннект? подробнее.

Dmitry Kovalenko
Вообще по твоим проблеме - тут, наверное, надо вообще менять стратегию.
уже в процессе.

Dmitry Kovalenko
PS. Не ругайся на меня, если что Smile
когда это я последний раз ругался? не помню...
Re: isc_bpb_type_stream [сообщение #1222 является ответом на сообщение #1221] Thu, 29 December 2022 13:44 Переход к предыдущему сообщениюПереход к следующему сообщению
Dmitry Kovalenko в настоящее время не в онлайне  Dmitry Kovalenko
Сообщений: 51
Зарегистрирован: December 2022
Member
МП писал(а) Thu, 29 December 2022 13:10

Dmitry Kovalenko
Там были опасения связанные с кодовыми страницами - при записи 64K WIN1251 символов в UTF8-BLOB он станет 128K. Но вроде как сервер переваривает это без проблем - у меня куча есть связанных тестов. FB3 - точно переваривает, но возможно и FB2.5 тоже.
вот тут поподробнее, плс.
т.е. если ты выставил CHARSET UTF8 в секции BPB, то сервер схавает 128K байт за раз?
Нет, в BPB я ничего такого не указываю... BPB определяется только для потоковых блобов (которые для массивов):
isc_api::ibp_isc_bpb_version1,
isc_api::ibp_isc_bpb_type,
/*length*/1,
isc_api::ibp_isc_bpb_type_stream

--- Я про другое:
Блоб в базе определен как UTF8, а клиент работает с WIN1251-подключением.

Клиент закачивает максимальный (64K-1) сегмент с WIN1251-данными, а сервер эти данные конвертирует в UTF8.

То есть, формально, сервер будет работать с преобразованным сегментом больше 64KB.

Что он с ним там дальше делает - я не могу сказать. Наверное пилит на меньшие порции, чтобы влазили в 64K-1.

МП писал(а) Thu, 29 December 2022 13:10

Dmitry Kovalenko
Насчет потоковых (не сегментированных) блобов. Я хотел на них полностью переехать. Но у них, если я все правильно помню, вылезло ограничение на общий размер в 4GB.
общий на таблицу, на базу, на коннект? подробнее.
На блоб. В такой блоб больше 4GB не запишешь. Сегментные блобы тянут больше - я 8GB как-то пробовал.

[Обновления: Thu, 29 December 2022 15:33]

Известить модератора

Re: isc_bpb_type_stream [сообщение #1226 является ответом на сообщение #1218] Fri, 30 December 2022 20:53 Переход к предыдущему сообщениюПереход к следующему сообщению
Старый Плюшев в настоящее время не в онлайне  Старый Плюшев
Сообщений: 95
Зарегистрирован: August 2022
Географическое положение: Ленинград
Member
Послание в будущее, в следующий год. МП, слушай, я не врубаюсь какие огромные блобы вы успели без меня наплодить, но надеюсь что всё-таки не десятки гигов. В таком случае задействовать имеющиеся сервера, натолкав их памятью по самое не балуй, в качестве in-memory, в том или ином варианте, хранилищ этого счастья, синхронизируемого путём одновременной передачи изменений в облако и в него через некий аппсервер. Многомудрой илите можно ничего не докладывать и не объяснять, ведь даже аварийная кнопка не нужна, при изъятии питание-то выключат.
Re: isc_bpb_type_stream [сообщение #1230 является ответом на сообщение #1226] Mon, 02 January 2023 13:53 Переход к предыдущему сообщениюПереход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 198
Зарегистрирован: September 2022
Senior Member
Старый Плюшев писал(а) Fri, 30 December 2022 20:53
...я не врубаюсь какие огромные блобы вы успели без меня наплодить, но надеюсь что всё-таки не десятки гигов...
А ведь ещё в январе 2021го Джонни Мнемоник щеголял с 80 гигами... Smile
https://youtu.be/ghJwRS2stLE

Re: isc_bpb_type_stream [сообщение #1336 является ответом на сообщение #1230] Sat, 14 January 2023 09:42 Переход к предыдущему сообщениюПереход к следующему сообщению
Dmitry Kovalenko в настоящее время не в онлайне  Dmitry Kovalenko
Сообщений: 51
Зарегистрирован: December 2022
Member
Ну и до кучи.

На FB3 OCTET_LENGTH для 8GB блоба продолжает возвращать 0.

Только что проверил.

Так что хитроумное решение с чтением блоба через VARCHAR, в общем случае, работать не будет.

---
Чтобы два раза не вставать - со Старым Новым Годом!
Re: isc_bpb_type_stream [сообщение #1368 является ответом на сообщение #1336] Tue, 17 January 2023 19:22 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
А кто-нибудь был в курсе, что в потоковые блобы можно посылать куски больше 64к?
Re: isc_bpb_type_stream [сообщение #1370 является ответом на сообщение #1368] Wed, 18 January 2023 12:02 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SD
. А кто-нибудь был в курсе, что в потоковые блобы можно посылать куски больше 64к?
поясни.
каким макаром?
Re: isc_bpb_type_stream [сообщение #1371 является ответом на сообщение #1370] Wed, 18 January 2023 15:22 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Через "новое API". Там размер буфера unsigned, то бишь четырёхбайтовый.

[Обновления: Wed, 18 January 2023 15:22]

Известить модератора

Re: isc_bpb_type_stream [сообщение #1374 является ответом на сообщение #1371] Wed, 18 January 2023 15:55 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SD
. Через "новое API". Там размер буфера unsigned, то бишь четырёхбайтовый.
а оно работает должным образом?
в том смысле, что может это "заготовка на будущее"?
Re: isc_bpb_type_stream [сообщение #1379 является ответом на сообщение #1374] Thu, 19 January 2023 01:54 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Я это в исходниках движка нашёл когда искал какую ошибку выкидывать при получении размера больше 64к. Сильно удивился. Хотя, конечно, могу как обычно ошибаться в прочтении кода.
Re: isc_bpb_type_stream [сообщение #1383 является ответом на сообщение #1379] Thu, 19 January 2023 12:16 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
а в какой версии?
Re: isc_bpb_type_stream [сообщение #1390 является ответом на сообщение #1383] Thu, 19 January 2023 15:33 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
В тройке посмотрел, тоже есть:
if (buffer_length <= MAX_USHORT)
	b->BLB_put_segment(tdbb, buffer, buffer_length);
else if (!b->isSegmented())
	b->BLB_put_data(tdbb, static_cast<const UCHAR*>(buffer), buffer_length);
else
{
	ERR_post(Arg::Gds(isc_imp_exc) << Arg::Gds(isc_blobtoobig) <<
			 Arg::Gds(isc_random) << "Segment size >= 64Kb");
}
Re: isc_bpb_type_stream [сообщение #1391 является ответом на сообщение #1390] Thu, 19 January 2023 15:41 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SD
. В тройке посмотрел, тоже есть:
if (buffer_length <= MAX_USHORT)
	b->BLB_put_segment(tdbb, buffer, buffer_length);
else if (!b->isSegmented())
	b->BLB_put_data(tdbb, static_cast<const UCHAR*>(buffer), buffer_length);
else
{
	ERR_post(Arg::Gds(isc_imp_exc) << Arg::Gds(isc_blobtoobig) <<
			 Arg::Gds(isc_random) << "Segment size >= 64Kb");
}
вон оно чо, Михалыч... 🄯
отдельную функцию BLB_put_data зафигачили.
а в isc_API её не портировали... Crying or Very Sad
Re: isc_bpb_type_stream [сообщение #1399 является ответом на сообщение #1391] Fri, 20 January 2023 01:49 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Я тебя огорчу: у неё внутри простой цикл скармливания BLB_put_segment() полученного большого буфера маленькими кусками.

И это ещё не последний прикол. Конкатенация блоба с длинной строкой режет эту длинную строку на сегменты по 32к. Хотя, казалось бы, максимальная строка это 65532 байта, а максимальный сегмент 65535...
Re: isc_bpb_type_stream [сообщение #1405 является ответом на сообщение #1399] Fri, 20 January 2023 12:05 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SD
. Я тебя огорчу: у неё внутри простой цикл скармливания BLB_put_segment() полученного большого буфера маленькими кусками.

И это ещё не последний прикол. Конкатенация блоба с длинной строкой режет эту длинную строку на сегменты по 32к. Хотя, казалось бы, максимальная строка это 65532 байта, а максимальный сегмент 65535...
ну, тогда не вижу повода для огорчений.
я уж думал там внутри неонка...
Re: isc_bpb_type_stream [сообщение #1539 является ответом на сообщение #1184] Thu, 02 February 2023 15:27 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
МП писал(а) Mon, 26 December 2022 13:55
в локалке, когда сервер и клиенты сидят в одном сегменте сети, тормозов нет.
а вот как вынесли сервер на стороннюю площадку, стало грустно.
Попробуй свои блобы погонять на http://fireswarm.ddns.net
Потом поделись результатом.
Re: isc_bpb_type_stream [сообщение #1541 является ответом на сообщение #1539] Thu, 02 February 2023 21:01 Переход к предыдущему сообщениюПереход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 198
Зарегистрирован: September 2022
Senior Member
SD писал(а) Thu, 02 February 2023 15:27

Попробуй свои блобы погонять на http://fireswarm.ddns.net
Цитата:
Connection string: swarm://fireswarm.ddns.net/test
Что-то связи нет. Sad

[Обновления: Thu, 02 February 2023 21:01]

Известить модератора

Re: isc_bpb_type_stream [сообщение #1542 является ответом на сообщение #1541] Fri, 03 February 2023 01:33 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
А сообщение об ошибке какое?

PS: Ну да, без установленного клиента оно конечно подключиться не сможет.

[Обновления: Fri, 03 February 2023 01:36]

Известить модератора

Re: isc_bpb_type_stream [сообщение #1682 является ответом на сообщение #1542] Sat, 25 February 2023 15:15 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Теперь клиент доступен и для линуха.
Re: isc_bpb_type_stream [сообщение #1734 является ответом на сообщение #1682] Fri, 03 March 2023 01:42 Переход к предыдущему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Good news, Everyone! (c)

Я довёл клиента до состояния, когда IBExpert пусть и по минимуму, но работает. С 11 по 23 UTC все, кому не лень, могут помучить мой ноутбук.
Предыдущая тема: Не могу сделать бэкап
Следующая тема: Нравится ли форум?
Переход к форуму:
  


Текущее время: Sun Dec 22 16:19:30 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01088 секунд