Как загрузить миллионы записей в asp.net mvc 3 или 4 на сторону клиента. (медленный выпуск)

У меня есть проект, загружающий миллионы записей. Я буду использовать asp.net mvc 3 или 4. Я уверен, что моя страница будет загружаться очень медленно из-за большого количества данных, полученных с сервера. Я создавал задание агента SQL Server для выполнения ранних запросов и сохранения его во временной таблице, которая будет использоваться на сайте. Я уверен, что есть много способов получше. Пожалуйста помоги. Я слышал об IndexedDB или WebSQL для клиентской базы данных. Любая помощь / предложение будут оценены.

Мой первый пост / вопрос здесь, в стеке!

Заранее спасибо!


person Taerni    schedule 19.06.2013    source источник
comment
Вам, вероятно, не нужно загружать сразу миллионы записей, не так ли?   -  person Paul Alan Taylor    schedule 19.06.2013
comment
вместо этого используйте пейджинг и выборку из страничной базы данных   -  person qwr    schedule 19.06.2013
comment
Павел, это возможно, потому что пользователь может выбрать диапазон дат. Думаю, за 1 год было бы 700 000 с лишним.   -  person Taerni    schedule 19.06.2013
comment
Вы хотите более быструю на стороне сервера или на стороне клиента?   -  person Smartis    schedule 19.06.2013
comment
клиент. потому что пользователь выберет диапазон дат и некоторые поля. страница не должна занимать много времени, чтобы получить данные, потому что мне нужно рисовать с использованием html5.   -  person Taerni    schedule 19.06.2013


Ответы (4)


Возможно, вы захотите посмотреть на нумерацию страниц. Если поиск возвращает 700 000+ записей, вы можете разделить их на разные страницы (100 на страницу или что-то в этом роде), чтобы страница не загружалась бесконечно.

Отметьте аналогичный вопрос здесь

person whastupduck    schedule 19.06.2013
comment
Я не использую сетку или пейджинг. Это будет обычный объект List, который на стороне клиента будет преобразован в json. Пользователь выберет диапазон дат и несколько полей для выбора. поэтому он будет снова отправлять обратно на сервер для запроса на основе выбранного диапазона дат. Я ищу способ получше, чем отправка туда и обратно на сервер. - person Taerni; 19.06.2013

Я столкнулся с аналогичной проблемой. 500K данных, хранящихся на стороне клиента в IndexedDB. Я использую несколько веб-воркеров для хранения данных на стороне клиента (поддерживается только в Chrome), и я отправляю только идентификаторы и действие, которое используется с данными на стороне сервера.

Я обнаружил, что для достижения большей скорости оптимальная скорость передачи данных достигается при использовании 4-8 веб-воркеров, которые извлекают и хранят от 1 до 2,5 тысяч элементов за один вызов, что составляет около 1 МБ данных.

Вам следует учитывать следующие моменты:

  • ограничение действий, которые разрешены в процессе синхронизации
  • обновления данных на стороне сервера и на стороне клиента - я использую подход постоянного обновления данных на стороне сервера и вызова процедуры синхронизации для синхронизации измененных данных обратно на стороне клиента.
  • что вы собираетесь хранить в памяти - лимит Google Chrome составляет 1,6 ГБ, поэтому будьте осторожны с утечками памяти, в настоящее время я использую не более 300 МБ во время синхронизации - 100-150 МБ в среднем при обычной работе
person Deni Spasovski    schedule 19.06.2013

Вам нужно разбить данные по страницам. Получить определенный диапазон из базы данных. Вам действительно нужны сразу миллионы строк. Я думаю, что прежде всего должен быть фильтр.

person iefpw    schedule 19.06.2013

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

person Jack    schedule 19.06.2013