Coxa
JackPot's Team
Гродненец
Репутация: +11/-0
Offline
Пол:
Сообщений: 132
Джеки поты - вперед!!!
|
|
« : 03 Март 2008, 21:06:07 » |
|
Как в БД в поле image вставить картинку? Мне надо эт сделать в windows forms. Я гуглил, но ничего понятного и нормального не нашел... Отпишитесь, буду благодарен.
|
|
|
Записан
|
|
|
|
|
maxposedon
|
За хранение файлов в базе данных (в BLOB-ах и т.д.) нужно стрелять. А по теме. BLOB/CLOB-ы твоё всё.
|
|
|
Записан
|
|
|
|
Coxa
JackPot's Team
Гродненец
Репутация: +11/-0
Offline
Пол:
Сообщений: 132
Джеки поты - вперед!!!
|
За хранение файлов в базе данных (в BLOB-ах и т.д.) нужно стрелять. А по теме. BLOB/CLOB-ы твоё всё. везде есть свои плюсы и минусы ктому же мне эт нада не для серьезного дела. Спасиб, буду разбираться.
|
|
|
Записан
|
|
|
|
VP
Гродненец
Репутация: +4/-0
Offline
Сообщений: 84
Я люблю Гродненский форум!
|
За хранение файлов в базе данных (в BLOB-ах и т.д.) нужно стрелять. А по теме. BLOB/CLOB-ы твоё всё. не вижу причины, чем хуже хранить файлы в БД. При работе с одной только БД проще обеспечить транзакционность операции, чем разделять операцию на части для работы с БД и для работы с файловой системой с ипользованием распределенных транзакций.
|
|
|
Записан
|
|
|
|
maxposedon
|
За хранение файлов в базе данных (в BLOB-ах и т.д.) нужно стрелять. А по теме. BLOB/CLOB-ы твоё всё. не вижу причины, чем хуже хранить файлы в БД. При работе с одной только БД проще обеспечить транзакционность операции, чем разделять операцию на части для работы с БД и для работы с файловой системой с ипользованием распределенных транзакций. 1. рост нагрузки на базу 2. чем меньше база тем она быстрее для запросов -> ибо больше данных влазит в RAM 3. при хранении файлов в базе, нет возможности "отдавать статику" без нагрузки на сервер 4. сложно делать backup-ы (представьте ежедневное делание backup-ов). 5. нет возможности работать с файлами как с файлами (rsync, cp, просмотр и т.д) а тразакционность и при связке база+файл делается ну очень легко
|
|
|
Записан
|
|
|
|
VP
Гродненец
Репутация: +4/-0
Offline
Сообщений: 84
Я люблю Гродненский форум!
|
по пунктам 1. Роста нагрузки на БД замечено не будет, т.к. хранение больших типов осуществляется отдельно от хранения таблиц. 2. само собой. Исходя из п.1 роли не играет. 4. по-любому тебе придется делать бэкапы той же файловой системы, если она работает в паре с БД. 5. возражений нет. Просто обычно если файловая система работает совместно с БД, то как правило доступ к файлам очень ограничен и обычные операции для работы с файлами ну очень уж редко выполняются.
PS пункт 3 не совсем понял о чем речь
|
|
|
Записан
|
|
|
|
maxposedon
|
1. отдельно то отдельно, но вот простой select * начинает работать жутко более медленно, а также ещё много некоторых специфичных вещей, которые могут возникнуть в конкретной задаче 3. иногда(часто) мы должны отдавать бинарные данные, не тока напрямую в какуюто конкретную программу, но и например через http в виде ссылок и т.д. ==> так называемая задача "отдачи статических(неизменных) данных. Если файлы на fs -> то мы спокойно можем хранить отдавать их миную базу данных и не нагружая её (http, webdav, что угодно). 4. очень редко из базы данные удаляются (чаще помечаются как удалённые) при делаение очередного backup-а, я просто копирую новые файлы(время создания > предыдущего backup-а) и делаю dump базы. (ака хранилище файлов медленно уведичивается, и каждый день небольшие дампы). если файлы в базе, то каждый dump будет огромен, а файлы в блобах фактически дублировать предущие dump-ы. Итого при надобности хранить этак 10-100 последних dump-ов становится грустно. 5. насколько редко, это скорее вопрос архитектуры ситемы. Всё таки логичнее делать так, чтобы отдача бинарных данных могла работать минуя базу данных. (вопрос гибкости, маштабируемости и вообще по KISS). Ну нет смысла просто хранить в базе файлы, если база эти файлы никак не обрабатывает.
Вот возьмём пример абстрактный, нужно грузить кортинки из хранилища: я бы положил файлы на fs, всю метаинформацию и т.д. конечно положил бы в db. тогда я смог бы тупо возвращать не файлы, а например ссылки на файлы, в виде URI. А сами файлы через какой-нить web-сервер, webdav и т.д. Через базу ходить за файлами была бы большая нагрузка для базы.
|
|
|
Записан
|
|
|
|
ghostWhite
|
как по мне единственное что хоть как то оправдывает пафосные фразы о расстрелах людей хранящих файлы в базе это вот этот самый пункт 3. всё остальное достаточно условно и спорно. ну а использование отдельного сервера для отдачи статики имеет смысл только для проектов определённого масштаба и далеко не универсальный рецепт. ну и чтобы совсем быть точным. если внимательно почитать первый пост то человек делает приложение на windows forms и уж в этом случае ни про какой сервер для отдачи "статики" и речи быть не может
|
|
|
Записан
|
Не будите во мне зверя, он и так всё время не высыпается
|
|
|
ghostWhite
|
1. отдельно то отдельно, но вот простой select * начинает работать жутко более медленно, а также ещё много некоторых специфичных вещей, которые могут возникнуть в конкретной задаче
в некоторых местах, где работают с высоконагруженными базами данных за select * лишали части зарплаты 5. насколько редко, это скорее вопрос архитектуры ситемы. Всё таки логичнее делать так, чтобы отдача бинарных данных могла работать минуя базу данных. (вопрос гибкости, маштабируемости и вообще по KISS). Ну нет смысла просто хранить в базе файлы, если база эти файлы никак не обрабатывает.
Вот возьмём пример абстрактный, нужно грузить кортинки из хранилища: я бы положил файлы на fs, всю метаинформацию и т.д. конечно положил бы в db. тогда я смог бы тупо возвращать не файлы, а например ссылки на файлы, в виде URI. А сами файлы через какой-нить web-сервер, webdav и т.д. Через базу ходить за файлами была бы большая нагрузка для базы. ну это вот если мы действительно просто так эти самые файлы отдаём. а если мы хотим например денежку за них попросить ? или ещё как затруднить доступ да притом так, что бы линк каким экзотическим был ? наличие промежуточного звена вполне может позволять как то обрабатывать эти файлики, например watermarks на картинки какие нибудь специфичные накладывать, динамически изменяющиеся из всех возможных здесь решений база не самое неудобное
|
|
|
Записан
|
Не будите во мне зверя, он и так всё время не высыпается
|
|
|
maxposedon
|
Но таки, есть кучи более удобных средсв для промежуточного уровня. Да и пока файлы на fs, я могу менять это промежуточный уровень(гибкость). А хранение в базе - в чистом виде нарушение KISS. (вариант извлечения файлы из базы в tmp файлик а потом обработка вообще не рассматриваем, слишком не серьёзно тогда хранить в базе).
|
|
|
Записан
|
|
|
|
VooDoo
|
понятное дело, что файлы в базе не очень хорошо. Но, если не делать select *, разницы практически не будет. А вот приложением, которое крутится на серваке ходить по файловой системе, вот это точно извращение. Аппликация которая крутится в каком-то контейнере не должна знать что находится вне этого контейнера.
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
VP
Гродненец
Репутация: +4/-0
Offline
Сообщений: 84
Я люблю Гродненский форум!
|
понятное дело, что файлы в базе не очень хорошо. Но, если не делать select *, разницы практически не будет. Даже сделав select * разницы ты не увидишь. Таблица содержит только ссылки. Для чтения и записи идут отдельные ф-ции READTEXT, UPDATETEXT, WRITETEXT, PATINDEX и т.д
|
|
|
Записан
|
|
|
|
|