В комментариях безумцы!
Dec. 14th, 2007 06:30 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
[...]
Человек спрашивает, как правильно раздавать с СУБД связанные с ней внешние файлы (есть такой метод - вместо блобов держать файлы рядом на сервере, а в базу писать путь к ним). Речь идет об Interbase и приложении на дельфи.
Чего там только не насоветовали:
1) Купить 1С:Архив
2) Изучать CMS
3) Хранить базу в LDAP и файлы тоже в LDAP
4) Отдавать документы по HTTP с помощью mod_rewrite
Единственный более-менее имеющий отношение к делу комментарий - первый - хранить файлы в блобах. Все остальное - боб с горохом, ад, израиль, ханука и дивизия СС на via dolorosa.
К вопросу о том, что всякое ИТ настолько безумная область, что до сих пор на каждую задачу можно найти 100 способов решения, из которых 90 будут неприменимы для данного конкретного случая, а оставшиеся 10 настолько дорогими и безумными, что проще придумать 101 способ, чем осознать существующие.
Человек спрашивает, как правильно раздавать с СУБД связанные с ней внешние файлы (есть такой метод - вместо блобов держать файлы рядом на сервере, а в базу писать путь к ним). Речь идет об Interbase и приложении на дельфи.
Чего там только не насоветовали:
1) Купить 1С:Архив
2) Изучать CMS
3) Хранить базу в LDAP и файлы тоже в LDAP
4) Отдавать документы по HTTP с помощью mod_rewrite
Единственный более-менее имеющий отношение к делу комментарий - первый - хранить файлы в блобах. Все остальное - боб с горохом, ад, израиль, ханука и дивизия СС на via dolorosa.
К вопросу о том, что всякое ИТ настолько безумная область, что до сих пор на каждую задачу можно найти 100 способов решения, из которых 90 будут неприменимы для данного конкретного случая, а оставшиеся 10 настолько дорогими и безумными, что проще придумать 101 способ, чем осознать существующие.
no subject
Date: 2007-12-14 05:20 pm (UTC)no subject
Date: 2007-12-14 07:07 pm (UTC)no subject
Date: 2007-12-14 07:29 pm (UTC)В смысле, зачем вся эта петрушка с блобами и прочими мерзостями?
no subject
Date: 2007-12-14 07:37 pm (UTC)Я, например, так звук и текст храню в системе для распознавания надиктованных документов. Чтобы не нужно было тащить за собой 10 гиг хранилища, если нужно на базу данных взглянуть :)
no subject
Date: 2007-12-14 07:42 pm (UTC)no subject
Date: 2007-12-14 08:42 pm (UTC)no subject
Date: 2007-12-15 05:32 am (UTC)любой другой способ порождает чудовищ в виде двойного протоола доступа к хранилищу. Например, клиент сосет базу по ТСР, а тут параллельно еще для файлов ему будет нужен SMB по виндовой сети, со всеми жуками, жаба и змеями от СМБ, типа непрохождению бродкастов через шлюзы и т.п. мерзости. Фу-фу. Потому все-таки правильнее делать единообразный протокол, один единственный. Пофиг на размеры базы и т.п.
no subject
Date: 2007-12-14 09:28 pm (UTC)Вариант "хранить все в базе" привлекательней с точки зрения единообразности доступа и назначения прав, но геморроя тянет за собой немеряно.
no subject
Date: 2007-12-14 07:45 pm (UTC)no subject
Date: 2007-12-14 08:53 pm (UTC)Просто работа с базой(фильтрация записей, итд) замедлится не сильно, сервер все равно будет читать только нужные страницы, а вот работа с блобами вместо файлов - прилично, ибо возникнет промежуточный слой между файловой системой и клиентом, фактически реализующий те же функции файловой системы, только внутри файла базы.
no subject
Date: 2007-12-15 07:27 am (UTC)no subject
Date: 2007-12-15 01:52 pm (UTC)Если хранить файлы на диске:
Cons:
1. Сложности с транзакциями
2. Усложнение механизма репликации
Pros:
1. Апач отдает файлы быстрее, чем реляционная БД
2. Проще прикрутить скажем индексацию документов и полнотекстовый поиск по не plain-text документам вроде DOC.
Если хранить в базе, а не на диске:
Cons:
1. Сильно возрастает нагрузка на базу, возрастает длительность транзакции, при прочих равных уменьшается кол-во конкурентных пользователей, которых теняет система.
2. Усложнение поиска по документам, т.к. придется скорее всего писать собственный механизм индексирования (или покупать).
3. При большом количестве документов придется делать распределенную базу и настраивать балансировку нагрузки, имхо на уровне http-сервера сделать это проще.
Pros:
1. Транзакционность
2. Тривиальная репликация
Это из того, что сразу приходит в голову, наверняка есть еще что-то.
no subject
Date: 2007-12-15 03:07 pm (UTC)А когда все это пишется на коленке доморощенными спецами, которые случайно где-то выучили SELECT * FROM ALL_TABLES и сочли, что для работы с базой им этого будет достаточно - тогда конечно, и LDAP с плейн-текстом раем покажется...
no subject
Date: 2007-12-15 03:56 pm (UTC)no subject
Date: 2007-12-16 09:38 am (UTC)no subject
Date: 2007-12-16 10:46 am (UTC)Да, внешние эти файлы только формально, в обход MSSQL доступ к ним не получишь.
no subject
Date: 2007-12-16 11:01 am (UTC)Но, зная Microsoft, могу заранее сказать, что там тоже будет куча оговорок и неожиданных приколов в плане неочевидности. Взять хотя бы то, что они сделали этот тип на основе varbinary(max), сняв с него ограничение 2Г - бля буду, что полностью снять это ограничение у них с первой попытки не получится :))).
no subject
Date: 2007-12-18 07:35 am (UTC)SQL Server 2008 Filestream: Why?
Времена простых и однозначных решений давно прошли, как видишь.