|
|
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Вопрос: Есть БД на Oracle. Требуется организовать хранение файлов ЛЮБЫХ! типов в БД с возможностью поиска текста по текстовым документам (вероятно Oracle Text, blob). Каким образом лучшк организовать доступ и просмотр файлов из клиента (клиент толстый, С++, OCI). Начальство хочет видеть реализацию OLE в клиенте, то есть может прямо в окошке клиента в OLE-контейнере посмотреть файлик, подредактировать и т.д., кто-нибудь так делал? По-моему очень нестабильно и реализация будет слишком сложной,если не сказать что в потребном виде это сделать просто невозможно (почитал-потестил по теме, кажется именно невозможным сделать универсальный вариант с обработкой ЛЮБЫХ файлов). К тому же OLE подразумевает хранение данных в Compound Storage, который реализовать в Oracle можно, но текстового поиска по форматированным документам точно не будет из-за специфики сохранения OLE объектов. Мне представляется наилучшим вариантом просто возможность скачать, закачать, обновить, вызвать ассоциированное с файлом приложение для открытия файла и все. Простой и надежный вариант. Какие будут мысли по-поводу? Есть что присоветовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 07:58 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Да, и еще. Подразумевается что открывать в клиенте файлы для просмотра нужно через OCI напрямую с БД, не копируя файл или какие-либо данные непосредственно на ПК клиента. Потому что могут быть достаточно большие видео-файлы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 08:00 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Вариант с OLE нормально работает, минимум кодинга и максимум универсальности. Отсутствие гемора с админством, если всё хранится в БД. Полнотекстовый поиск я пока не сделал, но он достаточно прост (в рамках подхода,который я собираюсь применить). Так что, проверено, мин нет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 09:17 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Programmer_OrtodoxВариант с OLE нормально работает, минимум кодинга и максимум универсальности. Отсутствие гемора с админством, если всё хранится в БД. Полнотекстовый поиск я пока не сделал, но он достаточно прост (в рамках подхода,который я собираюсь применить). Так что, проверено, мин нет! Можно вопрос: а что у вас за документы используются через OLE? Безусловно хороший вариант, когда используются, скажем, только OLE-объекты Microsoft Office. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 09:24 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Любые файлы можно хранить как object package, exe, zip,...и самые экзотические. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 09:34 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Programmer_OrtodoxЛюбые файлы можно хранить как object package, exe, zip,...и самые экзотические. Да, тут ты без сомнения прав, но только у меня начальство этот вариант не удовлетворил, потому что Windows Packager при активации OLE-объекта распаковывает его в исходный файл в TEMP и оттуда его выполняет. :) При открытии больших видео-файлов будет тормоз... К слову сказать, Windows Packager немного глюкавая утилитка по одной причине - не принимает исходные данные в виде файла, а требует указатель на HGLOBAL, поэтому при создании БОЛЬШИХ OLE-объектов может просто кончиться память, у меня при тестировании (создать из 1.5 Гб видео-файла) вывалилась ошибка - в системе кончилась память, а у меня 1 Гб ОЗУ + 1.5 Гб свап. >-] Это конечно был эдакий черезчур стресс-тест, но клиент должен работать на гораздо более слабых машинах чем у меня. К тому же при пользовании Windows Packager будут проблемы с In-Place Activation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 10:21 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Компетентное начальство есть не у всех, вам повезло. Можно не использовать упаковщик объектов, а вводить самостоятельный тип данных для каждого формата. Для некоторых можно хранить сжатый оригинал в блобе, а текстовую вижимку отдельно(для поиска). Просто я делал информационную систему для личных нужд и мне было важно работать как можно меньше. Это и было основным побудительным мотивом на пути универсализации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 10:49 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
А что касается Windows Packager и HGLOBAL, то я с ними и не парился. У меня просто открывается файл(любой) через стандартный диалог, он падает в динамически создаваемый OLE-объект. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 11:07 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Programmer_OrtodoxА что касается Windows Packager и HGLOBAL, то я с ними и не парился. У меня просто открывается файл(любой) через стандартный диалог, он падает в динамически создаваемый OLE-объект. Всё. Я с ними парился, чтобы понять, что и как неправильно работает, когда выявился глюк с видео-файлами. Я попытался сам создать экземпляр Com-объекта Windows Packager, и ему скормить этот файл - так он забрыкался, и я проверил, то, какие параметры он принимает, небольшим скриптиком. А диалог есть стандартный виндовый. :) P.S. Если делать самостоятельные типы и т.д. То лучше уж совсем не заморачиваться с OLE, а сделать типовое решение с перекачкой именно файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 11:21 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Согласен, но здесь разница в трудозатратах будет основательной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 11:29 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Programmer_OrtodoxСогласен, но здесь разница в трудозатратах будет основательной. Вы вроде Delphi-разработчик, если это делать на Дельфи, то, пожалуй, да. А вот на С++... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 11:35 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
На счет OLE я пожалуй не готов согласиться. Довольно удобная вещь, когда например, делаешь документ Word, а туда требуется включить фрагмент (а не весь файл, который очень большой) из Autocad, Excel и P-CAD. Сохраняется как OLE-Word, потом может многократно редактироваться, причем всё это должно быть оперативно, без лишних телодвижений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 11:41 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Programmer_OrtodoxНа счет OLE я пожалуй не готов согласиться. Довольно удобная вещь, когда например, делаешь документ Word, а туда требуется включить фрагмент (а не весь файл, который очень большой) из Autocad, Excel и P-CAD. Сохраняется как OLE-Word, потом может многократно редактироваться, причем всё это должно быть оперативно, без лишних телодвижений. Но у меня то не форматированный документ, а Клиент-серверная система и основная цель - централизованное хранение файлов в Базе данных и обеспечение доступа к ним, а остальное - это уже второстепенные вещи. Без OLE будет достигнуто более универсальное и, главное, НАДЕЖНОЕ решение, ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 11:49 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
> основная цель - централизованное хранение файлов в Базе данных Более чем странная цель. > будет достигнуто более универсальное и, главное, НАДЕЖНОЕ решение Надежное универсальное решение - хранить файлы в файловой системе. Любые другие варианты за незначительным исключением - от лукавого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 13:22 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Надежное универсальное решение - хранить файлы в файловой системе. Любые другие варианты за незначительным исключением - от лукавого. В данном случае нет, просто продукт является коммерческим и как показывает практика - велика вероятность что сервер попадет в чьи то шаловливые ручки, случаи были. Так что пускай лучше все ледит в одном месте - в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 13:39 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> основная цель - централизованное хранение файлов в Базе данных Более чем странная цель. > будет достигнуто более универсальное и, главное, НАДЕЖНОЕ решение Надежное универсальное решение - хранить файлы в файловой системе. Любые другие варианты за незначительным исключением - от лукавого.Это если файлы неизвестного размера. а если допустимо ограничение в несколько мегабайт - то в БД куда лучше, чем на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 14:08 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Programmer_OrtodoxНа счет OLE я пожалуй не готов согласиться. Довольно удобная вещь, когда например, делаешь документ Word, а туда требуется включить фрагмент (а не весь файл, который очень большой) из Autocad, Excel и P-CAD. Сохраняется как OLE-Word, потом может многократно редактироваться, причем всё это должно быть оперативно, без лишних телодвижений. вопрос про сохраняемые файлы... стримы поддерживает БД ? с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 14:24 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
> В данном случае нет Дружище, кривая архитектура приложения не оправдывает кривых решений. > Это если файлы неизвестного размера Очень просто запомнить: для файлов - файловая система. Исключение - если файлов очень много ("много" для разных файловых систем будет иметь разное значение) и они очень небольшого размера (с аналогичным замечанием). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 15:15 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Dogen Это если файлы неизвестного размера. а если допустимо ограничение в несколько мегабайт - то в БД куда лучше, чем на диске. Действительно, было бы интересно аргументацию услышать. Чем именно лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 16:09 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин Dogen Это если файлы неизвестного размера. а если допустимо ограничение в несколько мегабайт - то в БД куда лучше, чем на диске. Действительно, было бы интересно аргументацию услышать. Чем именно лучше? Да тут по форуму немало аргументов и за и против. В большей степени те и другие обусловлены эстетическим чувством проектировщика. Если в функциональность SQL-сервера входит предоставление удобного доступа к файлам, лежащим фиг знает где, по какому-то протоколу (интересно, по какому?..), то еще можно что-то обсуждать, а если нет, то этот самолет будет некрасивый и не полетит. А ну как права доступа на файл-сервере послетают, тогда что делать будем? Вам наверное все равно, сколько точек отказа в системе, и сколькими способами надо доступ раздавать. Ну, конечно, веселые картинки в базе MySQL 3.2х хранить вредно, это да, пусть на диске лежат. Но я думаю, здесь вещи посерьезнее порносайтов обсуждаются?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 16:31 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
Не знаю, я исхожу из обратной посылки - если sql-сервер умеет как-то понимать внутренню структуру файлов и осуществлять по ним осмысленный поиск - "ну еще можно о чем-то говорить". Но рассматривается явно не это случай. А если поиска нет - то и нафига серверу доступ к этим файлам? Если все равно ничего осмысленней, чем отдать их клиенту as is, он не сможет? Пусть уж клиент их сразу запрашивает у файл-сервера. Имхо неструктурированную информацию в базе лучше не держать, она не для этого предназначена. права доступа - это да, но с другой стороны - бекапить файлы легко отдельно от базы. (в случае хранения внутри это потребует специальных телодвижений, отдельной базы, отдельной стратегии бекапа для нее - то есть возникают те самые лишние точки отказа). Масштабируется опять же проще, в зависимости от того, с чем возникла проблема, можно наращивать либо файл-сервер, либо SQL-сервер. В случае внутреннего хранения такого выбора нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 19:26 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
> немало аргументов и за и против Да нет никаких аргументов "за". И быть не может. Ситуацию, когда это оправданно, я описал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 20:34 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> В данном случае нет Дружище, кривая архитектура приложения не оправдывает кривых решений. Мну и какая же может быть прямая архитектура приложения, когда, например, админ конторы, которая купила продукт, позволяет устанавливать игрушки на сервере? Тут хоть распрямая архитектура приложения будет - все равно ж*па. :) А контора сервера клиентов не админит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 06:25 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
> когда, например, админ конторы, которая купила продукт, позволяет > устанавливать игрушки на сервере? Дебилы есть не только среди системных администраторов, - не новость. Непонятно, как это связано с Вашим вопросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 11:00 |
|
||
|
Хранение файлов в БД
|
|||
|---|---|---|---|
|
#18+
guest_20040621> когда, например, админ конторы, которая купила продукт, позволяет > устанавливать игрушки на сервере? Дебилы есть не только среди системных администраторов, - не новость. Непонятно, как это связано с Вашим вопросом? Да не знаю, что вы так привязались к этим внешним файлам - в конце концов не проблема хранить что так, что так... Проблема не в этом. А вообще, это (файлы внутри базы) есть часть "защиты от дурака", вы, думаю, тоже подобным вещам уделяете внимание в своих разработках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 13:10 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33667380&tid=1545303]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 483ms |

| 0 / 0 |
