powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
25 сообщений из 91, страница 3 из 4
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888193
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin
Почему не пойти на встречу доморощенным (это я про себя) фуллстек программерам, которые должны быть "и швец, и жнец, и на дуде игрец", и не прописать эту особенность в доке?

почему доморощенным фулстекам не занятся пэхапэ жыэс и майэскуэль?
хотя... в топку пэхапэ, сейчас модно все на жыэс делать
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888323
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дегтярев Евгений

почему доморощенным фулстекам не занятся пэхапэ жыэс и майэскуэль?
хотя... в топку пэхапэ, сейчас модно все на жыэс делать

пхп+мускуль прогеров сейчас как грязи, а олдскульных дельфийцев, начинавших на Электроника МК-52 и Спекки, днем с огнем, а в корпоративном сегменте делфи будут еще долго жить.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888326
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ёёёёё


С чего бы связь между серверами должна работать особым образом?

Так из-за чего-то весь сыр-бор! Не встречал в документации КАК работает связка 2-х ФБ при выполнении запроса к удаленной базе. Когда 1 база, 1 сервер - все понятно, расписано и вопросов нет, но когда в цепи отработки запроса ДВА сервера - непонятно (мне по крайней мере) кто какую часть работы выполняет и на каком языке они общаются.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888327
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

те, кто начинал на МК-52, обычно лезут в суть вещей и таки постигают её.
Без обид :)

PS у меня был Б3-34 и о МК-52 можно было разве что помечтать ;)
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888330
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin
Не встречал в документации КАК работает связка 2-х ФБ при выполнении запроса к удаленной базе.
Локальный сервер выступает как клиент удалённого, пользуясь обычным клиентом и обычным API.
Не нужно искать "волшебную пендель палочку" везде, где что-то не понятно.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888335
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
GrigoriyFomin,

те, кто начинал на МК-52, обычно лезут в суть вещей и таки постигают её.
Без обид :)

PS у меня был Б3-34 и о МК-52 можно было разве что помечтать ;)

Еггог-ологией не увлекался, так что возможно не тру :))
А суть вещей-таки и пытаюсь понять из-за отсутствия искомого в документации.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888371
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin
пхп+мускуль прогеров сейчас как грязи

ну тогда нодэжыэс и монгодиби - стильно модно молодежна
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888425
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
GrigoriyFomin,

те, кто начинал на МК-52, обычно лезут в суть вещей и таки постигают её.
Без обид :)

PS у меня был Б3-34 и о МК-52 можно было разве что помечтать ;)


Приезжай, дам поиграться


91 год.

У него брат есть, тоже программируемый. Номер не помню.

Мой первый двухпроцессорный компутер, на котором я гонял тесты решений уравнений с параметрами :)
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888462
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, на МК-52 я познал дзен языка ассемблера, регистров и косвенной адресации!
Сколько лабораторных и курсовых было обсчитано на нём!!!
И игры писал для интереса типа "Быки и коровы" и "Посадки на Луну"

Да, жив, есть к нему два внешних ПЗУ с программами (номер 2 и номер 4, ЕМНИП).
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39888840
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коваленко Дмитрий


Приезжай, дам поиграться


91 год.
У него брат есть, тоже программируемый. Номер не помню.

Ничегоссе состояние - я свой в 94 году купил - только мк-52, БП и 2 мануала родных. Тогда отдал $6 по тем ценам :)
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891094
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
только не понятно с какого бодуна я должен распинаться об особенностях сетевого протокола в "Руководстве по языку SQL".


Это называется "порог вхождения".
Если новички проекту Файрбёрд не нужны - то не нужно. Чем сложнее - тем лучше фильтрация. В клубе джентльменов должны быть только джентльмены.

Симонов Денис
Как по твоему работает EXECUTE STATEMENT ON EXTERNAL?


там не совсем ES

там for ES ... into VARIABLE

и тут вопрос, сама Variable - она lazy или как ?
когда реально вытаскивается БЛОБ - сразу когда отработал шаг цикла, или когда (если) к этой переменной в самом деле обратились?

если чтение выполняется всегда - то в принципе можно ещё в сетевом поставить флажок, hint "это поле понадобится, высылай".
хотя "правильнее", наверное, было бы сделать, чтобы у переменной в SP была lazy-загрузка

Симонов Денис
С первого взгляда это кажется хорошей идеей, но что если твой запрос возвращает миллиард записей? Что если в каждом БЛОБЕ лежит 100 Мбайт?


Конкретно к даннмоу случаю - хватило бы просто отправлять длинну блоба. Если она нулевая - то конент блоба можно рассчитать на клиенте и не тянуть по сети, хоть бы даже и прямым перебором.
Другой вопрос - насколько это типовая ситуация, хранить в блобах данные нулевой длины???
Как вариант, можно в любой БД хранить специальный константный блоб нулевой длины с заранее известныйм ID, вот специально для таких БД. Много места он не займет.

В общем же случае - сделать какую-то оценку, статическую или динамическую на основе наблюдаемой задержки в round-trip. Блобы меньшей длины конвертируются в VARCHAR с эквивалентным CHARSET, большей - остаются блобами.
При этом, видимо, в протокол потребуется вводить понятие типа shadow column, который существует только как отображение основного столбца на другой тип данных. Если он null, то отображения нет и читай из основного. Если он not null - то клиент может рассчитать данные основного столбца на основании теневого столбца и основной столбец не дёргать, если захочет.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891104
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Симонов ДенисТипа повесить жирное предупреждение. Только не понятно в какой.

И какое именно предупреждение - тоже непонятно. "Идиотам вход воспрещён"?..

Какое - примерно понятно.

В описании BLOB'ов как типа указать, что чтение их выполняется множеством маленьких сетевых запросов, у каждого - свой раундтрип, и ограничивать скорость работы будет не пропускная способность сети, а латентность. И что хранить в блобах данные малого размера поэтому очень неэффективно как для места на диске, так и особенно для скорости работы по сети. А случай GF туда хорошим примером будет. "У друга моего друга однажды..."

И ссылки - на википедию в статьи по раундтрипам и латентности, а заодно на статью на Хабре про Видео mail.ru, как оно из США не работало, и пока разработчик лично в США не съездил и не убедился на месте - поправить не могли Там как раз хорошая обзорная статья по проблеме.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891106
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Это так мило - описывать возможные пути решения проблемы, которую сам же и придумал.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891108
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Ariochтам не совсем ES

там for ES ... into VARIABLE


какая разница?

AriochКонкретно к даннмоу случаю - хватило бы просто отправлять длинну блоба. Если она нулевая - то конент блоба можно рассчитать на клиенте и не тянуть по сети, хоть бы даже и прямым перебором.
Другой вопрос - насколько это типовая ситуация, хранить в блобах данные нулевой длины???
Как вариант, можно в любой БД хранить специальный константный блоб нулевой длины с заранее известныйм ID, вот специально для таких БД. Много места он не займет.

ещё один. Ты в API работы с блобами заглядывал вообще?
В куда ты содержимое блоба собираешься класть? Напомню наш API для простых типов работает с буфером фиксированной ширины. Сколько же надо отвести памяти под маленький блоб? А если он не один? Где её отвести? Как клиентское приложение должно догадаться что вот здесь блоб целиком, а вот тут надо ещё докачивать?

Ты бы взял и продумал протокол, структуры и апи да и расписал здесь. Глядишь натолкнёшь разработчиков на путь истинный
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891128
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разница именно в том, что простой select то ли будет читать поле с BLOBом, то ли нет

а PSQL FOR SELECT - вероятно читает всегда. Или не всегда? Или в SP переменная после SELECT может содержать только BLOB id, пока её реально не попытаются прочитать в коде?

Сколько - та самая оценка, когда ожидаемые минусу перевесят ожидаемые плюсы.
Где - в буфере под строку, в сетевых пакетах - в запись каждой строки.
Несколько блобов от одного не отличаются, оценка делается для "сферического блоба в вакууме". Конечно, идеально было бы иметь статистику для конкретного столбца в конкретной таблице, да ещё и с конкретным приложением-клиентом на конкретном рабочем месте - но это не реально. А вот roundtrip latency известна.
Клиентское приложение догадываться не будет, если использует старый API. Возможно, это вообще не нужно на уровень публичного API вытаскивать и можно целиком внутри wire protocol держать.
"Докачивать" блоб не нужно, он или полностью влез в shadow column, или нет.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891142
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

зачем select или for select будет читать содержимое блоба? ему типа, делать больше нечего?
Блоб читается если только ты из него что-то выколупываешь, ищешь в нем функцией или udf, и т.д.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891158
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

ты давай без абстракций. Про сферического коня в вакууме и я могу фантазировать.
Скажи сколько надо в байтах? А то когда ожидаемые минусу перевесят ожидаемые плюсы... Это когда?
Напиши структуру буфера. Надеюсь для простых типов ты это умеешь делать? Необязательно в виде SQLDA. Можно просто record на который буфер маппиться будет, как это в UDR делают.
Типа того

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
TRecord = record
  id: Int64;
  nullId: WordBool;
  name: record 
    len: smallint; 
    name: array[0..52] of AnsiChar;
  end;
  nullName: WordBool;
  blobId1: ISC_QUAD;
  nullBlobId1: WordBool;
  blobId2: ISC_QUAD;
  nullBlobId2: WordBool;
end;



Давай воткни сюда свои фантомные блобы. И главное подумай как не сломать обратную совместимость и донести о своём желании движку
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891160
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
зачем select или for select будет читать содержимое блоба?

Намекаешь на то, что айдишники блобов ценны сами по себе, без содержания блобов?
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891182
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

я ведь уже сказал, что такое делать надо на уровне сетевого протокола, и вываливать это наружу в виде SQLDA скорее всего нe нужно

обратная совместимость - а как это сейчас решается в wire протокол? скорее всего, версией протокола. Если не введи "локальную" расширяемость на тэгах.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891184
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

SP не обязана обращаться к переменным.

Переменная может быть "просто так, на будущее"
Может быть, обращение к ней было, но потом его убрали/закомментировали.
Может быть, обращение к ней будет условным, в зависимости от других переменных.

Но - для этого у переменных в SP должен быть механизм lazy evaluation, а я очень сомневаюсь, что такой есть.
Но судя по реплике KDV - таки есть
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891185
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

SP не обязана обращаться к переменным.

Переменная может быть "просто так, на будущее"
Может быть, обращение к ней было, но потом его убрали/закомментировали.
Может быть, обращение к ней будет условным, в зависимости от других переменных.

Но - для этого у переменных в SP должен быть механизм lazy evaluation, а я очень сомневаюсь, что такой есть.
Но судя по реплике KDV - таки есть
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891187
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

blob id - это не содержимое блоба. При этом Arioch пишет
"простой select то ли будет читать поле с BLOBом, то ли нет
а PSQL FOR SELECT - вероятно читает всегда."

я телепатирую, что имеется в виду содержимое блоба, а не его id в блоб-столбце.
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891195
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Сетевой протокол это как данные передаются по сети. Но когда ты эти данные прокачал ты должен их где-то хранить. Я тебя спрашиваю где?
В случае курсоров есть префетч, и там хранятся несколько записей, чтобы не слать сетевой пакет на каждый фетч из курсора. С блобами что ли так же хочешь? В принципе наверное возможно, но я не уверен
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891201
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

хотя тут есть проблема с отложенностью чтения блоба через API. А что если его вообще не прочитают? Лишний трафик по сети гонять. И сколько он должен хранится этот самый буфер под подкаченные блобы?
...
Рейтинг: 0 / 0
Обнаружил баг или это неизвестная мне фича - блоб поле на удаленной БД
    #39891238
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Arioch,

хотя тут есть проблема с отложенностью чтения блоба через API. А что если его вообще не прочитают? Лишний трафик по сети гонять. И сколько он должен хранится этот самый буфер под подкаченные блобы?


Да, именно так. Как и с любой оптимизацией и любой эвристикой - есть риск "зря стараться".
То же "предсказание ветвлений" или "упреждающее чтение" в процессоре, уж какие там сложности наворачивают, детекторы того, детекторы всего, и всё равно иногда ошибаются.

Поэтому скорее всего бесполезно задавать константу (разве что только для отсечения совсем маргинальных случаев вида пустой строки или строки из 3 букв).
А только динамическое подстраивание под реально наблюдаемые в данном подключении условия сети.
И если в firebird.conf или database.conf, то тоже, видимо, подстройка может быть лишь не в абсолютных единицах, а в каких-то условных и вероятностных "больше склоняемся к такому варианту".

Симонов Денис
Но когда ты эти данные прокачал ты должен их где-то хранить. Я тебя спрашиваю где?


Ну я же уже написал! к запросу добавляются специальные невидимые, теневые столбцы "блоб из столбца M, если влезает в короткий nullable varchar(nn)"

через fbclient.dll API они недоступны, но при запросе к BLOB'ам клиентская библиотека туда поглядывает

jaybird и .net provider сами разберутся, если захотят обновлённый wire protocol реализовывать

Симонов Денис
И сколько он должен хранится этот самый буфер под подкаченные блобы?


Если предположить, что буфер под микроблобы - часть буфера строки, невидимый столбец, - то столько же, сколько живёт на клиенте буфер этой строки. Пока он жив - чтение BLOB'a выполняется из него. Уехала строка на радугу - всё, shortcut просрочен, читайте через обычные раунд-трипы.

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


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