|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
по 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 14:04 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
Зачем такие извращения? Писать в БД с признаком "временный". Не было фиксации, при новой авторизации пользователя грохать эти записи (или во время ночного обслуживания базы). А вообще, не очень понятно, чего нужно добиться, если "запрос на disconnect так и не пришел по каким либо причинам"? Сбросить все данные или сохранить все данные? Если второе, то зачем вообще заморачиваться с какой-то буферизацией - писать в БД сразу, да и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 14:18 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
Shocker.Pro,если писать в базу 500 000 + записей за раз, это сколько времени займет? я из этих соображений. Чтобы быстро все данные принять в коллекцию и потом оттуда уже в новом потоке загрузить в базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 14:29 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheпо web api будут загружаться большие объемы данных около 500тыс записей за сессию.юз-кейс какой? - юзверь зашёл на сайт - нажал кнопу Загрузить - дальше? Откуда он миллион взял? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 14:36 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
panthe500 000 + записей за разя читаю то, что написано: pantheоколо 500тыс записей за сессию так за запрос или за сессию все-таки, определись ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 14:41 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheесли писать в базу 500 000 + записей за раз, это сколько времени займет? В MS SQL? Не зная что за данные, предположу, что секунд 15-20 :) Но можно и быстрее. Но откуда вы взяли 500 000+ в секунду, что за данные такие? При этом ещё не датчики какие-нибудь с устройств, не метрики, а пользователь с правами. Вообщем задача не понятна. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 15:00 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
Дмитрий МухНо откуда вы взяли 500 000+ в секунду,а откуда ты взял, что в секунду? ТС путается в показаниях, но про секунду он не говорил ) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 15:07 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
Shocker.ProДмитрий МухНо откуда вы взяли 500 000+ в секунду,а откуда ты взял, что в секунду? ТС путается в показаниях, но про секунду он не говорил ) Из вопроса: "если писать в базу 500 000 + записей за раз, это сколько времени займет?" То есть в определённый момент времени прилетает 500 000 + записей и их надо вставить в БД. И человека интересует то, сколько это займёт времени. Я просто привык к операциям в секунду, а не к операциям за раз, за сессию, за ещё какую-то не общепринятую терминологию. И хотел бы, чтобы автор написал сколько именно в секунду записей ожидается. Тогда будет понятно, в том числе и тебе. Согласен? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 15:13 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
К примеру что значит "за сессию"? Пришёл пользователь на работу, вошёл в систему и до обеда фигачил? То есть 500 000 записей где-то за 4 часа? 35 записей в секунду? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 15:17 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
Дмитрий МухИз вопроса: "если писать в базу 500 000 + записей за раз, это сколько времени займет?" То есть в определённый момент времени прилетает 500 000 + записей и их надо вставить в БД. И человека интересует то, сколько это займёт времени. Я просто привык к операциям в секунду, а не к операциям за раз, за сессию, за ещё какую-то не общепринятую терминологию. И хотел бы, чтобы автор написал сколько именно в секунду записей ожидается. Тогда будет понятно, в том числе и тебе. Согласен?Ну погадаем на хрустальном шаре. Пользователь работает себе, генерит какие-то данные и периодически небольшими кусками подгружает их в сервер. Это может продолжаться весь рабочий день, сессия прерываться не будет. Потом нажимает "Готово" и ТОЛЬКО В ЭТОТ момент ТС хочет записать накопившиеся данные в БД. Подход странный, о чем и и сказал в самом начале. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 15:21 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
если вы внимательно прочитаете название темы то там написано WEB API то есть данные заносятся не пользователем а программой. Она посылает запрос на авторизацию в системе и затем POST запросы с записями в формате JSON. Контроллер при обработке запроса каждый раз обращается к базе используя entity framework - теперь представьте что таких запросов в автоматическом режиме будет послано 500 тысяч. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 15:55 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
Сценарий работы следующий - сторонняя кампания собирает данные и где то раз в неделю делится ими с нашей системой, чтобы не посылать данные в файле по почте или еще как было создано web api для доступа к бд. Однако я подозреваю, что на больших объемах данных обычный CRUD подход для WEB API работать будет очень долго. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 15:58 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheесли вы внимательно прочитаете название темы то там написано WEB API то есть данные заносятся не пользователем а программойЕсли вы внимательно изучите, что такое WEB API, то узнаете, что клиент для WEB API необязательно является роботом, пользователь точно так же может работать через соответствующего клиента. Но в данном случае разницы нет. pantheКонтроллер при обработке запроса каждый раз обращается к базе используя entity framework - теперь представьте что таких запросов в автоматическом режиме будет послано 500 тысяч.Во-первых, вы так и не раскрыли секрет, 500 тыс за один запрос, за одну секунду, за одну сессию, за квартал? Во-вторых, а в чем, собственно, проблема? Обмен с сервером БД, как правило, гораздо быстрее обмена по сети с пользователем. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 16:06 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheобычный CRUD подход для WEB API работать будет очень долго.да Используют: 1) пакетный режим (от драйвера зависит) 2) пересылают файлы в zip на сервер физический, а потом вставляют. Ведь БД может быть и не на самом веб сервере-хосте. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 16:07 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
одна запись в одном запросе. мне кажется так будет надежнее. под сессией я имею ввиду - авторизация - пересыл данных через пост запросы в цикле - и далее запрос на завершение. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 16:20 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheодна запись в одном запросе. мне кажется так будет надежнее тогда коммит нужен))). Или что за надёжность? pantheпод сессией я имею ввиду - авторизация она каким боком к REST API? А если клиент авторизовался и 2 лимона послал? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 16:26 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheи где то раз в неделю делится ими с нашей системой Т.е. системы ещё нет и вы можете договорится что есть варианты: а) они шлют данные по мере готовности а не ждут накопления в лимон б) они накапливают и шлют в виде файла zip 500 мегабайт. Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 16:30 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
panthe, вам придётся вставить ограничения в договор с ними на объём пересылаемых записей. Иначе ваша система встанет. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 16:32 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheодна запись в одном запросе. мне кажется так будет надежнее. под сессией я имею ввиду - авторизация - пересыл данных через пост запросы в цикле - и далее запрос на завершение.Ну то есть реально будет 500 тыс запросов. Тоже неоптимально, но допустим. И что мешает писать их в БД сразу, а не копить в памяти? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 17:08 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheесли вы внимательно прочитаете название темы то там написано WEB API то есть данные заносятся не пользователем а программой. Она посылает запрос на авторизацию в системе и затем POST запросы с записями в формате JSON. Контроллер при обработке запроса каждый раз обращается к базе используя entity framework - теперь представьте что таких запросов в автоматическом режиме будет послано 500 тысяч. Не будет их послано 500 тысяч в автоматическом режиме. С чего Вы это взяли? Сами себе придумали? А если и будут, то у они у вас встанут в очередь ещё до того, как дело дойдёт до вашего кода. Советую вам провести простое нагрузочное тестирование и убедиться, что это произойдёт даже если вы ничего в базу писать не будете. И на нагрузке гораздо меньше, чем вы себе нафантазировали. Хотя как показывает опыт, те, кто представляет себе сотни тысяч запросов неизвестно откуда, на деле имеет не больше десятка запросов в секунду. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 17:14 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
Shocker.Propantheодна запись в одном запросе. мне кажется так будет надежнее. под сессией я имею ввиду - авторизация - пересыл данных через пост запросы в цикле - и далее запрос на завершение.Ну то есть реально будет 500 тыс запросов. Тоже неоптимально, но допустим. И что мешает писать их в БД сразу, а не копить в памяти? 500 тысяч POST запросов к Web API приложению, что крутится на винде в IIS? Если такое случится, то не хватит рабочих потоков, request queue вырастет до 5000 и приложение ляжет. До записи в БД просто не дойдёт :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 17:18 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
Дмитрий Мух500 тысяч POST запросов к Web API приложению, что крутится на винде в IIS? Если такое случится, то не хватит рабочих потоков, request queue вырастет до 5000 и приложение ляжет. До записи в БД просто не дойдёт :)ну это же не DDoS, а просто DoS Источник их тоже ведь сгенерит не одновременно. Все пролезет, просто будет 95% накладных расходов ) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 17:21 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheСценарий работы следующий - сторонняя кампания собирает данные и где то раз в неделю делится ими с нашей системой, чтобы не посылать данные в файле по почте или еще как было создано web api для доступа к бд. Однако я подозреваю, что на больших объемах данных обычный CRUD подход для WEB API работать будет очень долго. Раз в неделю передать 500 000 записей? При нормальном канале нет, не будет долго. Вас какое время устроит? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 17:26 |
|
Web api загрузка большого куска данных в ms sql
|
|||
---|---|---|---|
#18+
pantheпо web api будут загружаться большие объемы данных около 500тыс записей за сессию на машине будет перевозиться большие объёмы картошки pantheДумаю сделать так - в контроллере сохранять запись в ArrayList а потом при посылке запроса на disconnet сохранять записи думаю оторвать задние сидения, чтобы залезло больше картошки, а на крышу приделал ванну pantheТут встал такой вопрос - что делать если запрос на disconnect так и не пришел по каким либо причинам встал вопрос, что если сяду на брюхо где-нить ... задача ппц. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2019, 17:28 |
|
|
start [/forum/topic.php?fid=18&msg=39781539&tid=1355033]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
125ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 242ms |
0 / 0 |