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

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

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

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


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

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

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

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



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

Есть несколько серверов.
Чтобы передать файл пользователю должна произойти передача файла от сервера БД к серверу веб-приложения, а потом уже-пользователю
На мой взгляд двойную передачу нужно убрать, имхо
...
Рейтинг: 0 / 0
07.03.2012, 01:33:39
    #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
07.03.2012, 09:40:19
    #37694717
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение большого количества фотографий пользователя
SanSYSЯ понимаю, что файл будут храниться не в файлах БД (mdf или что там, поправьте если ошибаюсь), но разве это "с точки зрения быстродействия" сильно поможет?
Поможет. Причем сильно.


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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