Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Результаты опроса: Показывать количество страниц?
Будь, что будет, но я хочу знать, сколько страниц есть! 18 81.82%
Нет, только не показывать неправильные данные! 4 18.18%
Голосовавшие: 22. Вы ещё не голосовали в этом опросе

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 15.02.2013, 00:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 1  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию Pagination (Разбивка на страницы)

Тут вот у нас давече вышел спор, хочется услышать мнения бывалых форумчан

Для начала опишу проблему, для тех, кто не в курсе:
Очень часто возникает необходимость показать пользователю часть данных, разбив их на страницы. Проблема, на первый взгляд тривиальная: посчитать сколько есть, и поделить на размер страницы, загрузив первую, и дальше грузить последующие. Проблема становится менее тривиальной в тот момент, когда приходит понимание, что "а черт, это ж два запроса к БД". Но потом как-то успокаиваешся, говоря себе - да ну и что, если сделать count да еще и по индексированому полю - это ж копеечная нагрузка.
Вторая стадия проблемы наступает (или не наступает?) тогда, когда понимаешь, что между тем, чтобы посчитать количество записей и выдать страницу может случится непоправимое - записи будут удалены. Но тут на помощь приходят АСИД транзакции, которые вроде как гарантируют, что такого не произойдет...
Далее, не смотря на то, что мы уже во всеоружии подготовились встретить проблему, мы понимаем, что транзакция не может закончится до того, как пользователь не перестанет разглядывать страницы (а то, опять же - другой пользователь удалил записи, и разбивка на страницы порушилась).

Итак, есть два подхода решения:

1. Сказать "да ну и будь, что будет, посчитаю, а там если удалят - ну так одна ошибка случится", или, другими словами, система может работать иногда некорректно, при условии, что большую часть времени система корректна.
2. Сказать "не, так оно никогда не взлетит: давайте не будем обещать пользователям того, что мы не можем получить в любой ситуации", или, другими словами, система не должна делать вид, что знает сколько еще страниц существует, а только разрешать посмотреть следующую страницу.
__________________
Hell is the possibility of sanity

Создать новую тему   Часовой пояс GMT +4, время: 11:08.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:08.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.