![]() |
|
Модераторы: LSD |
![]()
|
|
| WolfAlone |
|
||||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Доброго времени суток!
Имеем: 1. БД (например, MySQL) 2. Тип таблиц: InnoDB. 3. 5шт. Blob-полей, размером до 2Мб В каждом из этих полей будет храниться фотография (от 1 до 5 [1 фотография = 1 поле]). Вопрос заключается в следующем: насколько резонно хранить фотографии непосредственно в БД? Увеличивается или снижается от этого производительность системы (сервера) в целом? В каких случаях фотографии лучше хранить именно внутри БД, а в каких лучше хранить ссылку на фото на жестком диске? Например, поле
содержащее ссылку на фото на жестком диске, что-то вроде:
Возможно, какой-то конкретный выбор наиболее актуален для какой-то конкретной БД или типа таблиц? P.S. Если это очень принципиально, то предполагается использование ОС: Debian 6 или FreeBSD 8, файловая система Ext3/Ext4 или UFS (соответственно). Сервер БД MySQL 5.1/5.5. -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
||||
|
|||||
| 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. |
|||
|
||||
| maint |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 12.5.2008 Репутация: нет Всего: 2 |
В базе, если приспичило, в отдельной таблице. Моё мнение, хранить в файловой системе. Вообще, загрузка больших картинок на дороговато обходится. По моему, технология такая: высасываем из базы, создаётся времянка на диске и потом показывается. Так, кажется.
|
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Благодарю за ценную информацию! В моём случае фото (от 1 до 5шт.) - это "приложение" к остальным данным. Примером может служить, допустим таблица с объявлениями, например, о продаже машин, которая содержит следующие данные (исключительно для примера): Марка машины, текст объявления, цена, *ещё каких-нибудь 3-5 текстовых полей* + 1-5 фото. Максимальный размер, которого может достигать 1 фотография = 2Мб. То есть, при самом "худшем" раскладе, общий объём занимаемого фотографиями пространства составит 10Мб. Всё фото относятся исключительно к конкретной записи (в нашем примере, к конкретному объявлению).
Объясню чем мотивирован мой вопрос. В плане "удобства" хранения самих фотографий (на диске или в БД) - у меня принципиальных предпочтений нет. Но, в плане резервного копирования, хранить всё в БД, лично мне было бы гораздо удобнее, т.к. это позволит "отделить мух от котлет". То есть, платформа отдельно, все данные в БД - отдельно. Но, если хранение изображений внутри БД значительно скажется на производительности (снижение производительности более чем на 20-30%), то от такого способа мне придётся отказаться. P.S. Объём изображений (в байтах) однозначно будет превышать объём текстовых данных, возможно в несколько десятков или даже сонет раз. То есть, текст у нас занимает до 100Кб в строке, картинки могут занимать до 10Мб. -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
лучше PostgreSQL, Oracle
хотя, MySQL умеет буферизировать данные при выдачи но если понадобиться сделать бэкапы, то будут проблемы, твой сервис будет не работоспособный пока бэкап не загрузиться, по-моиму или raid1 - то там как будут хз (но дополнительная стоимость на raid1) есть, например MogileFS протестированная на миллионы пользователей и на большой общий объем подробности с бэкапом не знаю, но крупные сервсиы используют ее, видимо работает Это сообщение отредактировал(а) gcc - 1.7.2011, 17:35 |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
gcc, к сожалению выбор ФС ограничен только 2-мя (3-мя), а именно: Ext3 (Ext4) или UFS. Поставить PostgreSQL вместо MySQL - не составляет никакого труда, платформа умеет работать с большим разнообразием БД.
возможно я ошибаюсь, но мне кажется многие БД позволяют делать "горячий" бэкап, то есть, бэкап без остановки сервера, не зависимо от наличия в базе BLOB-полей и их содержимого. -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
WolfAlone, MogileFS - это не Posix (не встроенная в ОС, а внешние проложение)
Добавлено @ 17:45
я имел ввиду, если сервер перезагрузиться, то надо будет восстанавливать таблицы, а они могут не восстановиться и нужно будет бэкап ЗАЛИВАТЬ... (но есть raid1 который зерклирует...) и если сервер очень нагруженные - это всегда плохо если делать бэкап в этот момент... бывает все падает и ФС разваливается Это сообщение отредактировал(а) gcc - 1.7.2011, 17:50 |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
gcc, благодарю за информацию! Обязательно учту этот момент!
-------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
LSD, хотелось бы услышать Ваши рекомендации по приведённому выше случаю. Какой сервер БД лучше использовать? Стоит ли хранить данные в БД если текст занимает не более 100Кб, а изображения не более 10Мб на 1 строку (запись)?
P.S. Всех благодарю за внимание. Так же, буду благодарен за любую информацию и личный опыт касательно выше приведённого случая. -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
BLOB удобен тем, что оне хранится в БД и при правильном использовании (транзакции, ссылочная целостность и т.д.), у тебя всегда будут согласованные данные. У тебя не будет ситуации когда в БД есть запись, а на диске его нет. Или наоборот, в БД запись удалили, а файл остался и занимает место. С другой стороны файлы гораздо производительней, чем BLOB поля. Я так понимаю у тебя будет некий сайт с объявлениями и фотографии нужно будет показывать на веб страничке, так? Мне кажется, что СУБД сама по себе не справится с такой нагрузкой. Вернее конечно она может справится, но это будет непропорционально затратам на тюнинг и железо для СУБД. С помощью файлов эта задача решается гораздо проще, да и отдачей фалов клиенту будет заниматься веб сервер, не дергая СУБД. С другой стороны если у тебя между базой и веб сервером есть прослойка кеширующих in memory database, то тут можно картинки и в BLOB писать, главное чтобы хватило памяти. -------------------- 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. |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
LSD, спасибо большое! Вопрос на данный момент решил так:
1. Мелки картинки (до 100Кб./1шт.), в не очень большом количестве (ориентировочно до 1тыс. записей, максимально, реально - порядка 50 записей) - засовываю в БД, что бы сохранить целостность данных 2. Картинки побольше (все остальные) - раскладываю по файловой системе *частичто, такому решению поспособствовало то, что статику будет отдавать nginx, и дабы он "не простаивал напрасно"... -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
Остался пожалуй единственный вопрос по этому поводу. Возможно кто-то проводил эксперименты над БД, со стандартными настройками (без "тюнинга")? Интересует примерная цифра потери производителности при записи данных в BLOB-поля и "доставанию" их оттуда с последующей отдачей через серверный скрипт, с такой же отдачей файла, но не из BLOB-поля, а непосредственно через сам веб-сервер?
Интересует примерный % потери производительности, с учётом того, что БД и Веб-сервер находятся на одной и той же машине (то есть, время на сетевой трафик - минимально). Конкретно, интересуют следующие БД:
-------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
| 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. |
|||
|
||||
| WolfAlone |
|
|||
![]() В экстазе ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1010 Регистрация: 16.9.2008 Где: Рай Репутация: нет Всего: 5 |
LSD, Ещё раз спасибо Вам большое!
P.S. Никак не могу поставить "+" (пишет, что сутки ещё не прошли). -------------------- И сказал Бог: "Тогда я построю свой мир с блэк-джеком и шлюхами!" Ф топку Ubuntu, Debian наше фсё! (с) Евгений Вольф |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |