Возможно стоит поднять минимально MYSQL до 8.0?

Evg Evg 4 Апреля 2022

MYSQL 8.0 стал поддерживать рекурсивный запрос с использованием CTE (Common Table Expressions). Это хорошая новость. Дело в том, что в проекте LibArea мы используем фасеты для построение всей навигации. И в виду того, что много работы с деревьями, легче по умолчанию поднять используемую версию MYSQL до 8.*

Переделав под 8+ кода будем меньше, будет быстрее и мы не будем огладываться назад, чтобы поддерживать то, то уже фактически устарело. Это позволит сыкономить достаточное количество времени.


public static function breadcrumb($facet_id)
{ 
    $sql = "with recursive
        n (facet_id, facet_slug, facet_title, lvl) as (
            select facet_id, facet_slug, facet_title, 1 from facets where facet_id = :id

     union all
        select c.facet_id, c.facet_slug, c.facet_title, n.lvl + 1
            from n
                join facets_relation r on r.facet_chaid_id = n.facet_id
                join facets c on c.facet_id = r.facet_parent_id
    )
    select facet_slug link, facet_title name from n where lvl <= 5";

   return DB::run($sql, ['id' => $facet_id])->fetchAll();
}

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

Хлебные крошки в каталоге

А использование множественное назначение маршрутов, позволит сделать и путь URL вложенный:

Route::get('/example/...0-5/', 'От 0 до 5 произвольных частей.');
// или так
Route::get('/example/...1-3,7,9,11-20/', 'Количество частей в установленном диапазоне.');

См.: https://phphleb.ru/ru/v1/routes/

P.S. если мы смотрим вперед больше, то ИМХО, тут и думать не надо, выйгрышь далее будет очевиден. И с каждым днем он будет становиться все больше и больше. Но надо написать, что думаете по этому поводу? У вас 8+?

Доп.: на GitHub новая версия переведена…

5 Ответов

  1. Adre Adre 4 Апреля 2022 (ред.)

    Сегодня в большинстве случаях на серверах уже стоит MYSQL 8.+ Специально посмотрел у себя.

  1. German German 4 Апреля 2022 (ред.)

    На серверах стараюсь использовать новое ПО. Поддерживаю.

  1. Yori Yori 4 Апреля 2022 (ред.)

    Поддерживаю. У меня нет проблем с этим.

  1. OleStep OleStep 4 Апреля 2022

    Всё самое интересное проcпутил, завал на работе. Однозначно можно поднимать версию!

  1. Evg Evg 7 Апреля 2022

    Так. Ладно. С этим вроде все. Завтра архивируем и идем дальше. Только вот жаловался другу, глянул в js, меньше минуты… Там вообще все надо переписать, как и в других местах. Кода будет еще меньше, чище и быстрей. Поддерживать проще. А то куски одни, без структуры и всего. И не только в js.

    Но это наверное обычный процесс. Это писал Jeff Atwood в 2009 (ист.)

    Несмотря на хорошо аргументированные протесты Бенджамина, исходный код для Stack Overflow на самом деле является чем-то вроде … ну… Хотя его становится довольно много, так как мы работаем над этим уже почти год. Это ни в коем случае не означает, что наш исходный код хорош; как обычно, мы создаем дерьмовое программное обеспечение с ошибками. Но каждый день наша крошечная команда, начинает с одной и той же цели. Не для того, чтобы написать наилучший возможный код, а для создания наилучшего возможного опыта. Это наша миссия: сделать Stack Overflow лучше, в какой-то степени, чем это было накануне. Нам не всегда это удается, но мы очень, очень стараемся — и, что более важно, мы продолжаем работать над этим изо дня в день.

    ~

    P.S. В движке пока нет ничего для коллективной работы. Это надо делать.