На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! В разделе обсуждаются следующие темы:
1) Процесс разработки программного обеспечения.
2) Определение требований к программному обеспечению.
3) Составные части и процесс проектирования (см. Шаблоны проектирования).
4) Документирование программного продукта(проекта).
5) Руководство разработкой программного обеспечения.
6) Проектирование пользовательского интерфейса.
7) Контроль версий проекта (см. Управление версиями в Subversion, Стратегии использования svn).
Модераторы: ElcnU
  
> Оптимизация веб-приложения под большие нагрузки
    Вот возник вопрос. Есть веб-приложение, с БД. В БД 100 000 записей. В приложении есть форма поиска по этим записям - фильтр по 10 полям, в каждом из полей либо "Все", либо конкретное значение. Вывод результата постраничный.

    Вот придёт на сайт 100 человек и одновременно нажмут поиск - проект ляжет. Что делать? Ведь поиск по 100 000 записям имхо не очень легкая задача, и закешировать тут не очень понятно что. Но ведь люди то как-то справляются :)
    Может задача на самом деле легкая и грамотный запрос сможет выполниться 100 раз за секунду? Или для всех, кроме меня, очевидно что тут можно закешировать?

    :ph34r:
      Это несложная задача на самом деле. Многое еще зависит от движка БД.

      Как вариант: сделать 1 текстовое поле и туда через пробел заносить все атрибуты (которых 10 штук). А потом полнотекстовый индекс по этому полю + поиск.

      Кроме того, 100000 записей должны довольно нелсожно помещаться в ОЗУ.
        Цитата deil @
        Может задача на самом деле легкая и грамотный запрос сможет выполниться 100 раз за секунду?
        Sphinx без проблем обработает столько ;)
        Цитата Soul :) @
        Это несложная задача на самом деле. Многое еще зависит от движка БД.
        :yes: 100К записей - это не так уж и много. Возможно даже мускуль выдержит
          Ты такой вариант с текстовым полем уже проворачивал? Со стороны звучит страшновато
            Читал в книжке по оптимизации производительности для MySQL от ряда авторов, один из которых - Петр Зайцев - CEO Percona, и бывший разработчик MySQL как раз по производительности. Думаю, он знает толк в извращениях ;).

            ЗЫ Писали они это в применении к Sphinx, в остальном - в точности твой случай. Только критериев побольше и база пообьемнее.

            Добавлено
            А вообще - перенесите эту тему в раздел по соответствующей БД.
              Цитата Soul :) @
              ЗЫ Писали они это в применении к Sphinx, в остальном - в точности твой случай.
              кхм. а Sphinx тут каким боком?
                Таким, что в оригинале, поле с аттрибутами предлагалось индексировать сфинском. Это не говоря уже о том, что в нем есть целочисленные теги, которые тоже могут быть проиндексированы, но отдельно, если ничего не путаю.
                  Ясно... примерно...
                  Цитата Soul :) @
                  Это не говоря уже о том, что в нем есть целочисленные теги, которые тоже могут быть проиндексированы, но отдельно, если ничего не путаю.
                  Ну как бы да, им можно проиндексировать мускульные поля и необязательно целочисленные... И потом выборки делать, даже не очень простые...
                    Если не ясна идея, могу написать подробнее, только уже после НГ, наверное.
                      Кстати, дейл зрит в корень, т.к. заюзать поиск - это очень популярный способ DDOS атак :yes:
                      100 000 записей - это мало, возможно и специально оптимизировать ничего не нужно, и пользоваться тем, что из коробки.
                      На больших объёмах задачу просто параллелят на несколько - она параллелится идеально.
                        Цитата Soul :) @
                        Добавлено
                        А вообще - перенесите эту тему в раздел по соответствующей БД.

                        Нене. Тут нет конкретной БД и не только о ней разговор.

                        Добавлено
                        Цитата Бобёр @
                        Кстати, дейл зрит в корень, т.к. заюзать поиск - это очень популярный способ DDOS атак :yes:
                        100 000 записей - это мало, возможно и специально оптимизировать ничего не нужно, и пользоваться тем, что из коробки.
                        На больших объёмах задачу просто параллелят на несколько - она параллелится идеально.

                        Дык! Проблема то из жизни :)

                        Как эта задача параллелится? Мне срочно нужна доза новой информации.
                          Цитата deil @
                          Мне срочно нужна доза новой информации.
                          Тебя практическое применение интересует или теоритически - как индекс строится, выборка делается, мержится и тп?
                            Интересует теория для начала
                              Ну смотри, задача поиска строки по критерию в строках от 0-ой до 100 000-ой разбивается на две - поиск от 0 до 4999, и поиск от 50000 до 10000. Ну а дальше становится понятно - строки от 0-ой до 49999-ой выносятся на 1 сторадж, от 50 000 до 100000 - на другой. Поищи по ключевому слову "шардинг".
                                Аааа, в этом смысле..
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0314 ]   [ 15 queries used ]   [ Generated: 16.04.24, 16:57 GMT ]