|
|
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
Сохранение Images в Oracle и вывод в JSP Пожалйста киньте ссылку. Помню что был этот топик, что то не найду. Наверно день тяжелый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:13:20 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
А почему нельзя в файловую систему сохранять картинки и хранить в БД только пути к ним? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:20:49 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
KachalovА почему нельзя в файловую систему сохранять картинки и хранить в БД только пути к ним? Например потому что теряется транзакционность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:28:51 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
плюс - так требует заказчик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:31:13 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
PM123Сохранение Images в Oracle и вывод в JSP Сохранить - пихаешь ее в Blob и записываешь в базу. Можно еще сохранить ее типа и имя файла. Вывести - читаешь Blob в массив байтов, потом примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:46:58 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
Ок Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:54:33 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
TimmНапример потому что теряется транзакционность. - ??? (при совместном редактировании картинки что ли?) PM123плюс - так требует заказчик - это аргумент. А производительность заказчик не требует? Сколько раз планируется показывать картинку и какого она размера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:54:36 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
Kachalov TimmНапример потому что теряется транзакционность. - ??? (при совместном редактировании картинки что ли?) Ее в принципе быть не может. File system - вотчина ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 14:04:03 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
TimmЕе в принципе быть не может. File system - вотчина ОС. - а путь к файлу записаный в БД, вполне может участвовать в транзакциях БД. - если Вы считаете, что при записи или удалении файла в ФС возникнет сбой, а БД об этом ничего не узнает, то это всего лишь вопрос логики приложения. Напрмер: 1. начали транзакцию 2. записали файл в ФС 3. проконтролировали размер или целостность записаного файла 4. если что то не так, откатили транзакцию, если все нормально записали путь к файлу и завершили транзакцию - если Вы беспокоитесь о том, что файл в ФС можно удалить минуя БД, при этом запись о нем в БД останется, то такие рассуждения можно перенести на любые файлы ФС. Например могу через ФС удалить или попортить конфигурационные файлы БД, таблицы если они лежат в отдельных файлах, логические базы и т. п. (для ФС нет ничего святого) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 14:38:29 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
кстати, интересная задача получается - распространить транзакцию до ФС. теоретически ничего сложного нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 15:07:50 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
Kachalov TimmЕе в принципе быть не может. File system - вотчина ОС. - а путь к файлу записаный в БД, вполне может участвовать в транзакциях БД. - если Вы считаете, что при записи или удалении файла в ФС возникнет сбой, а БД об этом ничего не узнает, то это всего лишь вопрос логики приложения. Напрмер: 1. начали транзакцию 2. записали файл в ФС 3. проконтролировали размер или целостность записаного файла 4. если что то не так, откатили транзакцию, если все нормально записали путь к файлу и завершили транзакцию - если Вы беспокоитесь о том, что файл в ФС можно удалить минуя БД, при этом запись о нем в БД останется, то такие рассуждения можно перенести на любые файлы ФС. Например могу через ФС удалить или попортить конфигурационные файлы БД, таблицы если они лежат в отдельных файлах, логические базы и т. п. (для ФС нет ничего святого) Мне фиолетово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 16:21:28 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
Всякий раз, когда обсуждается вопрос о хранении картинок в базе, появляется кто-нибудь с мыслью "а почему бы не хранить имена файлов". Каждый раз отвечать скучно. Я храню в базе. В Oracle в принципе есть 3 способа: - хранить полях BFILE (то есть во внешних файлах) - в полях LONG RAW (устаревший способ). В уже заполненной таблице поле LONG RAW можно преобразовать в BLOB с сохранением данных. - в полях BLOB (правильный способ). Как писать-читать BLOB в программе на Java - есть в документации по Oracle. Выводить надо не из JSP (которое предназначено для вывода текстовых данных), а из сервлета, вызываемого из JSP (с помощью RequwestDispatcher) или может сохранять в файле, и давать его в <img src=...>. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 20:58:02 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
Partisan MВсякий раз, когда обсуждается вопрос о хранении картинок в базе, появляется кто-нибудь с мыслью "а почему бы не хранить имена файлов". Каждый раз отвечать скучно. - просто удивительно откуда такая уверенность что картинки надо хранить в базе. Аргумент об участии картинок в транзакциях считаю просто смешным. Я знаю как хранить картинки в базе и как их от туда доставать, но не уверен что это надо делать. Может ли БД+сервлет+контейнер сервлетов обеспечить такое же быстродействие как ФС+Apache ? Картинка, например в каталоге, это ресурс к которому часто обращаются и храня картинки в БД Вы рискуете сильно увеличить нагрузку на машину и заметно потерять в производительности сайта. Мне приходилось заниматься Java-хостингом и я видел как пишут различные Java-программисты и как это работает (и как работают некоторые популярные среди участников форума технологии - не хочется сейчас обсуждать эту тему). Поверьте, редкий Java-программист способен писать быстро работающие сайты не требовательные к ресурсам. Вообще тема эффективности кода не часто всплывает у web-разработчиков. По моему хранение картинок в БД это один из антипаттернов web-программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 21:53:09 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
Kachalov Partisan MВсякий раз, когда обсуждается вопрос о хранении картинок в базе, появляется кто-нибудь с мыслью "а почему бы не хранить имена файлов". Каждый раз отвечать скучно. - просто удивительно откуда такая уверенность что картинки надо хранить в базе. Аргумент об участии картинок в транзакциях считаю просто смешным. Я знаю как хранить картинки в базе и как их от туда доставать, но не уверен что это надо делать. Может ли БД+сервлет+контейнер сервлетов обеспечить такое же быстродействие как ФС+Apache ? Картинка, например в каталоге, это ресурс к которому часто обращаются и храня картинки в БД Вы рискуете сильно увеличить нагрузку на машину и заметно потерять в производительности сайта. Мне приходилось заниматься Java-хостингом и я видел как пишут различные Java-программисты и как это работает (и как работают некоторые популярные среди участников форума технологии - не хочется сейчас обсуждать эту тему). Поверьте, редкий Java-программист способен писать быстро работающие сайты не требовательные к ресурсам. Вообще тема эффективности кода не часто всплывает у web-разработчиков. По моему хранение картинок в БД это один из антипаттернов web-программирования. В такой постановке это неправда. Это может стать плохим решением, а может и не стать. depends on ... как грицца. Для кого то картинки - это всего лишь картинки . А для кого то - данные . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 22:05:28 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
to Kachalov Вот мне недавно то же говорили, а я не (естественно) поверил. Потому что и раньше испытывал хранение в BLOB-ах. А именно - хотели хранить в базе фотографии, не получилось - говорят сервер рухает (они хранили в LONG RAW). Я сам поместил фотографии в BLOB-ы, стал извлекать и измерять расход памяти и скорость записи - получения. Значит, расход памяти увеличился на 1 МБ по сравнению с той же таблицей без картинок. Скорость чтения была где-то 0,015 сек, увеличившись на 0,05 сек (хотя прирост нагрузки был таким маленьким, что эти данные нельзя было точно измерить. Скорость записи и чтения измерял вместе с чтением из файлов и записью в файлы). И ничего не рухает, если делать правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 22:28:59 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
не совсем то написал. Время чтения 1 записи с BLOB-ом вместе с его сохранением в файле увеличилось с 0,15 до 0,2 сек по сравнением с чтением такой же записи, не содержащей BLOB-а. То есть если хранить в файлах, то к 0,15 надо прибавить время чтения и записи файла (размер 400-500КБайт). Эксперимент проводился на компьютере Pentium-4, 3 ГГц, потом на сервере было гораздо быстрее. Ну не вижу я чрезмерной нагрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 22:42:15 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
TimmЭто может стать плохим решением, а может и не стать. depends on ... как грицца. - в большинстве случаев применительно к web-программированию это плохое решение. Когда наблюдаешь как жалкий каталог товаров с низкой посещаемостью при выводе списка товаров с картинками (порядка 20 шт на страницу) дает 30% процентов загрузки процессора, начинаешь ненавидеть программистов (обычно это все сопровождается крутыми фреймворками, библиотеками для кэширования объектов и прочей дрянью) которые сотворили такое чудо. - собственно хотелось бы (честно) услышать разумные аргументы за хранение картинок в БД: а) удобство хранения (под вопросом в случае необходимости сделать дамп данных)? б) изображение с которым ведется работа как с двоичными данными (мне кажется, это очень редкий случай, особенно для веба)? в) участие в транзакциях (эту задачу можно решить и без физического присутствия изображения в БД)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 22:47:56 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
Partisan Mразмер 400-500КБайт - это что за картинки? 500Кб картики помещать на сайт - это издевательство над клиентом :) Partisan MВремя чтения 1 записи с BLOB-ом вместе - это Вы считали разницу по времени между отпрвкой запроса в БД и получением результата из БД или разницу по времени между запросом к web-серверу и получением от него ответа? - кстати, какой web-сервер, какая БД, где физически находится БД на той же машине или она разнесена с web-сервером, какая загрузка процессора возникала? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 22:58:08 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
to Kachalov это не сайт, а информационная система предприятия. 400-500 КБайт я взял для эксперимента (нужное количество картинок - несколько тысяч - получил, записывая файлы циклически). Потом оказалось, что в действительности размер картинки 65 КБайт. Но картинки загружались в базу программным средством SQL*Loader, которое дописало в коец маленьких файлов 0-байты. Когда я прочитал картинки из базы и отсёк лишние байты, то картинки в среднем уменьшились в 4 раза. То есть рушить Oracle - надо уметь. Веб-сервер не использовался. Вся работа через JDBC. При разработке программа (записи-чтения картинок) и Oracle находились на моём компьютере, а затем я со своего компьютера обращался к разным серверам через локальную сеть. Картинки в базе должны просматриваться в приложении Oracle Forms, что конечно заметно снижает скорость получения картинок из базы, но она осталась практически достаточной (не измерял). Oracle Forms - это Java аплеты в IE, а на сервере для них используется OAS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 23:21:50 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
2 Partisan M - мне кажется, у Вас как раз один из тех немногих случаев (внутренняя корпоративная система), когда способ хранения картинок не имеет принципиального значения :) - собственно проблема производительности относится к web-приложениям и возникает при наличии цепочки: контейнер сервлетов + сервлет + БД, которая проигрывает по скорости цепчке: Apache + Файловая Система. Причем за счет кэширования в БД и контейнере сервлетов изначально никакой проблемы с производительностью не видно, но ресурсы машины (процессор, память) жрутся нещадно и при достижении пиков нагрузки случаются серьезные провалы производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 11:01:59 |
|
||
|
Сохранение Images в Oracle и вывод в JSP
|
|||
|---|---|---|---|
|
#18+
не вижу проблемы. Если хранить картинки в файлах, то веб-сервер будет брать из файлов (по ссылке). А если хранить в BLOB-ах, то возможны 2 варианта - картинки извлекаются из базы и помещаются во аременные файлы, откуда их берёт веб-сервер. При этом для веб-сервера нет разницы - были картинки в файлах с самого начала или извлечены из BLOB-а. Причём веб-сервер (если нужен), червер приложений и Oracle могут находиться на разных компьютерах и не мешать друг дугу. - картинки извлекаются из BLOB-а и посылаются клиенту без промежуточного вывода в файл. Этот способ быстрее (в данном случае я не испытывал его скорость. Раньше испытывал - не на Java, но это неважно). Правда, затраты памяти могут возрасти. Сл., есть варианты выбора один из которых аналогичен (для веб-сервера) хранению в файлах, а значит не может быть хуже, чем хранение в файлах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2006, 20:17:03 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34116840&tid=2147531]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 342ms |

| 0 / 0 |
