Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Web api загрузка большого куска данных в ms sql / 25 сообщений из 34, страница 1 из 2
03.03.2019, 14:04
    #39781499
panthe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
по web api будут загружаться большие объемы данных около 500тыс записей за сессию. Думаю сделать так - в контроллере сохранять запись в ArrayList а потом при посылке запроса на disconnet сохранять записи. Тут встал такой вопрос - что делать если запрос на disconnect так и не пришел по каким либо причинам. Единственное что пришло на ум это static timer который каждые полчаса проверяет есть ли что то в статической коллекции и авторизован ли в данный момент пользователь у которого есть права на доступ к api. Для проверки пользователя написал метод возвращающий логин из куки. Он нормально отрабатывает если его вызвать из обработчика запроса контроллера, а при вызове из таймера выкидывает CryptographicException. Как можно решить эту проблему?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public string CurrentUser()
        {
            try
            {
                CookieHeaderValue cookie = Request.Headers.GetCookies(FormsAuthentication.FormsCookieName).FirstOrDefault();
                FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(cookie[FormsAuthentication.FormsCookieName].Value);

                return authTicket.Name;
            }
            catch (NullReferenceException e)
            {
                logger.Error(e.Message);
                return null;
            }
            catch (CryptographicException e) {
                logger.Error(e.Message);
                return null;
            }
        }
...
Рейтинг: 0 / 0
03.03.2019, 14:18
    #39781501
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
Зачем такие извращения? Писать в БД с признаком "временный". Не было фиксации, при новой авторизации пользователя грохать эти записи (или во время ночного обслуживания базы).

А вообще, не очень понятно, чего нужно добиться, если "запрос на disconnect так и не пришел по каким либо причинам"? Сбросить все данные или сохранить все данные? Если второе, то зачем вообще заморачиваться с какой-то буферизацией - писать в БД сразу, да и все.
...
Рейтинг: 0 / 0
03.03.2019, 14:29
    #39781505
panthe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
Shocker.Pro,если писать в базу 500 000 + записей за раз, это сколько времени займет? я из этих соображений. Чтобы быстро все данные принять в коллекцию и потом оттуда уже в новом потоке загрузить в базу.
...
Рейтинг: 0 / 0
03.03.2019, 14:36
    #39781507
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheпо web api будут загружаться большие объемы данных около 500тыс записей за сессию.юз-кейс какой?
- юзверь зашёл на сайт
- нажал кнопу Загрузить
- дальше? Откуда он миллион взял?
...
Рейтинг: 0 / 0
03.03.2019, 14:41
    #39781510
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
panthe500 000 + записей за разя читаю то, что написано:
pantheоколо 500тыс записей за сессию

так за запрос или за сессию все-таки, определись
...
Рейтинг: 0 / 0
03.03.2019, 15:00
    #39781519
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheесли писать в базу 500 000 + записей за раз, это сколько времени займет?
В MS SQL? Не зная что за данные, предположу, что секунд 15-20 :)
Но можно и быстрее.

Но откуда вы взяли 500 000+ в секунду, что за данные такие?
При этом ещё не датчики какие-нибудь с устройств, не метрики, а пользователь с правами.

Вообщем задача не понятна.
...
Рейтинг: 0 / 0
03.03.2019, 15:07
    #39781520
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
Дмитрий МухНо откуда вы взяли 500 000+ в секунду,а откуда ты взял, что в секунду?
ТС путается в показаниях, но про секунду он не говорил )
...
Рейтинг: 0 / 0
03.03.2019, 15:13
    #39781523
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
Shocker.ProДмитрий МухНо откуда вы взяли 500 000+ в секунду,а откуда ты взял, что в секунду?
ТС путается в показаниях, но про секунду он не говорил )
Из вопроса: "если писать в базу 500 000 + записей за раз, это сколько времени займет?"
То есть в определённый момент времени прилетает 500 000 + записей и их надо вставить в БД.
И человека интересует то, сколько это займёт времени.

Я просто привык к операциям в секунду, а не к операциям за раз, за сессию, за ещё какую-то не общепринятую терминологию.
И хотел бы, чтобы автор написал сколько именно в секунду записей ожидается.

Тогда будет понятно, в том числе и тебе. Согласен?
...
Рейтинг: 0 / 0
03.03.2019, 15:17
    #39781525
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
К примеру что значит "за сессию"?
Пришёл пользователь на работу, вошёл в систему и до обеда фигачил?

То есть 500 000 записей где-то за 4 часа? 35 записей в секунду? :)
...
Рейтинг: 0 / 0
03.03.2019, 15:21
    #39781527
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
Дмитрий МухИз вопроса: "если писать в базу 500 000 + записей за раз, это сколько времени займет?"
То есть в определённый момент времени прилетает 500 000 + записей и их надо вставить в БД.
И человека интересует то, сколько это займёт времени.

Я просто привык к операциям в секунду, а не к операциям за раз, за сессию, за ещё какую-то не общепринятую терминологию.
И хотел бы, чтобы автор написал сколько именно в секунду записей ожидается.

Тогда будет понятно, в том числе и тебе. Согласен?Ну погадаем на хрустальном шаре.

Пользователь работает себе, генерит какие-то данные и периодически небольшими кусками подгружает их в сервер. Это может продолжаться весь рабочий день, сессия прерываться не будет. Потом нажимает "Готово" и ТОЛЬКО В ЭТОТ момент ТС хочет записать накопившиеся данные в БД. Подход странный, о чем и и сказал в самом начале.
...
Рейтинг: 0 / 0
03.03.2019, 15:55
    #39781536
panthe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
если вы внимательно прочитаете название темы то там написано WEB API то есть данные заносятся не пользователем а программой. Она посылает запрос на авторизацию в системе и затем POST запросы с записями в формате JSON. Контроллер при обработке запроса каждый раз обращается к базе используя entity framework - теперь представьте что таких запросов в автоматическом режиме будет послано 500 тысяч.
...
Рейтинг: 0 / 0
03.03.2019, 15:58
    #39781539
panthe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
Сценарий работы следующий - сторонняя кампания собирает данные и где то раз в неделю делится ими с нашей системой, чтобы не посылать данные в файле по почте или еще как было создано web api для доступа к бд. Однако я подозреваю, что на больших объемах данных обычный CRUD подход для WEB API работать будет очень долго.
...
Рейтинг: 0 / 0
03.03.2019, 16:06
    #39781543
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheесли вы внимательно прочитаете название темы то там написано WEB API то есть данные заносятся не пользователем а программойЕсли вы внимательно изучите, что такое WEB API, то узнаете, что клиент для WEB API необязательно является роботом, пользователь точно так же может работать через соответствующего клиента. Но в данном случае разницы нет.


pantheКонтроллер при обработке запроса каждый раз обращается к базе используя entity framework - теперь представьте что таких запросов в автоматическом режиме будет послано 500 тысяч.Во-первых, вы так и не раскрыли секрет, 500 тыс за один запрос, за одну секунду, за одну сессию, за квартал?
Во-вторых, а в чем, собственно, проблема? Обмен с сервером БД, как правило, гораздо быстрее обмена по сети с пользователем.
...
Рейтинг: 0 / 0
03.03.2019, 16:07
    #39781544
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheобычный CRUD подход для WEB API работать будет очень долго.да
Используют:
1) пакетный режим (от драйвера зависит)
2) пересылают файлы в zip на сервер физический, а потом вставляют. Ведь БД может быть и не на самом веб сервере-хосте.
...
Рейтинг: 0 / 0
03.03.2019, 16:20
    #39781547
panthe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
одна запись в одном запросе. мне кажется так будет надежнее. под сессией я имею ввиду - авторизация - пересыл данных через пост запросы в цикле - и далее запрос на завершение.
...
Рейтинг: 0 / 0
03.03.2019, 16:26
    #39781548
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheодна запись в одном запросе. мне кажется так будет надежнее
тогда коммит нужен))). Или что за надёжность?
pantheпод сессией я имею ввиду - авторизация
она каким боком к REST API?
А если клиент авторизовался и 2 лимона послал?
...
Рейтинг: 0 / 0
03.03.2019, 16:30
    #39781550
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheи где то раз в неделю делится ими с нашей системой
Т.е. системы ещё нет и вы можете договорится что есть варианты:
а) они шлют данные по мере готовности а не ждут накопления в лимон
б) они накапливают и шлют в виде файла zip 500 мегабайт.
Так?
...
Рейтинг: 0 / 0
03.03.2019, 16:32
    #39781551
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
panthe,
вам придётся вставить ограничения в договор с ними на объём пересылаемых записей.
Иначе ваша система встанет.
Удачи!
...
Рейтинг: 0 / 0
03.03.2019, 17:08
    #39781560
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheодна запись в одном запросе. мне кажется так будет надежнее. под сессией я имею ввиду - авторизация - пересыл данных через пост запросы в цикле - и далее запрос на завершение.Ну то есть реально будет 500 тыс запросов. Тоже неоптимально, но допустим. И что мешает писать их в БД сразу, а не копить в памяти?
...
Рейтинг: 0 / 0
03.03.2019, 17:14
    #39781563
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheесли вы внимательно прочитаете название темы то там написано WEB API то есть данные заносятся не пользователем а программой. Она посылает запрос на авторизацию в системе и затем POST запросы с записями в формате JSON. Контроллер при обработке запроса каждый раз обращается к базе используя entity framework - теперь представьте что таких запросов в автоматическом режиме будет послано 500 тысяч.
Не будет их послано 500 тысяч в автоматическом режиме. С чего Вы это взяли? Сами себе придумали?
А если и будут, то у они у вас встанут в очередь ещё до того, как дело дойдёт до вашего кода.

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

Хотя как показывает опыт, те, кто представляет себе сотни тысяч запросов неизвестно откуда, на деле имеет не больше десятка запросов в секунду.
...
Рейтинг: 0 / 0
03.03.2019, 17:18
    #39781567
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
Shocker.Propantheодна запись в одном запросе. мне кажется так будет надежнее. под сессией я имею ввиду - авторизация - пересыл данных через пост запросы в цикле - и далее запрос на завершение.Ну то есть реально будет 500 тыс запросов. Тоже неоптимально, но допустим. И что мешает писать их в БД сразу, а не копить в памяти?
500 тысяч POST запросов к Web API приложению, что крутится на винде в IIS?
Если такое случится, то не хватит рабочих потоков, request queue вырастет до 5000 и приложение ляжет.

До записи в БД просто не дойдёт :)
...
Рейтинг: 0 / 0
03.03.2019, 17:21
    #39781568
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
Дмитрий Мух500 тысяч POST запросов к Web API приложению, что крутится на винде в IIS?
Если такое случится, то не хватит рабочих потоков, request queue вырастет до 5000 и приложение ляжет.

До записи в БД просто не дойдёт :)ну это же не DDoS, а просто DoS

Источник их тоже ведь сгенерит не одновременно. Все пролезет, просто будет 95% накладных расходов )
...
Рейтинг: 0 / 0
03.03.2019, 17:26
    #39781569
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheСценарий работы следующий - сторонняя кампания собирает данные и где то раз в неделю делится ими с нашей системой, чтобы не посылать данные в файле по почте или еще как было создано web api для доступа к бд. Однако я подозреваю, что на больших объемах данных обычный CRUD подход для WEB API работать будет очень долго.
Раз в неделю передать 500 000 записей? При нормальном канале нет, не будет долго.

Вас какое время устроит?
...
Рейтинг: 0 / 0
03.03.2019, 17:28
    #39781573
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheпо web api будут загружаться большие объемы данных около 500тыс записей за сессию

на машине будет перевозиться большие объёмы картошки


pantheДумаю сделать так - в контроллере сохранять запись в ArrayList а потом при посылке запроса на disconnet сохранять записи

думаю оторвать задние сидения, чтобы залезло больше картошки, а на крышу приделал ванну


pantheТут встал такой вопрос - что делать если запрос на disconnect так и не пришел по каким либо причинам

встал вопрос, что если сяду на брюхо где-нить


...

задача ппц.
...
Рейтинг: 0 / 0
03.03.2019, 17:29
    #39781574
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Web api загрузка большого куска данных в ms sql
pantheКак можно решить эту проблему?

нет. нельзя решить ЭТУ (т.е. хз какую) проблему.

озвучьте конечную задачу, чё делаете. и зачем?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Web api загрузка большого куска данных в ms sql / 25 сообщений из 34, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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