powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Хранение большого количества фотографий пользователя
25 сообщений из 36, страница 1 из 2
Хранение большого количества фотографий пользователя
    #37675707
M0K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
M0K
Гость
Добрый день!

При разработке проекта возникла проблема с хранением пользовательских фотографий. Ситуация следующая: есть два взаимосвязанных проекта, которые используют WCF сервис для взаимодействия друг с другом (обмен пользовательскими данными и прочее). Соответственно есть 2 базы данных(которые будут храниться на 2 разных серверах).

Под каждый сайт будет выделенно несколько разных серверов для распределения нагрузки. У пользователя есть возможность загружать свои фотографии... Вот тут и возникла следующая проблема: если сайт храниться на нескольких серверах, сохранять фотографии локально - не выход (я думаю понятно почему). Было придумано несколько вариантов решения данной проблемы:

1) Использовать базу для хранения фотографий (конечно не самый лучший вариант, но все таки как временную альтернативу мы его рассматриваем)
2) Использовать отделный домен и сервер для хранения фотографий, а ссылку на фото сохранять в базу. Но тут возник вопрос - КАК ИХ ЗАЛИВАТЬ на отдельный удаленный сервер???? Было рассмотрено использование WCF службы для передачи фотографии и сохранения ее на текущем сервере. Но с точки зрения логики, быстродейсвия и прочего это не самый лучший вариант. Использование сокетов для передачи даже не рассматривалось!


Идеальным решением было бы использовать технологию Azure, однако с учетом коротких сроков, использовать ее сейчас никак не получается. На следующих этапах разработки, первым делом будет рассмотрен переход к этой технологии. Сейчас нужно временное, наиболее подходящее решение.

Нагрузка на каждый сайт планируется очень большая. Вначале это будет от 5000-10000 человек.

Выскажите, пожалуйста, свое мнение по этому поводу. У кого есть какие идеи? Буду очень признательна за любую помощь.
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37692118
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M0K,

самое простое - прсто выкладывать туда фотки, либо по FTP, либо:
Код: c#
1.
new System.Net.WebClient().UploadData("http://filesite.com/userdata.aspx?userId=321", data);



Быть может как самый быстрый вариант - хранить все фотки в одном из этих проектов
Хранение в БД крайне не рекомендую (большая нагрузка на трансфер)
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37694298
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL Server FileStream
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37694471
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSQL Server FileStream
Я понимаю, что файл будут храниться не в файлах БД (mdf или что там, поправьте если ошибаюсь), но разве это "с точки зрения быстродействия" сильно поможет?

Есть несколько серверов.
Чтобы передать файл пользователю должна произойти передача файла от сервера БД к серверу веб-приложения, а потом уже-пользователю
На мой взгляд двойную передачу нужно убрать, имхо
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37694537
beha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ftp budet luchshim variantom

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public static void UploadFile(string iLogin, string iPassword, string iFileFTPPath, byte[] buffer)
        {

            FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(iFileFTPPath);
            ftp.Credentials = new NetworkCredential(iLogin, iPassword);

            ftp.KeepAlive = true;
            ftp.UseBinary = true;
            ftp.Method = WebRequestMethods.Ftp.UploadFile;

            Stream ftpstream = ftp.GetRequestStream();
            ftpstream.Write(buffer, 0, buffer.Length);
            ftpstream.Dispose();
            ftpstream.Close();

        }
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37694717
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSЯ понимаю, что файл будут храниться не в файлах БД (mdf или что там, поправьте если ошибаюсь), но разве это "с точки зрения быстродействия" сильно поможет?
Поможет. Причем сильно.


SanSYSЕсть несколько серверов.
Чтобы передать файл пользователю должна произойти передача файла от сервера БД к серверу веб-приложения, а потом уже-пользователю
Файловый поток сиквел сервера как-раз решает эту задачу.

SanSYSНа мой взгляд двойную передачу нужно убрать, имхо
Какую двойную передачу? В первом случае мы имеем дело просто с потоковой ссылкой , в другом случае мы отдаем пользователю готовый файл.
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37694777
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

не-не, понятно что FileStream гораздо удобнее чем BLOB, замечание в другом: ведь данные из SQL-сервера передадутся web-приложению, а потом уже конечному клиенту (браузеру)? Или там врубили какое-то "волшебство", что файлы из SQL-сервера будут передаваться минуя web-сервер и передаваться сразу браузеру?

P.S.: меня действительно интересует этот двойной вопрос
P.P.S.: МСУ, я терпеть вас не могу, теперь в выходные доп. литру читать
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37694920
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSведь данные из SQL-сервера передадутся web-приложению, а потом уже конечному клиенту (браузеру)?
Я же уже сказал - "ссылка" (stream). А по "ссылке" мы получим уже реальный файл web-для приложения. Никакого волшебства.
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37694926
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSanSYSведь данные из SQL-сервера передадутся web-приложению, а потом уже конечному клиенту (браузеру)?
Я же уже сказал - "ссылка" (stream). А по "ссылке" мы получим уже реальный файл web-для приложения. Никакого волшебства.

вот, блин, а в потоке не данные передаются? Просто если читать поток из БД сразу в респонс, то все равно данные прогоняются от sql-сервера через сервер веб-приложения браузеру клиента, разве нет?
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695213
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSвот, блин, а в потоке не данные передаются? Просто если читать поток из БД сразу в респонс, то все равно данные прогоняются от sql-сервера через сервер веб-приложения браузеру клиента, разве нет?
Убейте себя об стену.
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695218
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSanSYSвот, блин, а в потоке не данные передаются? Просто если читать поток из БД сразу в респонс, то все равно данные прогоняются от sql-сервера через сервер веб-приложения браузеру клиента, разве нет?
Убейте себя об стену.
Соизвольте убиться сами
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695227
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSСоизвольте убиться сами
Начните убиваться от сюда: Введение в FILESTREAM

...Он позволяет совместить оба подхода, преодолев недостатки каждого: хранить блобы в файловой системе, обеспечив клиенту к ним стриминговый доступ, с другой стороны вся работа с этими файлами происходит под полным контролем SQL Server, который обеспечивает по ним транзакционность, бэкап, полнотекст, репликацию, лог шиппинг, кластеризацию и прочие дела, за которые он обычно отвечает. Строго говоря, файлстрим не является типом. Это просто атрибут на блобовскую колонку, говорящий SQL Server хранить ее в виде отдельного файла. Размер блоба при этом ограничен только размерами тома.

"Двойная передача" может быть только в Вашем воспаленном сознании, которое отказывается читать документацию, пробовать это на практике. Но с упорством подолжает спорить и задавать идиотские вопросы по десять раз. Постройте кирпичную стену и убейтесь об нее.
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695229
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSМСУпропущено...

Я же уже сказал - "ссылка" (stream). А по "ссылке" мы получим уже реальный файл web-для приложения. Никакого волшебства.

вот, блин, а в потоке не данные передаются? Просто если читать поток из БД сразу в респонс, то все равно данные прогоняются от sql-сервера через сервер веб-приложения браузеру клиента, разве нет?

Может на отдельный сервер поставить *nix + nginx, отдавать файлы напрямую по url и не мучить себя никакими ms_sql-блобами/контейнерами и прочим?
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695239
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_stSanSYSпропущено...


вот, блин, а в потоке не данные передаются? Просто если читать поток из БД сразу в респонс, то все равно данные прогоняются от sql-сервера через сервер веб-приложения браузеру клиента, разве нет?

Может на отдельный сервер поставить *nix + nginx, отдавать файлы напрямую по url и не мучить себя никакими ms_sql-блобами/контейнерами и прочим?

Я именно за подобное решение
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695282
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Я же выше дал понять что доку читать буду в выходные, следственно мои вопросы можно либо игнорить, либо внятно отвечать, а не реагировать так неадекватно

"Стримминговый доступ" это просто отлично, но если файл весит 500 метров, БД находится на серваке в калифорнии, сайт развернут в германии, пользователь из России, то чтобы передать файл пользователю поток должен будет пройти от бд к приложению, а после к пользователю.

ну и что что поток, на мой взгляд приложение для передачи этого файла излишне, либо оно должно находиться в той же сети или даже машине что и сервер БД, чтобы не терять время на передаче данных от БД к приложению

st_st прав, в том что лучше для этого отдельный сервер заюзать, отдавая пользователям ссылки на него, а заливать файлы по ftp как предлагает beha и все

P.S.: Делаю вывод, что с вами бесполезно вести дискуссии, т.к. вы неминуемо принимаете их как споры полностью игнорируя доводы собеседника считая что лишь ваш ответ является единственно верным
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695284
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ТС.
Я бы хранил фотки в базе. Вот только меня смущает WCF, который ни пришей, ни пристегни. Вотки бы я отдавал через хендлер, который добывает их в базе. На клиентский компьютер передаётся пе через "приложение", а напрямую, типа <img src=....ashx?url=... />
Совершенно элементарное решение.
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695322
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSМСУ, Я же выше дал понять что доку читать буду в выходные, следственно мои вопросы можно либо игнорить, либо внятно отвечать, а не реагировать так неадекватно
Вы можете хоть к новому году доку читать, зачем продолжать тупить по второму (третьему) разу?

SanSYS"Стримминговый доступ" это просто отлично, но если файл весит 500 метров, БД находится на серваке в калифорнии, сайт развернут в германии, пользователь из России, то чтобы передать файл пользователю поток должен будет пройти от бд к приложению, а после к пользователю.
Опять тупим? Кто мешает пробросить ссылку на хендлер с ID фотки, о котором вещает Серж? Хенлер будет располагаться при базе данных, чтобы разово отдать файло. Мозг окончательно заклинило?
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695337
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУХенлер будет располагаться при базе данных, чтобы разово отдать файло
Ясен пень при таком варианте FileStream самый удобный вариант
При чем его я описал как раз перед сообщением ShSerge:
SanSYSлибо оно должно находиться в той же сети или даже машине что и сервер БД, чтобы не терять время на передаче данных от БД к приложению
По моему вы должны включить мозг :)
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695339
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
более того - если отдается картинка и она не менялась, то можно браузеру сказать, чтобы он из кеша брал если есть
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695340
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, я в чем-то ошибся?
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695353
????????
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ, что скажешь-то?
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695380
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSЯсен пень при таком варианте FileStream самый удобный вариант
При чем его я описал как раз перед сообщением ShSerge:
Я с самого начала об этом писал:

МСУКакую двойную передачу? В первом случае мы имеем дело просто с потоковой ссылкой, в другом случае мы отдаем пользователю готовый файл.

... и? Вы продолжаете же тупить.

SanSYSПо моему вы должны включить мозг :)
SanSYS, сынок, ты просто запутался в своих же дебрях, сгенеренных потоком твоего больного воображения. Так что не будем про мозг

SanSYSМСУ, я в чем-то ошибся?
В том, что не понимаете с первого слова и многое приходится разжевывать.
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695394
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, так в сабже говорится про "2 базы данных(которые будут храниться на 2 разных серверах)" и вы ни словом не обмолвились про то что приложение отдающее файл при FileStream должно находиться там же. т.е. дали совет который будет отлично и удобно работать при том условии которое вы не оговорили, но на коее я все время обращаю внимание
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695403
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, не вижу смысла с вами спорить, вы человек не умеющий принимать и вникать в рассуждения собеседника, имхо
...
Рейтинг: 0 / 0
Хранение большого количества фотографий пользователя
    #37695460
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYSМСУ, так в сабже говорится про "2 базы данных(которые будут храниться на 2 разных серверах)"
Хоть 10, это сути не меняет.
SanSYSи вы ни словом не обмолвились про то что приложение отдающее файл при FileStream должно находиться там же.
Я говорил о ссылке. А как и где ее использовать - другой вопрос. Ясен пень, что стриммер должен быть при ресурсе. Об этом нужно "обмолвиться"? Тогда - в сад.
SanSYSт.е. дали совет который будет отлично и удобно работать при том условии которое вы не оговорили, но на коее я все время обращаю внимание
Про сад уже сказал.
SanSYSМСУ, не вижу смысла с вами спорить, вы человек не умеющий принимать и вникать в рассуждения собеседника, имхо
SanSYS, спорьте с пенсионерами. С Вами не то, что спорить, а говорить дектруктивно. Тому живые примеры: 12202727 12204084 и сотня других. Вникать в "рассуждения" клиники не хочу. В сад.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Хранение большого количества фотографий пользователя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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