Показать сообщение отдельно
Старый 27.09.2015, 14:53   #9  
AP-1055D is offline
AP-1055D
Участник
 
351 / 92 (4) ++++
Регистрация: 01.06.2011
Цитата:
Сообщение от mazzy Посмотреть сообщение
А вообще говоря, весь интернет именно на этом и живет - без paiging ни один боль-мень серьезный форум, ни один фейсбук-вконтакт не выживет.
Я думаю, что вы немного неправильно употребляете термин пагинация (paging). Пагинация это механизм, с помощью которого можно "отдавать" данные определёнными порциями. В терминах MVC (Model-View-Controller) это C (Controller). По ссылке, которую вы привели, речь идёт как раз о том, как можно отдавать клиенту небольшое количество записей. Здесь ключевое слово "отдавать", а не получать. То есть чтобы по HTTP-запросу клиенту ушло не все 1000 записей, которые он должен будет потом как-то отображать, а только какую-то порцию, часть этих данных, например 20 записей. При этом, сам запрос не оптимизируется настолько сильно, что он будет обрабатывать меньшее количество записей. Конечно, для простых запросов оптимизатор СУБД сможет построить план с помощью которого будут выбраны те самые 20 записей или несколько больше. Но для более сложных запросов операции TOP или условие по ROW_NUMBER будут выполняться уже в качестве фильтра, то есть отсекать лишние записи. Именно поэтому вы видите большее количество по счётчикам в SQL Server: сервер выбирает множество записей, но клиенту возвращается только часть этих данных.

Facebook, VK и другие используют витрины данных, в которых находятся актуальные данные, например, за последнюю неделю или день. Также они использую горячий кэш и другое.

Кстати, витрины данных очень часто используются в DWH: когда в хранилище есть данные за 20 лет, а, фактически, для оперативного анализа нужны данные только за последнюю неделю. В качестве решения делают витрину данных, куда с помощью ETL/ELT собирают нужные актуальные часто используемые данные. Даже in-memory системы у которых время выполнения "запроса" на порядки меньше чем у ROLAP, также используют витрины. Иначе не хватит никакой памяти :-) Также можно подумать о партицировании таблицы: то есть физически разбивать таблицу на несколько более мелких таблиц. Этот метод очень активно используется в SSAS на более-менее крупных данных.

В AX хорошим примеров витрины данных является InventSum.
За это сообщение автора поблагодарили: mazzy (2), Weez (1).