1. Java / Говнокод #12326

    +68

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    public Dir delete(){
            MorphiaQuery dirs = getDirList(); //Получаем подпапки
            if(dirs != null){ 
                Iterator<Dir> list = dirs.iterator();  
                while(list.hasNext()){
                    list.next().delete(); //Снова вызываем public Dir delete()
                }
            }
            return super.delete(); //Удаляем саму папку
        }

    Написал метод для удаления категорий рекурсивно из базы...
    Представляю какая нагрузка будет на базу если будет 100 папок, а в ней каждой ещё по 100. В итоге 100*100 = 10000 запросов в базу

    Запостил: haker, 21 Декабря 2012

    Комментарии (10) RSS

    • Вот такая вот дырявая абстрация...
      Ответить
      • собираюсь применить материальные пути, для удаления подпапок(подкатегорий) за один запрос =) сейчас просто главное заставить работать махину, а потом сделать это грамотно
        Ответить
        • почти все базы нынче деревья держат. ы? я правда сам еще деревья удалять не пробовал.

          я как-то раз делал через простую аггрегацию: идентификаторы собирал в списки по номеру уровня, потом удалял батчами начиная с самого низкого уровня, что бы констрэйны не жаловались.

          > а потом сделать это грамотно

          по моему опыту, в случае работы с базами и проблем производительности "а потом" очень часто оказывается слишком поздно.

          базы имеют конкретные способности с заранее известными параметрами производительности - их и надо использовать как основу для дизайна. а не наоборот. в оссобености если заранее известно что размер данных будет большим.
          Ответить
        • Ну как, применил?
          Ответить
    • Я в этих ваших джавах не соображаю. Что из себя представляет пресловутая база?
      Ответить
      • d
        Ответить
      • http://www.playframework.org/documentation/1.2.5/model
        Ответить
        • Т.е. это фреймворк с обёртками поверх hibernate?
          Ответить
      • Судя по описанному числу запросов это классика жанра - в каждой записи есть айдишка родителя или null для корневых.
        Ответить

    Добавить комментарий