За последние 24 часа нас посетили 47577 программистов и 1806 роботов. Сейчас ищут 1050 программистов ...

Практика использование ООП

Тема в разделе "PHP для новичков", создана пользователем Dimon2x, 26 ноя 2017.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @mkramer я кстати не так давно наткнулся на это определение DataMapper, но чёт пока руки не дошли почитать. У Зандстры вроде же написан ? Надо бы почитать
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Кстати, не думаю, что разница в скорости будет в разы. Запросы такие же ORM формирует. За исключением некоторых случаев группирующих запросов, которые лично я никогда через ORM и не делаю.
     
  3. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Ну это если неправильно их использовать, или БД спроектирована не правильно. Так что наоборот именно в большинстве случаев один получается быстрее. Тем более СУБД тоже "кеширует", и повторяющийся запрос работает еще быстрее.
    Да и вообще хороший профит дает перенос части логики (естественно которая относится к данным) на СУБД. Я на мускуле не пробовал пока, а вот на Interbase/Firebird триггеры, хранимые процедуры и вьюхи помогали хорошо ускорить приложение. Единственное но, там бы не веб. Был сервак отдельный СУБД, а вся основная кухня это уже ПО на персональных компах.
     
  4. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @voral так к сведению в вк избавились от join потому что тупит
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Откуда инфа? И что, нагрузка твоих проектов сравнима прямо с ВК? А как ты делаешь условие по связанной таблице без join? Или по нескольким
     
  6. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @mkramer а как тебе сочетание WHERE IN
    --- Добавлено ---
    у товарища прогера друг там разраб
    --- Добавлено ---
    ну такого я не говорил.
    --- Добавлено ---
    @mkramer но есть такой проект на него приходится около 300-400 в человек одновременно конечно не супер хай. Но всё же там мы почти пришли к тому что избавиться полностью от join и индексы проставили
    --- Добавлено ---
    @mkramer вот придумай сочетание где я не смогу обойти это выборкой из одной таблицы а потом по всем полученным результатам составлю WHERE IN (); и отправлю второй запрос на получение этих данных. С учётом индексов по полям два запроса пролетят моментально.
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  8. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    @askanim, смотря что джоинить. Если речь о справочниках, то профит возможен... А просто слепо смотреть на "вк" это не серьезно. Мы ж достоверно не знаем их архитектуру, предполагать можем это да.... Не думаете же вы, что за столько времени существования SQL только вк додумались, что join это плохо?
    Join это обычный инструмент, и важно уметь грамотно им пользоваться. Вот в той системе что я сопровождал, я с ужасом представляю, что бы пришлось делать откажись от join.

    В случаях где join уместен, вам все равно это придется делать, но на том же PHP. Но СУБД заточена на это, и работает с этим не один десяток лет, думаете PHP скрипт отработает быстрее чем оптимизированное ядро.

    [OFFTOP]
    В свое время в институте товарищ писал программу для одного научного рассчета. Вычисления шли 2 или 3 дня. Я тогда ассемблером увлекся и переписал для него математику на asm. Для вычислений хватило 5 часов. Потом был у меня проект реалтаймовый - попробовал узкое место переписать на asm.... Фиг. компилятор все равно более быстрый код (из C++) рожал.... Попробуйте переделать любую функцию PHP на свой аналог из более простых - будет работать медленнее.
    [/OFFTOP]
    Я этот офтоп к чему: Надо все же доверять инструментам заточенным под свое назначение. ВК скорее всего не от хорошей жизни отказалось от JOIN и не в полной мере. У них вообще, мне кажется, несколько другая СУБД (а то и не одна)
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Сортировка по столбцу связанной таблицы, кстати - как без join-а?
     
  10. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    у них своя СУБД
     
  11. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Да? Вы уверены, что ни когда и не за что не превысите длину запроса? А если отбирать надо по колонкам из обеих таблиц? (а из трех....?)
     
  12. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    логика такая выбираем всех пользователей потом идём к связаной таблице и делаем WHERE IN и сортируем
     
  13. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Вот. А зачем же тогда их опыт распространять на мускул?
     
  14. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @voralа из трёх это точно жёпашный запрос
    --- Добавлено ---
    @voral да это так мускуль вообще не айс. Надо тестить но у меня задач на Join редко приходится где я могу написать два простых запроса за место одного тяжёлого пишу два.
     
  15. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Круто... Т.е. нам надо получить первых десять человек. Мы выбираем всех... Для всех делаем второй запрос, сортируем, и уже показываем только 10.... Замечу - это мы только две таблицы взяли
     
  16. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    На стороне php что-ли сортируем? А лимиты, оффсеты?
     
  17. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    вот такие вот дела мне не нравятся join они при огрымных кол-вах данных не реально тупят.
     
  18. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    С чего это? Просто у вас не встречалось таких задач. Это нормальный запрос. Или вы предлагаете нарушать принципы построения БД?
     
  19. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    дай лучше свой пример и я попробую сделать не получится если знач буду иметь ввиду когда надо юзать Join
    --- Добавлено ---
    лучше пусть у меня два запроса каждый из которых по 100 мс пройдут чем один в 200 мс. вот честно.
     
  20. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Только если вы не умеете работать с ними, с индексами и панами запросов.
     
  21. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @voral с индексами и простые запросы летают при чём тут это.
     
  22. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Не будет он так идти если правильно построить..
     
  23. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    7 000 000 была у меня как то база были индексы. Ток вот не хрена запрос хоть убей 300 мс шёл
    --- Добавлено ---
    сделал на два в два раза быстрее пошло
     
  24. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    Просто я придумываю, как можно так плохо построить запрос с джоином, чтоббыо выгоднее сделать два запроса и потом их клеить и дообрабатывать в приложении.
     
  25. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    а как можно его плохо построить там просто связь по двум полям была. Просто тяжёлая таблица и всё