Как быстро присвоить атрибут со значением 100.000 объектам?

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Ответить
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Как быстро присвоить атрибут со значением 100.000 объектам?

Сообщение Александр »

Очень интересный вопрос... :wink:

Т.к. наша база постоянно развивается, а модель данных эпизодически меняется - встает вопрос о групповом изменении/удалении/добавлении атрибутов (или их значений) для накопленных объектов

Сейчас эта задача решается через подборку. НО Вы-же сами представляете:
- отбор 100.000 объектов в подборку ~ 30 мин
- выделение 100.000 объектов в подборке ~1-2 часа
- групповая операция с атрибутами выбранных объектов ~10-20 часов :(
да и то при условии что внешняя среда работает устойчиво и ничего не отрубится после первых 5 часов работы, да и Лоция подогревает интерес тем что запустит свой счетчик процесса который после 700~1500 обработанных объектов - 'зависает' (правда не всегда) и что там происходит дальше - не известно никому (хотя в 98% случаев все обрабатывается до конца)

По идее в SQL это можно сделать в 1000 раз быстрее :roll:

Никто-не делал, что-то подобное :?:
Нужно отобрать объекты по типу и прицепить к ним строковый атрибут созданный в Лоции и имеющий установленное для текущего объекта значение по умолчанию.
Дальше оно кончечно будет меняться обычным путем.
Если да- поделитесь запросом :wink: плиз :roll:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Элементарно: нужно использовать расширенный импорт. Настроить, отладить на нескольких объектах и запустить на ночь на сервере. Только в настройках импорта лучше убрать опцию помещения в подборку :-)
"Лучше меньше, да лучше" (C)
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Сообщение Anderyt »

насчет прицепления атрибутов объектам и расширенного импорта ничего не скажу, но по поводу ИЗМНЕНИЯ атрибута - есть одна идея. у нас бывает такое, что где то под конец проектирования какого либо заказа вдруг кто то решает, что надо изменить ШИФР этого заказа... а объектов в базе с таким неправильным шифром - немало... не 100 000, конечно, но все же, через подборку - тоже невесело. и причем шифры сами по себе конечно уникальны. то есть НИ старого, НИ нового шифра у объектов, НЕ принадлежащих этому заказу, НЕТУ. и поэтому можно легко и быстро найти в таблице value_string (например) строку со старым шифром и изменить ее на новый шифр. и все :-)
повторю, процедура пригодна только для ИЗМЕНЕНИЯ атрибута.
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

Крупский- вы как всегда правы :wink: Техподдержка сказала то же.
Я конечно посмотрел на SQL, но почему бы не попробовать и расширеный импорт.
Короче я уже в процессе - расширенный импорт по добавлению атрибута со значением всем объектам базы найденным по SQL запросу.
Первые впечатления - данные отобрались мгновенно все идет со скоростью 1000 объектов в 5 минут :wink:
Ждемс, но судя по всему не долго :wink:
Для сравнения в подборке 1 объект обрабатывался 3~5сек, а тут 5~10 объектов в сек. Вобщем круто!!!
Правда уже после 6000 объекта скорость снизилась до 5 объектов в сек, но как говориться уже поздно :? пить боржоми :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Сообщение Старик Крупский »

Расширенный импорт, действительно крутая штучка. По себе знаю. А вот с замедлением импорта - это фича Майкрософта. Блин, на самом деле, если не измненяет память, то чуть ли не быстрее будет импортить 10 раз по 10 тысяч объектов или 20 раз по 5 тысяч, чем один раз 100 тысяч.
Спасибо Биллу :-)
"Лучше меньше, да лучше" (C)
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

расширенный импорт опять помог :wink: :wink:
нужно было найти все объекты одного типа определить у кого из них отсутствует атрибут и оптом приписать этот атрибут с установленным значением к каждому обделенному объекту

Расширенный импорт на запросе

Код: Выделить всё

SELECT * 

  FROM 
 (select OBJ_REF.id as m_id
    from LSDBO.tree_link_view TREE_LNK,
         LSDBO.object_reference_view OBJ_REF
   where OBJ_REF.id = TREE_LNK.link_id 
         and OBJ_REF.type_id=2000000000002) as table_all

WHERE NOT EXISTS(

  SELECT * 
    FROM 
     (select OBJ_REF.id as m_id
        from LSDBO.tree_link_view TREE_LNK,
             LSDBO.object_reference_view OBJ_REF,
             LSDBO.attrib_value_view ATR_V,
             LSDBO.Value_numeric_view V_NUM
       where OBJ_REF.id = TREE_LNK.link_id 
             and OBJ_REF.type_id=2000000000002
             AND ATR_V.Attrib_ID = 100000019000005 
             AND V_NUM.Attrib_ID = 100000019000005 
             and ATR_V.object_id = obj_ref.id 
             AND V_NUM.id = ATR_V.value_id ) as table_Atr

  WHERE table_Atr.m_id=table_all.m_id)
для 10474 объектов справился с этой задачей за 40 минут, а сколько бы это заняло времени через подборку - подумать страшно

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Ответить