Size: a a a

Обсуждения техдирские

2019 November 07

NK

ID:0 in Обсуждения техдирские
Результаты опроса про хранение деревьев в реляционных бд:
55 голосов - за 😎 parent id
28 голосов - за 🤩 nested sets

А если голосовать количеством необходимых sql-запросов для выборки из дерева на 10к элементов одной из подветок, то какой вариант выиграет? В штуках запросов и микросекундах если измерять, у кого будет меньше?
источник

KY

Kirill Yegorov in Обсуждения техдирские
А если голосовать количеством, необходимым для перемещения, вставки или удаления подветок )
источник

KY

Kirill Yegorov in Обсуждения техдирские
10 тыс не так много, даже на PHP все дерево обработаетя за десятые доли секунды.
источник

ВМ

Владислав Мороз in Обсуждения техдирские
Dmitry Simonov
Ведёт пока parent_id. Я однажды видел, как в такое дерево запихнули всю иерархию производства автомобилей. И выборки из серии "Производитель такой-то, год такой-то, модификация автомобиля такая-то" были очень интересными с точки зрения обращения к бд :)
Вообще не очень понятно, зачем там деревья городить. Модельный ряд однозначно определяется кодом торгового обозначения aka SalesType. В этот код зашиты модельный год, код двигателя и код кузова. Все известные мне автопроизводители (VAG, PSA, JLR, FMC, GM, MMC, HMG) вписываются в эту модель и у всех реляционные бд, а иерархия номенклатуры максимум двухуровневая.
источник

KY

Kirill Yegorov in Обсуждения техдирские
Владислав Мороз
Вообще не очень понятно, зачем там деревья городить. Модельный ряд однозначно определяется кодом торгового обозначения aka SalesType. В этот код зашиты модельный год, код двигателя и код кузова. Все известные мне автопроизводители (VAG, PSA, JLR, FMC, GM, MMC, HMG) вписываются в эту модель и у всех реляционные бд, а иерархия номенклатуры максимум двухуровневая.
Если глянуть тот же tecdoc там структура без деревьев. Ну и данные исчисляются в млн. Есть деревья узлов но они мелкие. И выбираются по признаку модификации авто.
источник

KY

Kirill Yegorov in Обсуждения техдирские
Вообще в авто теме основная беда в том, что дерево узлов и агрегатов для каждой модификации своё. Это усложняет фильтрацию по товарным группам.
А модификации вполне себе простая структура.
источник

SS

Stass S in Обсуждения техдирские
ID:
Результаты опроса про хранение деревьев в реляционных бд:
55 голосов - за 😎 parent id
28 голосов - за 🤩 nested sets

А если голосовать количеством необходимых sql-запросов для выборки из дерева на 10к элементов одной из подветок, то какой вариант выиграет? В штуках запросов и микросекундах если измерять, у кого будет меньше?
в детстве делал такую стурктуру - для parent_id еще таблицу (parent_id,child_id,level )
соответсвенно вытаскивать все подноды очень эффективно, за счет того что обновлять это всё - сложнее
источник

PD

Phil Delgyado in Обсуждения техдирские
Kirill Yegorov
А если голосовать количеством, необходимым для перемещения, вставки или удаления подветок )
Одним select * при старте сервера и нефиг насиловать СУБД всякими глупостями.
А уже методов хранения деревьев в памяти - дофига, можно выбрать любой подходящий.
Кстати, если 10k объектов, то можно все дерево упихать в JSON/CBOR/etc и грузить за 10ms целиком.
источник

PD

Phil Delgyado in Обсуждения техдирские
Владислав Мороз
Вообще не очень понятно, зачем там деревья городить. Модельный ряд однозначно определяется кодом торгового обозначения aka SalesType. В этот код зашиты модельный год, код двигателя и код кузова. Все известные мне автопроизводители (VAG, PSA, JLR, FMC, GM, MMC, HMG) вписываются в эту модель и у всех реляционные бд, а иерархия номенклатуры максимум двухуровневая.
Там интересны не деревья узлов, а кто в каком агрегате в какой модификации есть и, что интереснее, чем может быть заменен из чужих запчастей (и с какой точностью).
источник

IM

Ivan Mashintsev in Обсуждения техдирские
похоже на графовую базу
источник

IM

Ivan Mashintsev in Обсуждения техдирские
или какую-то онтологию
источник

PD

Phil Delgyado in Обсуждения техдирские
Да тут вообще не нужна база, данных мало, в память влезает.
Вопрос про скорость сложных запросов inmem - но это скорее про графовые библиотеки.
источник

PD

Phil Delgyado in Обсуждения техдирские
Онтология - была бы полезна, но пока там вроде бы нет решений про производительность.
источник

IM

Ivan Mashintsev in Обсуждения техдирские
еще зависит какая часто это все меняется
источник

PD

Phil Delgyado in Обсуждения техдирские
Там еще бывают запросы вида "вот такая-то хрень - а в каких модельных рядах она встречается". И что нужно дозаказать на склад, чтобы закрыть все по таким-то категориям машин с учетом возможных замен запчастями от китайских поставщиков )
источник

PD

Phil Delgyado in Обсуждения техдирские
Ivan Mashintsev
еще зависит какая часто это все меняется
Ну, сами запчасти - даже не раз в день, насколько я помню.
Цены и наличие меняются чаще - но их можно отдельно хранить.
источник

PD

Phil Delgyado in Обсуждения техдирские
Но в реальности (лет пять назад - когда меня просили посмотреть на подобные базы) все заствляют пользователя идти от точной модели, тогда выборки проще становятся. И стараются не предлагать замен явным образом, пусть сам знает, что чем можно заменить, типа на форумах тусуется.
источник

IM

Ivan Mashintsev in Обсуждения техдирские
кстати combot платный используется?
источник

KY

Kirill Yegorov in Обсуждения техдирские
Phil Delgyado
Но в реальности (лет пять назад - когда меня просили посмотреть на подобные базы) все заствляют пользователя идти от точной модели, тогда выборки проще становятся. И стараются не предлагать замен явным образом, пусть сам знает, что чем можно заменить, типа на форумах тусуется.
Мы показываем кроссы. Но беда в том что даже сами поставщики присылают их кривые, например элемент на запчасть в сборе
источник

PD

Phil Delgyado in Обсуждения техдирские
Охотно верю. Я помню, как пытались заставить всю эту базу жить на битриксе. И это быдоие реально грустно (
источник