>> А ведь так хочеться ... динамически линковать External :)
> Раз прайсы "чужие", то и форматы у них как правило разные.
> Кто в твоем случаи их приводит к одному формату?
> У меня сделано так:
> Есть dll способная прочитать любой прайс и выдать его строки
> в предопределенном формате.
Висит демон, проверяет обновления прайсов по
ftp, http. По спец. шаблонам формирует файлики
одинакового формата и дёргает SP в БД которая
и занимается загрузкой. Дёргает в отдельной
треде дабы не пригружать сервак..., а паралельно
работает дальше ... идея была в следующем:
пока SP грузит прайс, формируем новый с другим
именем, файла, как только SP отработала - дёргаем
её с параметром на другой файл ...
Сейчас работает через задницу т.к. external
FireBird "отпускает" не сразу :((((( я на этом
теряю около 20% времени особенно на мелких
прайсах. Получается что после каждого прайса
мне надо сделать дисконнект, заменить файл и
опять законектится :( иначе гад (FireBird) не
отпускает файл external ...
> Есть прога которая пихает эти строки в базу.
> Обновление происходит в одном из двух режимов:
> 1. Удаляем старый прайс и все льем инсертом.
В моём случае удалять низя :) да и insert-том
долго :) как никак каждый божий день
2-3 лимона записей
> Фибами это решается очень хорошо.
А на *NIX ? Я там не спец :( только и научился чарез API
открыть коннект=>выполнить query=>закрыть коннект :)
Кстати здесь у меня теряется ещё больше времени на
БОЛЬШИХ прайсах т.к., насколько я помню, тормоза
на вставках начинаются с 100000 записей.
Надобы сделать commit но в SP нельзя!
Можно нарезать файлы по 100000 записей -
но опять таки время на смену external файла
замкнутый круг :(
> Так при диалапе от 9 до 14Кбит забираются десять прайсов(~250Kb зипы ~по
> 5000тысяч позиций) и
> пихаются в базу в локальной сетке около 15 мниут.
Спасибо, за совет, но я, пока, наверное останусь на старом варианте.
Да и обьёмы у меня побольше. При твоей скорости мои прайсы
будут грузиться 12-15 часов что неприемлимо.
Для сравнения сейчас грузиться за 3-5 часов и то много !
Требование заказчика свести к 2 часам максимум,
вот и выкручуюсь как могу, там чуть-чуть, здесь чуточку .... :(((((((
PS: просто смена файлов через update rdb$relations - идеальный вариант.
не хотелось просто лишний коммит звать да и демона переписывать,
ну слаб я в *NIX :(, хотелось всё в SP запихнуть в контексте одной
транзакции. Сейчас пробую перед вызовом SP дёрнуть update
rdb$relations
если выйдет без переподключения к БД - это меня спасёт :)
--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---