Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Поимел нужду и желание написать BLOB фильтр для базы, работающей под Firebird 3.0.2 (64, Windows). Внимательно ознакомившись с а) Руководством по языку SQL СУБД Firebird 3.0 (2017); б) Набором fbudf.dll, fbudf.sql из поставки Firebird 3.0; в) Статьей "Как научиться писать UDF на Delphi за 21 минуту?" (1996, Олег Кукарцев) на ibase.ru; г) tbutil.pas (2002, Daniel Pereira Guimarаes and Anthony J. Caduto); д) blobsaveload.dpr (2007, KDV); e) ListUdf.dpr (2011, Мадорский Глеб Владимирович) - последнее по дате, что смог найти по теме UDF, кроме "Руководства", понял, что не могу получить ответы на следующие вопросы: 1) Каков интерфейс функции, реализующей BLOB фильтр? 2) Возможно ли использование 32-разрядной dll (контейнера udf) для 64-разрядного сервера? Посмотрел на прилагающиеся к серверу fbudf.dll и ib_udf.dll - они 64-разрядные. 3) Как правильно работать с передачей параметров BY DESCRIPTOR? Увидел в примерах структуры TDSC и TBlob - идею понял, но не уверен, что правильно. Тем более, что в 64-разрядном случае структуры наверняка будут иные. 4) Как правильно выделять память? Неужели все тем же malloc? А при 64 разрядах? Ответы на все эти, а так же на другие вопросы логично было бы найти в документе под названием "Спецификация интерфейса UDF и BLOB-фильтров для 32- и 64- разрядных серверов Firebird 3.0.2". Где бы его взять? Или хотя бы получить ответ на вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 21:46 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyansky, 1. Такой же как и UDF вроде. Примеров фильтров не видал ни разу. Есть внутреннии, но где их искать и помогут ли они хз 2. Нет 3. Вот тут подробно http://www.ibphoenix.com/files/Writing-External-Functions.pdf 4. ib_util_malloc Главный вопрос зачем это потребовалось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 21:57 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyОтветы на все эти, а так же на другие вопросы логично было бы найти в документе под названием "Спецификация интерфейса UDF и BLOB-фильтров для 32- и 64- разрядных серверов Firebird 3.0.2". Где бы его взять? Ты не поверишь, но из комплекта документации Interbase. "Developer’s Guide" и далее по ссылкам. Интерфейсы BLOB фильтров не менялись от начала времён. PS: А что, что 32-х и 64-х разрядные модули несовместимы в принципе это вообще базовые знания о функционировании компьютеров. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:11 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис1. Такой же как и UDF вроде Так какой - такой же? Какие входные параметры, выходные, возвращаемое значение? Спасибо за документ! Сейчас буду смотреть внимательно, но уже сейчас вижу - 64-разрядной специфики там нет. А её не может не быть. Как же тогда быть? Симонов Денисib_util_malloc Из 64-разрядной ib_util.dll? А где её взять? Симонов ДенисГлавный вопрос зачем это потребовалось? Есть здоровенный набор текстов, точнее, XML-файлов, упакованных в ZIP-файлы, которые лежат в файловой системе. Засовывать все это хозяйство в fdb смысла никакого нет, база и так толстая, она представляет собой разобранные эти самые XML-файлы, аккуратно разложенные по таблицам. Но иногда клиенту необходимо получить исходный файл. Вот я и подумал использовать механизм BLOB фильтров, который увидел в "Руководстве". Было бы удобно: клиент обращается как бы к BLOB-полю, которое на самом деле пустое, отрабатывает фильтр, udf-функция идет в недалеко лежащий ZIP-файл, достает нужный XML, клиент получает "содержимое" BLOB. И не нужно создавать другой, кроме sql connect, механизм передачи данных клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:26 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyИз 64-разрядной ib_util.dll? А где её взять? ты удивишься но входит в поставку 64-разрядного сервера Firebird ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:30 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТы не поверишь, но из комплекта документации Interbase. "Developer’s Guide" и далее по ссылкам. Интерфейсы BLOB фильтров не менялись от начала времён. PS: А что, что 32-х и 64-х разрядные модули несовместимы в принципе это вообще базовые знания о функционировании компьютеров. И где же взять интерфейсы именно для 64-разрядных модулей? Тоже из начала времен? Кстати, теоретически разработчики могли бы сделать и переходник для загрузки 32-разрядных библиотек udf в 64-разрядный процесс. Но это чисто теоретически, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:31 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyansky, не надо нести чушь про переходники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:32 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyклиент обращается как бы к BLOB-полю, которое на самом деле пустое, отрабатывает фильтр, udf-функция идет в недалеко лежащий ZIP-файл, достает нужный XML, клиент получает "содержимое" BLOBЗачем здесь вообще BLOB не осилил понять я. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:34 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyИ где же взять интерфейсы именно для 64-разрядных модулей? Тоже из начала времен?А интерфейсы одинаковые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:35 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
YuRockЗачем здесь вообще BLOB не осилил понять я. Кстати, да... Можно и просто строку вернуть. Ну, чтобы в IBExpert'е красиво xml разглядывать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:39 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyansky, если реальная цель только XML разглядывать в IBE то лучше от этой затеи отказаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:42 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Да нет, реальная цель более серьезная, но Вы и YuRock правы, что-то я зря уперся в эти фильтры, можно и обычной udf обойтись, возвращающей строку. Спасибо всем за подсказки! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:50 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyansky, ну тут свою UDF писал каждый второй в этой ветке. А вот имеющих дело с фильтрами я ещё не видел. В руководстве по языку декларация фильтров описана, а вот где посмотреть пример живого фильтра я не знаю. Знаю только что внутри Firebird использует встроенные BLOB-фильтры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:55 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Понял, терра инкогнита, на страх и риск первопроходца. На риск завалить сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 22:59 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyansky, хочешь новый экспериментов пиши сразу UDR ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2018, 23:06 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyansky, блоб-фильтр преобразует один тип блоба в другой. Например BLR в текст. Для твоей задачи они не нужны. UDF\UDR тебе в помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 01:13 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Как-то давно реализовывал UDF библиотеку для FirebirdSQL v2.5, реализующую работу с "сырым" форматом и использующую, в т.ч., BLOb. Возможно, тебе помогут эти куски исходников: кусок raw.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. Куски raw.cpp Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. librawudf.sql Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 10:14 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
hvladUDF\UDR тебе в помощь. На месте автора я бы тоже попытался найти обходные пути чтобы избежать создания временных блобов в базе. С UDR их, наверное, можно выкинуть из основной базы во временный файл, но всё равно это оверхэд. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 11:51 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, при чём тут блоб-фильтры ? Или ты опять о своём ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 12:10 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
hvladпри чём тут блоб-фильтры ? При том, что они выглядят как возможность формировать BLOB по кусками на лету и сразу отдавать на клиента, без сохранения где-либо. Представь себе фильтр, преобразующий имя файла в его содержимое. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 12:15 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, тут фильтр ни к чему, это можно и с помощью UDR сделать. Фильтр тут скорее для прозрачного преобразования zip -> xml или xml -> zip, где zip и xml подтипы блоб зарегистрированные пользователем. Вот только нужно ли это ещё большой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 12:20 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Симонов Денистут фильтр ни к чему, это можно и с помощью UDR сделать. Можно. Представь себе файл на пару гигов. UDR сначала перекачает его в базу, отдаст blob id, а потом клиент будет его из базы выкачивать. В конце сервер этот мусор будет собирать. Как тебе эта картинка?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 12:36 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovhvladпри чём тут блоб-фильтры ? При том, что они выглядят как возможность формировать BLOB по кусками на лету и сразу отдавать на клиента, без сохранения где-либо. Представь себе фильтр, преобразующий имя файла в его содержимое.У блоб-фильтра на входе блоб. Предлагаешь имя файла в блоб засунуть ? Ну, можно попробовать. Расскажешь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 12:40 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, а куда он денется, если ему встретится XML, который размером больше 32KB и в VarChar тупо не лезет ? P.S. > идет в недалеко лежащий ZIP-файл, достает нужный XML .....а я бы сразу ZIP передавал по сети, он же меньше, чем XML, значит по сети быстрее проскочит. Конечно, если на клиенте диск медленнее, чем скорость сети, то лучше распаковать на сервере.... Но все же едва ли. Совершенно безумный вариант - поднять на сервере p2p (например uTorrent BTSync), в БД держать хэши ZIP'ов с исходным XML-документом. SHA1 или MD5. Запросили файл, из БД прочитал хэш, сформировал magnet-ссылку - и пожалуйста, тащи хоть гигабайтный документ, асихнронно, и вовне процессов сервера и аппликухи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:04 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
hvladПредлагаешь имя файла в блоб засунуть ? Предлагаю. В Windows максимальная длина имени файла - 4К. В Линуксе, кажется, 1К. С учётом UTF-8 - это нужно VARCHAR(16KBytes) или, если запрещаем работу с Windows файлопомойками - VARCHAR(4Kbytes) Учитывая, что на диске записи пакуются RLE и ничего уровня LZ до сих пор нету... У меня сейчас нет под руками того старого документа о двоичном формате rows в FB и я не помню максимальной эффективности RLE... 64:1 ? 16:1 ? но в общем, не очевидно, что с блобами обязательно будет хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:12 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
AriochУ меня сейчас нет под руками того старого документа о двоичном формате rows в FB и я не помню максимальной эффективности RLE... 64:1 ? 16:1 ? вроде есть планы изменить это в 4.0. Не вижу профита от размещения имени файла в BLOB. Пути длинной 4K нормальные разработчики не используют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:18 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
06.07.2018 13:18, Симонов Денис пишет: > Пути длинной 4K нормальные разработчики не используют где ж ты видел среди разработчиков конечного софта НОРМАЛЬНЫХ... (шутко, если шо) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:22 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисНе вижу профита от размещения имени файла в BLOB. Пути длинной 4K нормальные разработчики не используют Ага "в колбасе сегодня потребности нет" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:25 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
hvladУ блоб-фильтра на входе блоб. Что-то мешает фильтру свой вход игнорировать и выдавать на выход что захочется?.. hvladПредлагаешь имя файла в блоб засунуть ? Почему бы и нет? Именно это ТС и собирался сделать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:29 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЧто-то мешает фильтру свой вход игнорировать и выдавать на выход что захочется?..То же, что мешает отвечать на все вопросы : 42 Dimitry SibiryakovhvladПредлагаешь имя файла в блоб засунуть ? Почему бы и нет? Именно это ТС и собирался сделать.Он об этом понятия не имел, пока это тут не прозвучало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:34 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
hvladОн об этом понятия не имел, пока это тут не прозвучало. Его второе сообщение в теме: shalamyanskyБыло бы удобно: клиент обращается как бы к BLOB-полю, которое на самом деле пустое, отрабатывает фильтр, udf-функция идет в недалеко лежащий ZIP-файл, достает нужный XML, клиент получает "содержимое" BLOB. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:45 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Arioch.....а я бы сразу ZIP передавал по сети, он же меньше, чем XML а вот, кстати, и потенциальная тема для BLOB-фильтра (безусловно то же самое можно сделать и другими способами и вообще вне Firebird) В ZIP-файле каждый поток самодостаточен. Предположим что-то вроде тоссинга FIDO-почты. На хаб от разных корреспондентов приезжают ZIP'ы в которых тысячи XML-документов, и их описания ("куски данных из XML разложенные в SQL-таблицах"). Хаб в свою очередь должен сформировать исходящие ZIP-пакеты на разные узлы и разослать. Т.е. надо будет из ZIP'ов доставать документы только для того, чтобы потом уложить их в другие ZIP'ы. Распаковывать и запаковывать обратно проще всего, до поры до времени. Но как вариант можно сделать функцию "передать файл №10 из xxxxx.zip как отдельный zip-файл бещ перепаковки" или даже "...файлы №10, 15, 36...." Если хранить исходные ZIP-файлы в самой БД (тут говорили, что фотографии хранить в БД можно и вполне нормально, значит и ZIP'ы с документами можно), то функция выдёргивания отдельных файлов из ZIP-блоба без распаковки и без промежуточного создания временных файлов/блобов могла бы иметь смысл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:46 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕго второе сообщение в теме: shalamyanskyкоторое на самом деле пустое, только не спрашивай меня, как эта функция должна была угадать какой именно XML доставать из того "недалёкого ZIP" (сам ZIP будем пока для простоты считать singleton, а путь к нему hardcoded внутрь UDF) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:49 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Arioch, во ты фантазёр. Я хотел бы глянуть на пример кода, только не псевдокода, а реального, который мог бы это сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:53 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Лично я бы не стал хранить файлы внутри FDB, даже когда технически это возможно. Мне сама эта идея не нравится. Как следствие, я бы эту функцию как БЛОБ-фильтр не стал бы делать. Но те, кто считают хранение файлов внутри БД нормальным - им и карты в руки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 13:57 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Arioch, почитай топик внимательней. ТС и не собирался хранить файлы в БД. Он хотел хранить их как файлы и тащить через обычные SELECT запросы на клиента через BLOB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:04 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
а ведь кто-то уже помнится писал UDF File2BLOB (или FileToBLOB). ей Бо, было. (если конечно не пригрезилось мне, на летящем коне) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:05 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Arioch, пятнично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:06 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
AriochВ Windows максимальная длина имени файла - 4К LPDWORD lpMaximumComponentLength . Типично это 255 Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:07 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, да была. Мало того в ред-базе функции чтения BLOB из файла и сохранения в файл идут в поставке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:11 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
06.07.2018 14:11, Симонов Денис пишет: > да была. Мало того в ред-базе функции чтения BLOB из файла и сохранения в файл идут в поставке. наверное это то, что нужно Михаилу. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:12 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
AriochDimitry SibiryakovЕго второе сообщение в теме: shalamyanskyкоторое на самом деле пустое, ++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:21 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисТС и не собирался хранить файлы в БД. Он хотел хранить их как файлы и тащить через обычные SELECT запросы на клиента через BLOB. В том то и дело. Этого я и не понимаю - зачем на клиента тянуть файлы (и конвертировать их при этом) через БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:28 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
06.07.2018 14:28, YuRock пишет: > Этого я и не понимаю - зачем на клиента тянуть файлы предпочитаешь парсить XML прямо на сервере? в некоторых серверах из большой тройки такой API действительно есть. но издержки и затраты зачастую не стоят того чтоб заморачиваться. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:34 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
YuRock, Чтобы не раздавать права доступа для клиентов. Или не писать аппсервер для доступа к этим файлам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:41 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийнаверное это то, что нужно Михаилу. наверное это то, что нужно воткнуть в ФБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:52 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийа ведь кто-то уже помнится писал UDF да я писал, больше 10 лет назад, blobsaveload. Может еще кто-то писал, не запомнилось. Тут же это, главное не забыть - что если "пропускать" через сервер блоб из файла, и не сохранять его, то будет копиться много временных блобов в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:55 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
06.07.2018 14:55, kdv пишет: > Тут же это, главное не забыть - что если "пропускать" через сервер блоб из файла, и не сохранять его, то будет копиться много временных блобов в базе. ну, про это DS забыть никому не даст ;) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 14:58 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyБыло бы удобно: клиент обращается как бы к BLOB-полю, которое на самом деле пустое, отрабатывает фильтр, udf-функция идет в недалеко лежащий ZIP-файл, достает нужный XML, клиент получает "содержимое" BLOB. И не нужно создавать другой, кроме sql connect, механизм передачи данных клиенту.Во-первых, это можно реализовать через VIEW, а не через таблицу с полем на BLOb-фильтре, а во-вторых - занафига это надо? Пишется UDF функция, которой на вход подается UUID (он же "имя_файла" с BLOb'ом), а на выходе BLOb, выдернутый из файла. Чем не Big Data? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 15:07 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyклиент обращается как бы к BLOB-полю, которое на самом деле пустое, отрабатывает фильтр, udf-функция идет в недалеко лежащий ZIP-файл не получится. как уже было сказано, блоб-фильтр получает на входе только блоб, и на выход выдает тоже только блоб. Никаких имен файлов или ууидов туда передать или вернуть нельзя. Не получится даже использовать blob id для сохранения файла, потому что файл должен быть сохранен раньше, чем блоб получит свой id. Еще хуже, что при сохранении такого "блоба" с клиента в файл серверу всё равно придется содержимое сначала сохранять во временный блоб. А значит, если просто гонять файлы через сервер, то они будут оседать в базе. Пусть не навсегда, но на какое-то время. И тут уже надо прикинуть, какое количество и объем этих файлов будут прогоняться через сервер. А как всегда, прикольная идея превратится в кошмар. Так что, в идеале в ФБ должны быть - функции блоб-в-файл, файл-в-блоб, и еще две таких же без temporary blob, "насквозь сервер" - параметр в конфиге, определяющий разрешенные папки для сохранения блобов и всякого в файлы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 15:18 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийв некоторых серверах из большой тройки такой API действительно есть. но издержки и затраты зачастую не стоят того чтоб заморачиваться. Нет, я противник и этого. WildSeryИли не писать аппсервер для доступа к этим файлам. http-сервер вполне для этого сгодится любой. А парсить уже на клиенте можно, опять же. WildSeryЧтобы не раздавать права доступа для клиентов Если от прав юзеров база зависит доступ к этим файлам - тогда да. Тут уж писать придется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2018, 15:19 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Господа, спасибо всем за активное обсуждение моей набольшой задачи. Даже удивлен. Особое спасибо тем, что кто предоставил конкретные документы и даже код, а также тем, кто внимательно посмотрел именно на мои вопросы и предположения. kdvблоб-фильтр получает на входе только блоб, и на выход выдает тоже только блоб Как это можно выяснить, не отвлекая гуру от важных дел, а из документации? Если вы заметили, первый мой вопрос был такой: shalamyansky1) Каков интерфейс функции, реализующей BLOB фильтр? "Руководство" дает лишь объявление со стороны SQL Код: sql 1. 2. 3. из которого совершенно непонятно (мне, по-крайней мере), что же должна ожидать реализующая функция 'function_name', что и в каком виде она получит на входе, и что и в каком виде должна отдать. Некоторые нюансы задачи, которые заинтересовали публику: 2) Размеры передаваемых "файлов" > 32K, поэтому от типа BLOB, похоже, мне не уйти, даже если буду передавать их посредством "обычной" UDF. Кстати, почему было не использовать беззнаковые числа для размера строки? 64K все-таки поболе, чем 32K, аж в два раза, во многих случаях эти дополнительные килобайты облегчили бы жизнь. 3)ZIP'ы разложены по папкам файловой системы, каждый ZIP включает в себя множество XML, а каждый XML содержит множество конечных документов. Один запрос по неким идентификаторам должен возвращать один документ. Решение через виртуальный блоб мне казалось красивым, когда не только клиент, но и код на сервере абстрагированы от конкретного механизма доступа к текстам, но я понял, понял, лучше туда не влезать. А вообще подход к фильтрам получается интересным: у нас есть замечательная возможность, сообщает "Руководство", вот вам и оператор для неё, но пользоваться ей не надо, это сложно и опасно, и вообще ей никто не пользуется. Лучше не трогайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 17:30 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyansky, там написано только то, что относится к SQL/PSQL. Как делать эти самые фильтры в этом руководстве не описано, да и не должно быть. Ибо UDF/UDR и фильтры это отдельная очень большая тема. авторBLOB фильтр — объект базы данных, являющийся, по сути, специальным видом внешних функций с единственным назначением: получение объекта BLOB одного формата и преобразования его в объект BLOB другого формата. Форматы объектов BLOB задаются с помощью подтипов BLOB. вроде как из этого текста понятно что вход это блоб и выход это блоб. shalamyanskyКстати, почему было не использовать беззнаковые числа для размера строки? 64K все-таки поболе, чем 32K, аж в два раза, во многих случаях эти дополнительные килобайты облегчили бы жизнь. там много причин. Для начала у нас сама запись ограничена 64K байтами. Ну и посмотри определение VARCHAR на уровне сообщений. Там много что на это завязано, и увеличить это не так уж легко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 17:44 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyКак это можно выяснить, не отвлекая гуру от важных дел, а из документации? Внезапно: открыть для себя документацию: 21547549 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 17:45 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Дим, там по большому счёту не написано ровно ничего,пару фраз из которых конечно можно понять что вход и выход BLOB, но не более того. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 17:48 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Симонов Денистам по большому счёту не написано ровно ничего,пару фраз из которых конечно можно понять что вход и выход BLOB, но не более того. Там далее ссылки ещё на два мануала в которых сказано про интерфейс функции и ещё пара фраз. Ну а по этим данным найти в исходниках сервера примеры его встроенных фильтров - дело техники. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 17:54 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyКак это можно выяснить, не отвлекая гуру от важных дел, а из документации? пример api9f.* плюс исходники. в исходниках есть фильтр, который преобразует blr в текст. shalamyanskyчто же должна ожидать реализующая функция 'function_name' преобразовывать один тип блоба в другой. На входе блоб, на выходе блоб. См. пример api9f. shalamyanskyКстати, почему было не использовать беззнаковые числа для размера строки? это куда и про что вообще? про лимит строки в 32к байт? Ответ - "так получилось". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 18:00 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
Интересное кино. У меня работает Firebird 3.0.2, есть на руках "Руководство" по работе именно с этой версией этого продукта, а вы отсылаете меня к руководствам другого продукта, хоть и близкого, да еще непонятно каких версий. Ну, посмотрел. По поводу БЛОБ-фильтров там сказано ровно то же, что и в руководстве по Firebird: Код: sql 1. 2. 3. Даже если принимает только BLOB, и отдает только BLOB, как я уже узнал, все равно остаются вариации: это два разных in- и out- параметра, или один параметр in-out? Скорее всего, конечно, разные, но вдруг? Dimitry SibiryakovНу а по этим данным найти в исходниках сервера примеры его встроенных фильтров - дело техники. Вы это серьезно предлагаете? А чтобы использовать Windows API, идти в исходники kernel32? Или за неимением оных, дизассемблировать? kdvСм. пример api9f. Вот это спасибо! Собственно, это и есть прямой ответ на мой вопрос. Теперь буду и туда смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 18:20 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyВы это серьезно предлагаете? А чтобы использовать Windows API, идти в исходники kernel32? Или за неимением оных, дизассемблировать? Серьёзно ли я предлагаю примеры кода смотреть в коде? Да, чёрт побери, я серьёзен как пуля в голове. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 18:45 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyanskyэто два разных in- и out- параметра, или один параметр in-out? 1. у Firebird нет in-out параметров 2. в декларации фильтра ДВА параметра. Откуда "один"? Лопни мои глаза? shalamyanskyИли за неимением оных, дизассемблировать? гм. я вот С/C++ терпеть не могу, и писать на нем не умею, но исходники-то могу читать. И исходники Firebird никто не прятал. Да, очень трудно запускать поиск по файлам строки "filter", правда? Кроме того, раз пресловутые фильтры уже есть в коде, и они работают, то почему-бы их код не посмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 19:53 |
|
||
|
BLOB фильтр и UDF для Firebird 3.0 (64) - где найти спецификацию?
|
|||
|---|---|---|---|
|
#18+
shalamyansky, дополню. из INPUT_TYPE 1 OUTPUT_TYPE -99 видно, что передаются, собственно, не сами хэндлы блобов или структуры, а просто их подтипы. И никакого in-out тут и близко нет. Особенно, если преобразовывать одно содержимое блоба в другое содержимое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2018, 19:56 |
|
||
|
|

start [/forum/moderation_log.php?user_name=crazysas]: |
0ms |
get settings: |
17ms |
get forum list: |
17ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
421ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
153ms |
get tp. blocked users: |
2ms |
| others: | 1439ms |
| total: | 2096ms |

| 0 / 0 |
