powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Покритикуйте архитектуру
65 сообщений из 65, показаны все 3 страниц
Покритикуйте архитектуру
    #37911651
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оригинал в ветке Оракла - но тут тоже думаю есть кому приложиться так сказать
===

Выношу на общественный суд предложенную архитектуру системы. Буду признателен за конструктивную критику (немного неконструктивной тоже можно, но в меру).

Ограничения:
1. Oracle XE - на первое время 11ГБ хватит за глаза, а там можно на СЕ1 переехать
2. ТОлько локальные диски пока (в перспективе SAN/FCoE/ISCSI)
3. Использование ЕС2 или схожего решения для облачного развертывания

Физическая конфигурация:
1. Сервер БД - 1.7G RAM (EC2 small instance) + 2*15GB диски ЕБС (striped with mdadm) для данных
OS: Oracle Linux 5/6
2. Веб/сервер приложений: 3.75GB RAM (EC2 medium instance) + 2*10GB диски ЕБС (striped)
OS: Oracle Linux 5/6
AppServer/WebServer: Oracle GlassFish 3.1
Дополнительно на этом же сервере: Apache ActiveMQ message broker
memcached server
Suggested RAM allocation: AS - 2.5GB
memcached - 768MB

Собственно вопрос:

Сайт будет позволять пользователям загружать картинки товаров, думаю не более 20 на пользователя. Картинки предполагается хранить в базе как БЛОБы. Периодически картинки выгружаются из базы на локальный диск и синхронизируются с хранилищем СДН (eg. Amazon CloudFront)

Предполагаемый подход:
1. Пользователь загружает картинку
2. Приложение сохраняет ее в базу, поле Extraction_Date = NULL
3. По крону или по планировщику Глассфиша запущаем либо бин либо PL-SQL скрипт для выгрузки невыгруженных картинок на диск
3.1 Допустимо чтобы картинка была выгружена в течение часа. Пользователю, загрузившему картинку, ее можно показать и из базы я думаю.
4. rsync синхронизирует локальный диск с хранилищем CDN
5. Программа генерирует ссылки на кратинке в формате необходимом для CDN

Где могут быть узкие места подобного подхода при наличии около 1000 одновременных пользователей в системе (на данном железе)?
На чем следует акцентировать внимание при формировании бюджета в будущем? Например за 5 килобаксов купить пролиант с 16ГБ памяти и ССД диски?

Буду благодарен опытным архитекторам и просто профессионалам за конструктивную критику и предложения по улучшению.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911665
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinovза конструктивную критику
мне непонятно, почему столько текста и времени уделено "показу картинки".
Это счас трудный вопрос для архитектуры\железа\СУБД?

т.е. этот пост не тянет на заголовок:
"предложенную архитектуру системы "
imho
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911689
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Не скажите, коллега. Вот допустим вам нужно определенное время отклика. Есть СДН, есть картинки. А вот как их синхронизировать, будет ли масштабироваться подход с пакетной выгрузкой, или сделать JMS очередь и слушаетеля для выгрузки для скорейшей обработки. Опять же, может букв и много, и громкий заголовок, но из блоков и собирается система, и при так сказать кривизне одного блока, другой должен быть так сказать впуклым :-) Интересует критика и потенциальные узкие места при росте числа пользователей и картинок. Для корпоративного сайта может скорость и не критична, но для пользователей допустим платного сервиса это реальное конкурентное преимущество. Так что пАпрашу Вас пролить свет на недостатки предложенного подхода.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911698
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если говорить Только о картинках, то нет Функциональных требований к данной подсистеме из ТЗ.

Kostya IlyinovСайт будет позволять пользователям загружать картинки товаров, думаю не более 20 на пользователя.
это не из ТЗ на ИС.
4.2 Требования к функциям, выполняемым системой
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911701
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinovвремя отклика
"сколько будет в граммах?" (с)
ЗЫ.
Очень часто архитектор и программист сами себе выдумываю задачу.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911720
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Согласен, мне сейчас сложно оценит такой показатель. Поэтому и интересуют потенциальные проблемы предложенного подхода, чтобы в будущем избежать сложных изменений. Время простоя в будущем будет стоить денег, поэтому хочется определиться раньше нежели чем позже. Если у Вас кроме критики постановки вопроса и отсутствия в задаче некоторых вводных данных нет аргументов, меня это несказанно радует.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911738
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,

Согласен, данных для детального разбора подхода может недостаточно, но я поясню что я бы хотел услышать:

1. Предложенный подход будет тормозить доступ к картинкам, т.к. процессы оракла будут соревноваться за доступ к таблице с картинками (это пример, на самом деле гонки не должно быть ввиду хранения картинок допустим в отдельном табличном пространстве от самих данных о картинках - идентификатор товара и т.д.)
ИЛИ
2. Предложенный подход гавно, потому что картинки надо хранить на диске, я видел что Ашот так делает и это единственно верное решение

и т.д.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911742
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,
да я понял, что у вас вопрос про всю линейку картинок от малой системы (ничего не делать, показ прямо из блоб) до одноклассников.
Т.е. конкретной задачи от заказчика нет.
ОК - подумаем
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911759
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Именно коллега, интересует гибкость и масштабируемость подобного подхода. Клиент - сам я, поэтому с формализацией требований в соответствии с действующими регламентами прогресса ожидать сложно - все время идет на разработку прототипа и все связанное с этим. Вводные будут появляться по мере наступления так сказать. Спасибо за потраченное время.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911766
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое 1000 одновременных пользователей? Все тыщу пользователей одновременно гигибайтные картинки грузят?
Скорее всего - нет. А раз так, выберите самое простое и дешёвое. Потому что загрузка и просмотр картинок - не самая большая проблема.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911774
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,
- за оракл не беспокойся. Не будет там ничего тормозить (опять же нет кол-ва польз-лей).
Просто, сначала будут картинка превью 100х100 пикселей.
А вот, если кликнул "на посмотреть", то загрузка уже большой.
Те кто кликнут будет в 100 раз меньше чем тех с превью.

Ещё лучше, протестировать. Тест займёт _один_ день.

Второй критерий, сколько картинок на одной странице. Т.е. в конечном итоге нужно количество запросов в единицу времени на сервер.
А потом уже - линейка решений. Так вам её никто не даст.

ЗЫ на оракле форума вам правильно уже ответили. Пойдёт ЛЮБОЕ решение.
imho
Удачи!
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911803
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Т.е. предлагаете при загрузке картинки сразу писать 2 поля - большую и маленькую картинки? И на странице показывать маленькие, а при нажатии - большую? В том то и дело, что из базы хочется брать минимум - скажем так, метаданные. А картинку (любую) рендерить с веб/СДН сервера.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911831
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya IlyinovPetro123,
Т.е. предлагаете при загрузке картинки сразу писать 2 поля - большую и маленькую картинки? И на странице показывать маленькие, а при нажатии - большую? В том то и дело, что из базы хочется брать минимум - скажем так, метаданные. А картинку (любую) рендерить с веб/СДН сервера.
опять же, есть слово - оверхед.
Видно что вы - программист. Он (программист) всегда старается сделать в динамике и на лету.)))
Но, превью Очень широко используется.
Или, взять, тайлы карты от Гугля\яндекса. Случайно там рендерится ЗАРАНЕЕ дерево картинок по 22 штуки на одно место?

Т.е. опять без нагрузки флейм бессмысленен.
- попробуйте НИЧЕГО не делать, всё налету из БЛОБ и узнаете ограничение.
Ну, или попросите подчинённого.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911852
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Вот это уже дело. Тут еще какая особенность имеется. В РФ скажем так подавляющее большинство целевой интернет-аудитории онлайн проекта сидит в Дефолт-сити или Питере. Тут (в Австралии) все несколько иначе - относительно крупных городов несколько (скажем 4-5), и все хотят быстрый сайт, избалованы фэйсбуком и его СДНами. Поэтому СДН - это скорее данность, он не требует больших затрат, и дает ощутимое преимущество при географическом распределении аудитории. А все из базы тянуть - да, проще, но рано или поздно что-то надо будет делать. Вот я и думаю, предложенное решение вроде навскид решает задачу, и масштабироваться должно неплохо (хехе, без тестов - только в теории). Поэтому и пляшу от СДНа так сказать. Картинки из базы ведь кэшироваться не будут (?), и это опять же дополнительные расходы по трафику и деньгам между узлами в облаке.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911855
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov, да его заDDOS-ят с двумя сокетами. Тыж даже админом хер зайдешь в час нагрузки.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911894
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Коллега, поясните пожалуйста. Кого задосят? СДН, сервер приложений или ?
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911917
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри у тебя БД станет неодступной для новой транзакции когда не сможет создать
новый connection при условии что все другие слоты транзакций уже заняты.
Это самая распространённая ошибка разработчиков. Они не могут (реально не могут)
посчитать сколько же будет соединений одновременно рабоатать.

Где-то проскакивала информация о макс. количестве двух сокетов в Oracle XE но сейчас никак
не могу найти это в документации. Вобщем смотри сам. Создай на java в цикле макс число
коннектов и посчитай сколько выйдет. Только не через connection pool а по настоящему.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911922
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

XE будет брать одно ядро по-моему. Допустим. Ну и как же быть в подобной ситуации? Ваши предложения в студию пожалуйста.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911932
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya IlyinovКартинки из базы ведь кэшироваться не будут (?),
будет работать кэш сервера. Т.е. сервер отдаст её СРАЗУ в канал на аппСервер. Ничего искать повторно у себя не будет.
Потом 2 кэша Хибера.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911945
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinovmayton,

XE будет брать одно ядро по-моему. Допустим. Ну и как же быть в подобной ситуации? Ваши предложения в студию пожалуйста.
Да какие предложения. Покупай сразу SE или выше.

XE - это только для обучения разрабочиков. Или для
систем у которых ну совсем нагрузки нет. И 1 сеанс
с ними работает. Ну типа там себе на ноут поставить
на "попробовать". Вот и всё.

Вобщем почитай тут

http://www.oracle.com/technetwork/products/express-edition/overview/index.html
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911971
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
ты на форуме оракла зря вопрос задал.
Это не их вопрос, т.к. выдержит любая БД.
Решение на Java = решение на шарпе питоне или ещё чем.
Все решения будут работать , но если ты Jav'ист, то APEX - не твоё.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37911975
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, упс, аффтару было - не тебе. сорри.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912015
рубист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,

+ 1000
за хронение картинок в файловой системе, а не в БД
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912019
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Спасибо - буду делать. Как запущу, дам знать. Может на хабрушку чего чиркану если время будет. Спасибо всем откликнувшимся.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912039
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рубист,

Оргументируйте, коллега
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912066
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov2. Предложенный подход гавно, потому что картинки надо хранить на диске, я видел что Ашот так делает и это единственно верное решение.
Картинки в базе никто не хранит т.к. у вас java сервер скорее всего не выдержит и отвалится пока их будет отдавать.
Не отдать ли это дело тем, кто на это заточен. Например тот же nginx для отдача контента + к нему upload module для загрузки изображений.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912070
Александр2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПокритикуйте архитектуру
да гавно, а не архитектура
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912080
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwa,

Насчет "никто не хранит" - весьма спорное утверждение. Из достоинств данного подхода - простота обслуживания. Я уже по-моему говорил, что буду использовать CDN, так что может оверхед разделения сервера на сервер приложений и веб сервер будет менее оправданна. Отсюда собственно и вопрос - в чем недостатки подобного подхода проталкивания картинок на сервера.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912086
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр2,

Боюсь показаться неоригинальным, но хотелось бы услышать более аргументированный ответ. Или у Вас так не принято?
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912100
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaКартинки в базе никто не хранит

Хранят.

schwaт.к. у вас java сервер скорее всего не выдержит и отвалится пока их будет отдавать.

Отваливается не Java сервер. А соединение между Java и базой, если блобы засирают весь канал.

schwaНе отдать ли это дело тем, кто на это заточен.

Несколько лет назад меряли. Томкат с нативными коннекторами отдаёт не медленнее апача. Т.е. для начала можно и не заморачивается. Если производительность упрется, то перевести на nginx.

Теперь по теме. Во-первых сейчас многие SQL сервера предлагают множество оптимизаций для хранения именно файлов.
Во-вторых тупо хранить картинки отдельно можно только если они не привязана к данным - статика. Если картинки привязаны к данным, то отдельное храние выходит боком в процессе бэкапов, массовых апдейтов, интеграций и миграций.
Хранение картинок в базе намного удобнее. Если это становится узким местом сервера, то тогда уже имеет смысл подумать о толстом кэше в файловой системе и быстром HTTP сервере для таких данных.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912103
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaКартинки в базе никто не хранит
спорно))
http://tile.openstreetmap.org/11/1238/642.png
картинка 256х256 пикселей.
Если это инфа о товаре, то почему её нельзя грузить вместе с объектом - сущностью хибером.
Это ведь 1,2 килобайта.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912104
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya IlyinovPetro123,

Спасибо - буду делать. Как запущу, дам знать. Может на хабрушку чего чиркану если время будет. Спасибо всем откликнувшимся.
Что ты там черканёшь? О чем ты там будешь писать? Непонятно. Ведь никакого
новаторства нет. Нет идеи. Зачем там нужен очередной ФВмас?
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912113
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Хехе и то правда, куда мне грешному. Про стартапчик свой напишу. Вот про что.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912115
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше знаешь-ли. Чайку попить. И посидеть тихо сложа руки. Это так. Поверь будет лучше.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912117
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,

А зачем в этой архитектуре SQL сервер? Если, судя по описанию, происходят сплошные манипуляции "картинками"? Какая-нибудь файл-ориентированая NoSQL база не подойдёт?
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912128
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczKostya Ilyinov,
А зачем в этой архитектуре SQL сервер? Если, судя по описанию, происходят сплошные манипуляции "картинками"? Какая-нибудь файл-ориентированая NoSQL база не подойдёт?
исходная посылка - он любит оракл. Тоже - обоснование ))
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912136
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123исходная посылка - он любит оракл. Тоже - обоснование ))
Ага, однопроцессорная база данных - самое то.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912139
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczschwaКартинки в базе никто не хранит

Хранят.

schwaт.к. у вас java сервер скорее всего не выдержит и отвалится пока их будет отдавать.

Отваливается не Java сервер. А соединение между Java и базой, если блобы засирают весь канал.

schwaНе отдать ли это дело тем, кто на это заточен.

Несколько лет назад меряли. Томкат с нативными коннекторами отдаёт не медленнее апача. Т.е. для начала можно и не заморачивается. Если производительность упрется, то перевести на nginx.

Теперь по теме. Во-первых сейчас многие SQL сервера предлагают множество оптимизаций для хранения именно файлов.
Во-вторых тупо хранить картинки отдельно можно только если они не привязана к данным - статика. Если картинки привязаны к данным, то отдельное храние выходит боком в процессе бэкапов, массовых апдейтов, интеграций и миграций.
Хранение картинок в базе намного удобнее. Если это становится узким местом сервера, то тогда уже имеет смысл подумать о толстом кэше в файловой системе и быстром HTTP сервере для таких данных.
Имея на каждой странице с по парой десятков картинок, с каждый новым заходом получаем кучу не нужных запросов к апп серверу и базе (пока не закэшировал клиент эти изображения и так для каждого нового пользователя).
Мне вот проще взять nginx чем героически бороться с проблемами производительности, которые гарантировано возникнут.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912143
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может у него 99% нагрузки ляжет на апп. Тогда действительно возникает вопрос
а зачем собсно РДБМС ? Картинки они всегда лучше в файловой системе лежали
чтоб там старина Том не говорил. Дешево и сердито. И надёжнее даже как-то.
Вероятность отказа ФС на несколько порядков меньше чем ДБМС.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912144
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczPetro123исходная посылка - он любит оракл. Тоже - обоснование ))
Ага, однопроцессорная база данных - самое то.
Если хочется получить на выходе еще одно нынче модное "высоконагруженное приложение" на пустом месте, то как раз такой выбор является самым оптимальным.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912145
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaИмея на каждой странице с по парой десятков картинок
вот тут он поторопился.
- какой размер картинок?
- грузятся ли они в фоне? Т.к. от ГУИ зависит. Оно будет тормозить.
- как это всё безобразие смотреть на сотовом (мал.экране)?

и т.д.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912160
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага. В этоху клаудов и гридов как-то стало модно забивать на конфигурацию
и расчёт нагрузки. Дескыть один куй всё в облаке. Само-собой распредеилится.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912161
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaИмея на каждой странице с по парой десятков картинок,

Вы уже узнали сколько у автора их будет?

schwa с каждый новым заходом получаем кучу не нужных запросов к апп серверу и базе (пока не закэшировал клиент эти изображения и так для каждого нового пользователя).

Эээ, ну без серверного кэша, можно СУБД нагнуть запросами даже без блобов.

schwaМне вот проще взять nginx чем героически бороться с проблемами производительности, которые гарантировано возникнут.
Ну, тогда расскажите как вы делаете бэкапы и заботитесь о целостности состояний в базе и ФС. Транзакции как откатываете?
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912162
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМожет у него 99% нагрузки ляжет на апп. Тогда действительно возникает вопрос
а зачем собсно РДБМС ? Картинки они всегда лучше в файловой системе лежали
чтоб там старина Том не говорил. Дешево и сердито. И надёжнее даже как-то.
Вероятность отказа ФС на несколько порядков меньше чем ДБМС.
База может понадобиться для того, чтобы иметь некое соответствие этих картинок с другими данными, но в таком случае от картини можно быть достаточно id (+ какие-нибудь данные еще) и хранить ее физически там не обязательно. Т.к. из-того же id можно легко уже вычислять адрес, где на самом деле лежит изображение.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912168
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВероятность отказа ФС на несколько порядков меньше чем ДБМС.
Да, чего там мелочится. Не на несколько порядоков а на десятки и сотни порядоков надежнее. И двух фазный комит поддерживает. И файлы всегда до конца дописывает. И откаты делает с пол пинка.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912172
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня был опыт разработчи (в команде) одной XML-системы на базе IIS+ASP.
Обходились операциями с NTFS. Даже индексы строили на базе junction points
(это так называются сим-линки). Транзакции иммитировались двух-фазной
операцией с XML-документом.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912190
рубист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinovрубист,

Оргументируйте, коллега

У самого есть проект с давней историей "интранет\документооборот" jpg\pdf\xls\doc внутри компании, сейчас порядка 30000 файлов в БД блобах.
Приемущество хранения файлов в БД только одно, проще администрировать (бекапы, репликации и т.д.) во всем остальном только минусы.
А именно, больше нагрузка на БД, рост размера БД и её бекапов, сложности доступа к файлам из вне,
меньше гибкость (попробуйте добавить версионность как в вашем случае с картинками) и чисто субьективное мнение - не годится.

С файловой системой чуть сложнее администрировать (бекапы, репликации), зато все остольное очень хорошо.
Можно внешним сервисам файлы отдать, из бекапа проще нужные файлы достать,
файловую систему можно подобрать получше или затюнить в сторону быстрого чтения,
можно пользователям мгновенно отдавать файлы без участия приложения или БД через X-Accel-Redirect (nginx) / X-Sendfile (apache),
версионность проще сделать + создание версий (картинок) делать в фоновом режиме без участия БД. и чисто субьективное - годится.

Вообще, если файлов не много, скажем количеством до нескольких сотен, то есть смысл смотреть на блобы,
если фалов предполагается хранить много, то только файловая система.

все это IMHO конечно, что лучше - решать вам. :)
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912192
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
альтернатива:

купить хостинг с PHP/MySQL - стоимость 500-1000 рублей в месяц
поставить бесплатную Joomla
выбрать бесплатный скин и добавить в него свой логотип
поставить бесплатные плагины для загрузки картинок

всё. Ничего програмить не нужно, стоит копейки.

Производительности должно хватить. Если нет то можно арендовать выделенный сервер и платить аж 3 тыщи рублей.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912230
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вы используете S3, этого достаточно. Хранения картинок в БД, hdd - нафиг. За вас все сделает AWS. На первое время можно обойтись без CloudFront - тем более, что для России он вроде не так, чтобы уж очень полезен.

Если задача тупо хранить графику и отдавать графику, вам хватит что-то типа m1.small за ~2000р/м и s3.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912437
Кореец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya IlyinovКартинки предполагается хранить в базе как БЛОБы.

плохое решение.
база будет расти из-за картинок.
время транзакций увеличится пропорционально размеру картинки.

Как бы оракл это оптимально не хранил все равно будет медленнее записи файлов на диск.

>пользователям загружать картинки товаров, думаю не более 20 на пользователя.
>при наличии около 1000 одновременных пользователей в системе
>на первое время 11ГБ хватит за глаза,

вы уверены?
1000*20*400Кб..

уже как бы близко к пределу. или фотки мелкие совсем или выдумаете пользователи такие гуманные?
да они вам по 10 метров фотки начнут кидать. Не оболщайтесь что если урезать им такую возможность не урежется само количество пользователей. Придется сжимать и обрабатывать фотки самому. Вот увидите.

Вы собрались после сохранения в БД и перекачки их на СДН потом из БД удалять? а что тогда там останется вместо? урл на фотку в сдн или просто имя а сдн само решает что это за файл и где лежит. имя уникально?
а зачем тогда так сделать когда сразу проще кинуть файлик на диск и сохранить его расположение в базе в виде пути к папке.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912451
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczmaytonВероятность отказа ФС на несколько порядков меньше чем ДБМС.
Да, чего там мелочится. Не на несколько порядоков а на десятки и сотни порядоков надежнее. И двух фазный комит поддерживает. И файлы всегда до конца дописывает. И откаты делает с пол пинка.
Я всё прекрасно понимаю. Но думаю что для картинок (это в принципе объекты R/O) можно
создать компромиссное решение. В БД сохранять объект BFILE со всеми атрибутами.
Датами создания там... метаинформацией и т.д. Сами файлы - соотв. В файловой системе.
И подкорректировать скрипты бэкапов чтобы снималась согласованная копия БД
а картинки - как бог даст или хотябы через снапшоты LVM. +Если задаться
правилом что картинка создаётся 1 раз и никогда не измеяется и имя её
всегда уникально (sеquence) то коллизий при восстановлении быть не должно.

ФС даст хоршее ускорения для веб-сервера и снимет с БД ненужную нагрузку.

Вот как-то так.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912465
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КореецKostya IlyinovКартинки предполагается хранить в базе как БЛОБы.
плохое решение.

===== оно всегда было не плохое, а 50 на 50

база будет расти из-за картинок.

==== а из-за описания товара расти не будет? Зачем вам урезанная БД без картинок?

время транзакций увеличится пропорционально размеру картинки.
==== и чем это плохо? Это один из атрибутов товара.

Как бы оракл это оптимально не хранил все равно будет медленнее записи файлов на диск.
===== на сколько микросекунд?

1000*20*400Кб..

===== тут вы правы, XE ограничивает БД по размеру

Придется сжимать и обрабатывать фотки самому. Вот увидите.

==== это всегда надо делать
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912470
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
последний пункт - АвтоУменьшаете фотку до размера 1,5 килобайт. И даёте кнопу "Сохранить" "Отменить".
Это же не фото-сервис для 1600 х 1200
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912471
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Коллега - нечто подобное и замышляется. По сути, картинка в СУБД нужна лишь для полноты картины, но она там нужна. Читаться оттуда она будет в идеале единожды - на ФС и потом на СДН. Но изобретать транзакционность для ФС я не хотел бы, плюс придумывать стратегию резервирования и т.д. Есть база, есть бэкап - это все что нужно, ничего лишнего. По поводу производительности, картинки будут в отдельной таблице и в отдельном табличном пространстве, а в перспективе и на отдельном дисковом массиве, поэтому оверхэд должен быть минимальным. В целом картина вырисовывается, я просто хотел убедиться что не упустил ничего очевидного. Грабли будут, но уже по крайней мере знаешь откуда они вырастут.

Насчет хранения данных в С3 - может быть сейчас и сделаю так, но обязательно с прослойкой - в перспективе все-таки будет целесообразнее купить физический сервер и поставить стойку в Мельбурне, а не Амазон в Синге или Токио. Избалована публика местная временем отклика. Спасибо всем откликнувшимся, кроме Александр2 :-) - так и не раскрыл своего хода мысли, только заключение.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912477
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Обработка перед вставкой картинки обязательно будет - надо как минимум добавить водяной знак, и уменьшить - тут вы правы. Насчет хранения - см. выше, думаю в отдельном табличном пространстве на отдельном устройстве все будет нормалек.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912526
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczschwaИмея на каждой странице с по парой десятков картинок,

Вы уже узнали сколько у автора их будет?

schwa с каждый новым заходом получаем кучу не нужных запросов к апп серверу и базе (пока не закэшировал клиент эти изображения и так для каждого нового пользователя).

Эээ, ну без серверного кэша, можно СУБД нагнуть запросами даже без блобов.

schwaМне вот проще взять nginx чем героически бороться с проблемами производительности, которые гарантировано возникнут.
Ну, тогда расскажите как вы делаете бэкапы и заботитесь о целостности состояний в базе и ФС. Транзакции как откатываете?
Ну бэкапятся периодически картинки просто и все.
Никаких операций кроме (удаления очень редко) над ними не производится т.е. они полностью иммутабл. В базе хранятся как id и дата загрузки + несколько технических полей. Картинок несколько сотен гигабайт, живут на отдельном сервере, отдаются nginx-ом. Полет нормальный.
Может сейчас что-то и получше накрутили, но эти уже не занимаюсь, но проблем никаких с этим не было.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912607
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya IlyinovНасчет хранения данных в С3 - может быть сейчас и сделаю так, но обязательно с прослойкой - в перспективе все-таки будет целесообразнее купить физический сервер и поставить стойку в Мельбурне, а не Амазон в Синге или Токио. Избалована публика местная временем отклика. Спасибо всем откликнувшимся, кроме Александр2 :-) - так и не раскрыл своего хода мысли, только заключение.
Сервера сloudfront и сервера ec2 это не совсем одно и тоже.
http://aws.amazon.com/cloudfront/#details - есть и в Сиднее http://aws.amazon.com/cloudfront/whats-new/
А так преимуществ своего сервера перед CDN никакого нет. Только дороже выйдет и хуже, ПМСМ.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912619
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,

Да, читал про местный эдж. Конечно в связке с ЕС2 работать должно все четко. Но со временем будет целесообразнее иметь свое железо, поэтому и их КлаудФрант по идее будет не проще чем другие решения от сторонних "чистых" CDN.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912622
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,

Свой сервер (веб/апп) для картинок будет только в крайнем случае использоваться - если на СДН нет такого файла, ессесно свой СДН не предполагается.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912626
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaНу бэкапятся периодически картинки просто и все.
Никаких операций кроме (удаления очень редко) над ними не производится т.е. они полностью иммутабл. В базе хранятся как id и дата загрузки + несколько технических полей. Картинок несколько сотен гигабайт, живут на отдельном сервере, отдаются nginx-ом. Полет нормальный.
Может сейчас что-то и получше накрутили, но эти уже не занимаюсь, но проблем никаких с этим не было.
Судя по тому что у автора темы картинки тоже не принципиально важные данные, то, вероятно, да, не страшно и потерять чего.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912642
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Важные-важные! Собственно для удобства и надежности хранения СУБД в первую очередь и предполагается их класть в базу.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912650
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya IlyinovLeonidv,

Да, читал про местный эдж. Конечно в связке с ЕС2 работать должно все четко. Но со временем будет целесообразнее иметь свое железо, поэтому и их КлаудФрант по идее будет не проще чем другие решения от сторонних "чистых" CDN.
А почему целесообразней?
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912654
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kostya Ilyinov,

а зачем картинки в базе ???
регишься в азуре, микрософт тебе дарит 12 виртуалок на год и очень дешевые блобы. Картинки заливаешь в блобы, если надо отдавать в разных форматах\с вотермарками\разных размеров итд - ресайзишь и кладешь в кеш в блобы. Отдельным процессом чистишь кеш по последнему времени доступа. Время достпуа к блобам линейное и очень быстрое. + репликация. Пишешь им письмо чтоб сняли ограничение на макс 12 инстансов, размер роли делаешь очень маленький, ночью оставляешь 2 днем включаешь 100 :). Итого у тебя картинки отдаются раундробингом 100ней виртуалок(в часы пиковых нагрузок)+ бесконечное дисковое пространство с линейным верменем доступа. Дешево(если трафика меньше 90 гб в месяц - вообще бесплатно), масштабируемо и надежно.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912669
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,

По моим выкладкам купить неплохой сервер с 16 гигами памяти и быстрыми дисками будет стоить около 6 штук. По идее это можно поделить на 2 машины vmware и это все равно должно по производительности/времени отклика быть ощутимо лучше чем у амазона те же 8 гигов. 8 гиговая машина у амазона стоит около 800 в год + 10 центов в час (это только машина, сторадж и трафик - отдельно). http://aws.amazon.com/ec2/#instance Т.е. в год на одну машину уходит около 2 штук. Таким образом физическое железо становится не таким уж и дорогим. На первых порах лезть в железо смысла нет, а потом - вполне. Если где есть неточности/упущения, буду признателен за опыт.
...
Рейтинг: 0 / 0
Покритикуйте архитектуру
    #37912670
Kostya Ilyinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis.,

Хмм почитаю, я читал там даже линукс можно крутить. Интересно, для Австралии их время отклика как будет сопоставимо с Сингапурским амазоном?
...
Рейтинг: 0 / 0
65 сообщений из 65, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Покритикуйте архитектуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]