![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
Есть таблица с пользователями. Еще нужна таблица с ресурсами, которые пользователь может добавлять. Но ресурсы могут быть в разных форматах: doc, pdf, rtf, видео. Как поступить с такой структурой? в таблице с ресурсами предусмотреть поля для каждого и,если он добавил только doc, то во всех остальных полях проставить, например, null? Или разбить таблицу: для каждого формата сделать свою?
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Юзер - тип ресурса - ссылка на файл
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
||||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Хранить контент в базе глупо (есть, конечно, и исключения - скажем коллекция иконок,- но это редкость) - база пухнет, бэкапить сложно...
Не советую НЕ хранить тип файла. Во-первых, тип может не соответствовать расширению, во-вторых, для выборки/сортировки по типу потребуется использование встроенных функций ПО ВСЕМ ЗАПИСЯМ. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
||||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Пример: Юзер - (ссылка в таблицу юзеров) - Вася Пупкин Тип ресурса - (ссылка в таблицу типов) - Видеоролик (формат FLV) Ссылка на файл - C:\User1\source\2010-08-01\movie1.flv -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Gunslinger |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
Не понял ваш стиль написания ![]() Псевдокодом:
|
||||
|
|||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
А хранить данные вне базы еще глупее ![]() Нет поддержки транзакций, бекапить надо тот же объем данных, только уже разбросанных по дискам, надо следить за консистентностью данных: чтобы в базе не было путей которые указывают на несуществующие файлы и чтобы не было файлов на которые никто не ссылается. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
LSD, так если в базе хранить, то как тогда поступить?
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Зачем тебе транзакции на файловый контент? а с конфликтами и фтп-сервер справится. ага, щаз! где ты видел СУБД, которые хранят ровно столько, сколько занимает контент (пусть и с учётом внутренней кластеризации)? обычно как раз в файлах БД предостаточно "дырок" - это ускоряет работу. К тому же хранящийся в файловой системе контент (как правило - кстати, это удобнее) бэкапится независимо от БД. Не смертельно. И при правильной организации такого быть не должно. При правильной организации работы с базой такого тоже не должно быть. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Ну например юзер хочет обновить документ, меняется база, начинается запись в файл и тут происходит факап - приложение целиком упало. В случае с базой транзакция откатится, а в случае связки база/ФС чистить ФС придется самими (при том, что в базе следов транзакции не осталось). При обновлении/удалении данных будут аналогичные проблемы. И даже если приложение не упало, но транзакцию откатили, надо писать свою логику по восстановлению целостности ФС. 1. Надо просто тейблспейс настроить на хранение BLOB-ов. Я не спорю, что он будет занимать больше чем чистые файлы, но не критично больше. 2. Не знаю у кого как, но у того же Oracle есть инкрементные бекапы. 3. СУБД имеет средства для обеспечения консистентности бекапов. А как ты предлагаешь обеспечивать констистеность копий СУБД и файлов, в условиях когда приложение не останавливается и продолжает писать в базу и файлы?
Обеспечить двухфазовую транзакцию (СУБД+ФС) наверно в теории возможно, но на практике не реализуемо. А без этого всегда будет шанс, что такое хотя и не должно быть, но имеет место быть. Вместо resourcePath хранить BLOB resource и VARCHAR file_name (имя файла под которым его загрузил пользователь). Плюс я бы добавил поле тип документа и соответствующий справочник по типам, это позволит показывать иконку для документа, отдавать корректный MIME и т.п. Хотя конечно виде хранить в базе это не очень хорошая идея. А вот какие нибудь офисные документы, самое то. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Вообще-то я чисто теоретически предполагал, что заливка контента на диск не есть дело самой СУБД. Что это забота не сервера БД. Вернее, даже так - я предполагал, что речь не идёт о получении конечным клиентом файла в поле записи рекордсета, что есть некий сервер, который общается и с конечным клиентом, и с сервером БД. В этих условиях мне хранение файлов в блобах кажется несколько сомнительным, и тем более сомнительным, чем пухлее файлы. Посмотри, к примеру, на файлохранилища с веб-мордой - как-то у них описанных тобой ужастиков не происходит... тот же ютуб - представь, что было бы, если бы они сваливали пользовательский контент в СУБД... Что же до поиска и исправления невалидных ссылок - то это в принципе вполне нормальный этап обслуживания сервера (всего сервера, а не его БД-части). Удаление непривязанных файлов, зачистка ссылок "в никуда"... скажем в связке мускул+пхп это как раз шедулится в пхп. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Akina,
Я исходил из предположения, что это офисные документы (отчеты, докладные и т.п.). На которые будут ссылки из других таблиц, для которых нужен аудит (кто и когда добавлял/менял) и т.д. И потому в данном случае хранение в базе мне представляется более разумным, у них и объем небольшой и консистентность обеспечить проще. Если же речь идет о вещах наподобие видео/файловых хостингов, то тут конечно БД не подойдет однозначно. P.S. Хотя для ютюба и обычная ФС не подойдет, объемы уже не те. Поищи на хабре статью про Google File System. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Gunslinger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 30.12.2006 Где: Астрахань Репутация: нет Всего: 3 |
Пока четкого ТЗ нет, только наброски. Схема такая: есть несколько категорий, по которым раскладываются документы (пользователь определяет категорию). Но некоторые документы могут подпадать сразу под несколько категорий. Выбрав категорию, можно получить все документы, которые в ней находятся (с "кросс" документами пока не знаю, наверное спец.пометку ставить) и пользователей, которые их создали. Контроль тот, который вы и описали. Для видео есть другие хостинги, тот же ютюб. Не вижу смысла его дублировать, если можно подгружать видео с него, а у себя только окно плеера расположить (если пользователю потребуется). |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Обычная связь многие ко многим. А кто первый привел пример с flv? ![]() -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |