Поиск:

Ответ в темуСоздание новой темы Создание опроса
> экономия сетевого траффика, удаленная обработка dbf 
:(
    Опции темы
T1000
Дата 6.3.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.1.2007

Репутация: нет
Всего: нет



Пытаюсь решить проблему экономии ресурсов сетевого канала. Задача:
Существуют таблицы "A",  "B",  "C". 
При обработке табл. "А" и "В" создается табл. "D". 
При обработке табл. "D" и "С" создается конечная таблица "Е".
Приложение, которое делает обработку таблиц, находится на одном компьютере. Все таблицы находятся на другом компьютере (на адс-сервере). Т.к. необходимо делать перебор всех записей таблиц, то записи приходится "швырять" туда-сюда. В связи с этим сеть испытывает максимальную нагрузку, и страдает скорость выполнения.
На сервере приложение запускать не представляется возможным.
От себя могу добавить только способ копирования всех баз на комп где лежит прога. Провести манипуляции и обратно на сервак закинуть. 
А какие можете предложить варианты решения проблемы вы, товарищи? Что скажете про мой способ? 
PM MAIL   Вверх
Vyacheslav
Дата 9.3.2007, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 59



Я бы все это всетаки запихнул в extended procedure и запускал все это на сервере


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 9.3.2007, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 59



Кстати. А обработку и создание таблиц нельзя в SQL  впихнуть?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
T1000
Дата 12.3.2007, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.1.2007

Репутация: нет
Всего: нет



1. Я - новичок, только-только осваиваю Delphi-ADS-dbf. Но считаю, что если "поломать" голову  ;-) , то можно запихнуть алгоритм в sql-запрос. Но к сожалению у меня нет уверенности в том, что если я буду проводить исследования в этом направлении, то потраченное время не уйдет зря. Потому как программа на данный момент создана, работает, но не так быстро, как хотелось. Программа консольная. На начальных этапах пробовал воспользоваться ADSQuery. Не получилось, возникли проблемы, и не смог заставить выполняться даже элементарные запросы. Поэтому резко перешел на ADSTable. 
Обработка баз заключается примерно в следующем:
Начинаем поиск записей по к.-л. признаку в табл. А. Если найдена запись, то поиск записей в табл. В. 
Значения некоторых полей записей табл. А и В складываются, умножаются и заносятся в табл. D. Затем создаем таблицу E.  Пробегаем по табл D, избавляясь от дублированных записей путем копирования их по одной копии в табл. Е и попутно заносим в нее же некоторые значения полей соотвествующих записей табл. С . 
Т.о. алгоритм использует вложение цикла в цикл с перебором всех значений табл А и табл В (получается кол-во просматриваемых записей равно RecCount A * RecCount B). Я уже и не говорю о второй части алгоритма, где приходится еще пару таблиц просматривать. 
Как это в sql реализовать, ума не приложу.

Прошу извинений, отклонюсь от конкретной темы, задам немного другого плана вопросы в этой теме. Думаю, что не стоит засорять список тем еще одной парой моих топиков    smile . Кто интересуется АДС-ом все темы прочитает  smile 

2. К тому же, у меня возникла еще проблема - не смог с помощью компонента AdsTable в Delphi создать поле с типом numeric. Не подскажете как это реализовать?  Если уже созданное (например с помощью data architect)  поле с типом numeric проверять на тип (перебирать в программке все известные типы полей БД), то откликается на ftFloat. 
Пробую создать поле следующим методом AdsTable1.FieldDefs.Add('имя поля', тип поля, кол-во символов, false). К примеру AdsTable1.FieldDefs.Add('names', ftInteger, 10, false). Вылезает Еррор Invalid size field. 

3. И еще вопрос, как лучше поступать: создавать таблицу с полями исключительно стринговыми, а все преобразования этих полей в нужный тип делать в приложении, кот. будет использовать эту табл.    Или создавать таблицу с соотвествующими типами полей, тогда нет нужны в преобразовании в самом приложении (но следить за типами все равно придется).

PM MAIL   Вверх
T1000
Дата 14.3.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 18.1.2007

Репутация: нет
Всего: нет



Пункты 2 и 3 решились. А вот пункт 1 так и остался в силе.
PM MAIL   Вверх
Vyacheslav
Дата 17.3.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 59



Я уже сказал: выполнять на сервере, испульзуя механизм extended procedurе. Вы так не ответили , почему этот вариант Вас  не устраивает.
Во=первых, почему используете dbf вместо adt?
Во-вторых, почему бы не перейти сразу на проф. уровень и использовать не только adt, но и вместо free tables использовать режим database, получив все прелести нормальной БД : тригера, процедуры, каскадное удаление и пр?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Advantage Database Server | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.