Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужен совет. / 3 сообщений из 3, страница 1 из 1
03.10.2006, 14:26
    #34028835
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет.
Всем добрый день!
Вопрос больше про проектирование БД, но все же спрошу здесь т.к. все это в любимом ASA. ASA 7.0.4
Имеем различные предложения от поставщиков товара в виде периодически присылаемых или закачиваемых файлов. Файлы естественно разного формата от разных поставщиков(dbf, csv, xls и т.д.). Колонки в файлах то же конечно по разному названы, ну я думаю, все знакомы с ситуацией полного разношерстия. Единственное поле данные, которого унифицированы у всех поставщиков - название товара. Некоторые поставщики присылают одной из колонок код товара в своей системе(большое им спасибо!!!, очень помогает при обновлении, см ниже).
Что нужно?
Построить некую поисковую систему, чтобы пользователь, вводил поиск товара по названию(шаблону) и получал предложения по товарам попадающих под критерий поиска из всех предложений поставщиков.
Что сделано сейчас?
Все файлы подключены к ASA через прокси таблицы. При получении нового предложения соответсвующий файл заменяется на новый.
В базе создана одна унифицированная таблица для всех товаров всех поставщиков. Индекс по полю Наименование. Сами понимаете, делать запросы к прокси-таблицам - быстродействие нулевое, записей по всем предложениям больше 1 млн.
Для каждого файла поставщика написана процедура для обновления из прокси таблицы в эту универсальную таблицу. Для тех предложений, где есть код товара от поставщика обновление по коду, где нет кода: удаление всех записей(логическое, просто в одно поле признак ставиться. Физическое удаление (delete from) ночью в планировщике.), далее вставка новых записей.
После размещения нового файла запускается эта процедура.
Пользователи работают с поиском через web-интерфейс, вводят в форме строку поиска, им выдается табличка результатов.
Все работает пока нормально с высоким быстродействием.
Вот так, вкраце конечно, не стал расписывать остальное, там много чего сделано.
Но все же что-то меня смущает в моей схеме. Может я велосипед изобрел?
Может уже в мире такие дела делаются более красиво?
Я сам не проектировщик БД, эксплуататор так сказать, просто накрутил все это своими силами в базе системы учета компании.
Покритикуйте, готов уточнить информацию.
Поделитесь, как у кого реализован подобный сервис в базе или вообще в системе компании. Конечно интересует именно с точки зрения базы и системных механизмов, а не пользовательского интерфейса.
Повторю, что интересует именно ASA, в том числе более поздних версий.
...
Рейтинг: 0 / 0
03.10.2006, 15:07
    #34028982
Ser4g
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет.
Привет!
у нас похожая ситуация, реализовано так!
Все файлы от разных поставщиков грузятся в буферную таблицу. (Одно но, каждый поставщик имеет свой ID (есть справочник поставщиков, где и прописано как нужно грузить его файлы - есть поле где и прописано как нужно грузить файлы того или иного формата)) ID прописан в названии файла.
Потом есть универсальная собственная таблица с товарами (pkey,название ....)
После загрузки данных в буферную таблицу запускаем процедуру разнесения товаров. Другими словами идет сопоставление собственного справочника товаров с справочниками поставщиков. Все это пишеться в опеределенную таблицу, где просто идет связка (наш pkey товара) -> (ID постав., pkey товара) При первой загрузке нужно все сопоставить(INSERT если товара нету в справочнике ). А дальше при загрузке просто Update.
Работает довольно шустро.
У нас в отличии от вас у разных поставщиков один товар может называться по разному, вот мы его и приводим к одному.
...
Рейтинг: 0 / 0
03.10.2006, 15:20
    #34029048
antand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет.
Ser4gПривет!
у нас похожая ситуация, реализовано так!
Все файлы от разных поставщиков грузятся в буферную таблицу. (Одно но, каждый поставщик имеет свой ID (есть справочник поставщиков, где и прописано как нужно грузить его файлы - есть поле где и прописано как нужно грузить файлы того или иного формата)) ID прописан в названии файла.
Потом есть универсальная собственная таблица с товарами (pkey,название ....)
После загрузки данных в буферную таблицу запускаем процедуру разнесения товаров. Другими словами идет сопоставление собственного справочника товаров с справочниками поставщиков. Все это пишеться в опеределенную таблицу, где просто идет связка (наш pkey товара) -> (ID постав., pkey товара) При первой загрузке нужно все сопоставить(INSERT если товара нету в справочнике ). А дальше при загрузке просто Update.
Работает довольно шустро.
У нас в отличии от вас у разных поставщиков один товар может называться по разному, вот мы его и приводим к одному.
Спасибо! Утешили, что не я один такой.
На самом деле у меня тоже как у Вас буферная таблица и сопоставление при загрузке и коды поставщиков, коды производителей. + У меня в отдельной таблице ведется учет предложений поставщиков, т.к. их может быть несколько от одного. И вот в этой таблице и расписаны правила загрузки, сроки действия для каждого предложения и т.п.
Для пользователей написан web-интерфейс на PHP, они через внутренний сайт поиском занимаются(у нас филиалы по всей стране, сайт в Москве), + сделан выход на эту поисковую систему из корпоративной системы учета(она на в той же базе крутится). Ну еще сделан выход из этой системы на сайты поставщиков и производителей по каждому товару, чтобы самую свежую инфу смотреть.
Я это все не сразу написал, т.к. интересует именно технология работы с внешними данными в ASA.

Я просто всего этого не расписал
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Нужен совет. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]