Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

Компоненты для работы с БД PostgreSQL.   Найти похожие ветки 

 
Fredericco ©   (2004-09-27 19:44) [0]

Возникла необходимость работать с сабжевой БД.
Был выбран компонент от фирмы MicroOLAB.

Исходные данные:
Записей в таблице  - 21400
Физически таблица занимает места - 10 мегабайт
Сами данные от сервака на клиентскую машину, после sql запроса,   идут -  3-4 секунды (что, для нас, удовлетворительно)

Недостаток:
Когда таким количеством записей наполнен DataSet, то перебор всех записей у DataSet"а методами Next или MoveBy, становиться до неприличия долгим.
Простой код:

 First;
 While EOF do Next;

выполняется за 5-6 минут!
В связи с этим вопросы:
 1) Может кто уже работал с этими компонентами, и сталкивался с этой проблемой?
 2) Нет ли других компонентов для работы с сабжевой БД?

Заранее благодарен,
с уважением Fredericco.


 
Fredericco ©   (2004-09-28 10:05) [1]

Сорри очепятка, есессно:

 First;
 While not EOF do Next;



 
Nikolay M. ©   (2004-09-28 10:13) [2]


> 2) Нет ли других компонентов для работы с сабжевой БД?

Zeos Library. Сам не работал.


 
Fredericco ©   (2004-09-28 10:23) [3]

2 Nikolay M. ©   (28.09.04 10:13) [2]
Уже пробывал.
Чего то не работают.
Скорей всего они не совместимы с нашей версией сервака (7.4)


 
Плохиш ©   (2004-09-28 10:32) [4]

Чем АДО не нравится?


 
Плохиш ©   (2004-09-28 10:36) [5]

http://gborg.postgresql.org/project/psqlodbc/projdisplay.php

Ответ на следующий (ещё не заданный) вопрос ;-)


 
Anatoly Podgoretsky ©   (2004-09-28 10:44) [6]

PostgreSQL говоришь, а чего же работаешь навигационными методами, а не реляционными. Все должно летать.


 
Fredericco ©   (2004-09-28 10:51) [7]

2 Anatoly Podgoretsky ©   (28.09.04 10:44) [6]
Это не я так работаю :-)
Я лишь член небольшой команды.
И тут лишь в планах работать реляционными. Пока основной упор делается на работу с большим числом различных БД.


 
Денис   (2004-09-28 10:53) [8]

Вы для начала с Paradox разберитесь (First, Next :-)


 
Fredericco ©   (2004-09-28 11:00) [9]

2 Плохиш ©   (28.09.04 10:32) [4]
Спасибо за ссылку, но я его уже пробывал и либо лыжи, либо я:

BDE Error: 12550
Invalid configuration parameter.
Alias: ODBC1

Скорей всего я, да? :-)


 
Плохиш ©   (2004-09-28 11:11) [10]


> Fredericco ©   (28.09.04 11:00) [9]

> BDE Error: 12550

с BDE не работаю, не знаю. АДО работает без проблем.

> Скорей всего я, да? :-)

это не я сказал ;-)


 
Плохиш ©   (2004-09-28 11:16) [11]


> Fredericco ©   (28.09.04 11:00) [9]

Только что попробовал БДЕ, все работает!
Настой правилино ODBC-драйвер.


 
Плохиш ©   (2004-09-28 11:17) [12]


> Плохиш ©   (28.09.04 11:16) [11]

Фи :-)
правилино = правильно
Настрой DNS


 
pasha_golub ©   (2004-09-28 11:23) [13]

Рассказываю прикол.
PostgreSQLDAC. DAC - Direct Access Component
И на кой этот гемор с БДЕ, ОДБС, АДО и т.д.

Далее, тебе Подгорецкий умную вещь сказал!!! На хера бегать по всему датасету из начала в конец?

Ты когда нибудь видел чтобы оператор напрямую работал с 21000 записей? Это в страшном сне такого не увидишь! Если видел, то привели плиз ситуацию.


 
Плохиш ©   (2004-09-28 11:35) [14]


> pasha_golub ©   (28.09.04 11:23) [13]

Вы про это http://microolap.com/dac/pgsql/index.htm ?
Больше всего понравились два пункта "PostgresDAC is a royalty-free product" и "Try a fully functional trial version" :-)
учитывая, что psqlODBC распостраняется под LGPL.


 
pasha_golub ©   (2004-09-28 11:40) [15]

Плохиш ©   (28.09.04 11:35) [14]
Да, я про это.

А что смущает? Версия действительно полнофункциональная, единственное отличий зарегистрированной - это наличие тех. поддержки и отсутствие модального окошка с напоминанием при коннекте к БД. Все.


 
Плохиш ©   (2004-09-28 12:03) [16]


> pasha_golub ©   (28.09.04 11:40) [15]
> Версия действительно полнофункциональная,
> единственное отличий зарегистрированной - это наличие тех.
> поддержки и отсутствие модального окошка с напоминанием
> при коннекте к БД.

Дальше продолжать нет смысла. Хотя попробуем :-) Zeos тест не прошёл :-) Посмотрим, чего накрутили здесь


 
pasha_golub ©   (2004-09-28 12:12) [17]

Плохиш ©   (28.09.04 12:03) [16]
А что за тест? У меня? например? Зеос неправильно возвращал сложные запросы типа:

(SELECT ...)
UNION
(SELRCT ...)

Вернее возвращал правильно, а потом вешался, когда пытался понять что к чему.


 
Fredericco ©   (2004-09-28 12:13) [18]

Плохиш ©  
Сенкс, но через АДО получается 30-40 секунд. Причем это время уходит на скачивание записей с сервера. Как только загрузка завершена то данные готовы.
Правда 30 секунд все равно много :-((


 
sniknik ©   (2004-09-28 12:26) [19]

> Сенкс, но через АДО получается 30-40 секунд.
30-40 сек много? вместо 5-6мин?

т.к. то что похоже у тебя было
>  Сами данные от сервака на клиентскую машину, после sql запроса,   идут -  3-4 секунды (что, для нас, удовлетворительно)
похоже это просто открытие серверного курсора
и
> First;
> While not EOF do Next;
> выполняется за 5-6 минут!
а это fetchall, скачка на клиента по мере обращения.
что теперь с ADO на похожем цикле? должно "пролетать" мгновенно.

> Правда 30 секунд все равно много :-((
смени клиентский курсор на серверный, поведение будет аналогично описанному в [0]
ускорить открытие клиентского можно асинхронным выполнением (откроется с неполными данными, до конца докачается в фоне)


 
Fredericco ©   (2004-09-28 12:50) [20]

sniknik ©   (28.09.04 12:26) [19]
Все равно много :-)
Просто достаточно большой проект. Со своими ошибками на этапе разработки. Я не руководитель :-). Ошибка в следующем. Тут все данные имеющиеся в базе отображаются сразу. То есть в программе не предусмотренно никаких фильтров. Хуже того, таблицы по lookup полям тоже сразу забираються после начитывания родительской. Полностью. Ну вот так вот тут - неправильно. Переделыать будем. Но потом.
К примеру в IB таблица в 30000 записей отображается за 3-4 сек. Полностью.


 
Johnmen ©   (2004-09-28 12:59) [21]

>Fredericco ©   (28.09.04 12:50) [20]
>в IB таблица в 30000 записей отображается за 3-4 сек. Полностью.

На экране ?
:))))))


 
Fredericco ©   (2004-09-28 13:02) [22]

2 Johnmen ©   (28.09.04 12:59) [21]
Да. Зрелище не очень.


 
sniknik ©   (2004-09-28 13:33) [23]

> sniknik ©   (28.09.04 12:26) [19]
> Все равно много :-)
при серверном курсоре будут те же 3-4 сек (в основном при первом подключении, на само время подключения)
при ассинхронном запросе открытие и показ первой порции будет мгновенным (не считая того же времени подключения если его не было), и это много? а сколько в самый раз, минус пол часа?

> 2 Johnmen ©   (28.09.04 12:59) [21]
> Да. Зрелище не очень.
ну так в чем проблема? такое количество одновременно отображонных записей (30тыс) на экране, это слошной серый фон... вставьте такую картинку на  открытие и не морочте всем мозги.

по моему тебе нужно заполнить пробелы в образовании, по теме клиентские/серверные курсоры, и что именно отображается в гридах/dbконтролах, а что нет.
тогда все станент на свои места.


 
pasha_golub ©   (2004-09-28 14:20) [24]

sniknik ©   (28.09.04 13:33) [23]

по моему тебе нужно заполнить пробелы в образовании, по теме клиентские/серверные курсоры, и что именно отображается в гридах/dbконтролах, а что нет.
тогда все станент на свои места.


Я бы тоже с удовольствием почитал. Можно ссылочку?


 
Плохиш ©   (2004-09-28 14:22) [25]


> Fredericco ©   (28.09.04 12:13) [18]

Ну sniknik уже всё объяснил :-))

> pasha_golub ©   (28.09.04 12:12) [17]

Тест на скорость. Имеется работающая программа с использованием ADO, переделывается на другой движок и сравнивается время. Результаты для PostgresDAC не утешительные. В 4 раза медленней чем ADO.


 
Fredericco ©   (2004-09-28 14:30) [26]

2 sniknik ©   (28.09.04 13:33) [23]
//по моему тебе нужно заполнить пробелы в образовании, по теме ..клиентские/серверные курсоры, и что именно отображается в гридахdbконтролах, а что нет.
тогда все станент на свои места.

Не спорю. :-)

 Но вот какая задача стоит передо мной.
 Трое человек, в том числе и я, пишут компонент-переходник между нашей программой и разными типами БД. Я создаю класс, наследуясь от одного нашего стандартного. Среди прочих методов, которые мне надо перекрыть( что б мой компонент, собственно, работал нормально со все программой), есть два: Open, RecordCount и LoadRecord(RecNum:integer; aRecord:TObject). Есессно там есть и многие другие, но это не важно.
 Когда в программе хотят отобразить таблицу, вызывают Open, а потом последовательно LoadRecord для всех записей. Так вот, после Open я данные из таблицы должен уже иметь. Что бы на каждый LoadRecord выдавать запись из моего набора данных (TDataSet, наследник от TDataSet, какого угодно хоть TList, главное что б данные уже были у меня). Где потом эти данные отображаются мне все равно. А отображаются они в самых различных местах. И впринципе без разницы где будет задержка выборки данных: на этапе  Open или на каждом вызове LoadRecord - главное что б ее не было.
Да и кстати, мои познания в программировании не ограничиваются киданием мышкой компонентов на форму и прописыванием свойств в ObjectInspector"е. :-)


 
pasha_golub ©   (2004-09-28 14:35) [27]

Плохиш ©   (28.09.04 14:22) [25]
Тест тесту рознь. Зато при большщом кол-ве записей АДО выдаст "Out of memory". Был уже прецендент, а ДАС не выдаст.

ДАС проигрывает по скорости тестам по навигации, сродни коду в [0]. А в остальном не думаю.

Fredericco ©   (28.09.04 14:30) [26]
Да и кстати, мои познания в программировании не ограничиваются киданием мышкой компонентов на форму и прописыванием свойств в ObjectInspector"е. :-)

Забыл добавить про поиск файлов FindFirst\FindNext. :-D


 
Плохиш ©   (2004-09-28 14:37) [28]


> Fredericco ©   (28.09.04 14:30) [26]

Так и ищи данные только когда их у тебя попросят.

> главное что б ее не было

Все процессы в мире протекают с конечной скоростью.


 
sniknik ©   (2004-09-28 14:39) [29]

> Я бы тоже с удовольствием почитал. Можно ссылочку?
выбирай любую
http://www.yandex.ru/yandsearch?stype=www&nl=0&text=%C5%EB%EC%E0%ED%EE%E2%E0

у меня вот такая
http://books.dore.ru/bs/f1bid405.html
(сразу попалась)
и такая
http://books.dore.ru/bs/f1bid1156.html
http://www.yandex.ru/yandsearch?text=%CC%E0%E9%EA%EB+%CE%F3%F2%E5%E9&stype=www
и еще 3 или 4 дома (не помню авторов поэтому найти проблемно)
покупалось в основном ради кусочка инфы... того чего почемуто не оказывалось в других книгах, елманову к примеру купил ради RDS которое там так полностью и не раскрывается ;( как оказалось, а начинал учить (ADO) по хелпам, книг вначале не было ;о( да и в инете статьи не находились (первую нашол на королевстве, поздно, в основном все уже сам пробовал).

> пишут компонент-переходник между нашей программой и разными типами БД. ...
ADO решили заменить? ;о))
делать ничего не надо, перекрой ADODataSet (не закрывая имеющиеся сейчас свойства), будеш иметь все что описал + еще много много всего.


 
Плохиш ©   (2004-09-28 14:39) [30]


> pasha_golub ©   (28.09.04 14:35) [27]
> Плохиш ©   (28.09.04 14:22) [25]
> Тест тесту рознь.

Никто и не спорит.

>Зато при большщом кол-ве записей АДО выдаст
> "Out of memory

Цифру большого количества в студию.


 
sniknik ©   (2004-09-28 14:46) [31]

> Зато при большщом кол-ве записей АДО выдаст "Out of memory". Был уже прецендент, а ДАС не выдаст.
ADO со стандартными настройками (как компонент с палитры ложиш) работает с локальным курсором (весь датасет перекачивается на клиента сразу), дак видать настроен на серверный, раз памяти меньше "ест", ничего не стоит и ADO на то же настроить.
потом, в старых версиях была проблема с памятью (встречался), помогает установка новой (все проблемы с этим решились после включения последнего MDAC-а в инсталяшку (6-й на тот момент)).


 
pasha_golub ©   (2004-09-28 14:59) [32]

Плохиш ©   (28.09.04 14:39) [30]
Не скажу. Информация получена от разработчика лично. Я лично с этим прецентдентом не сталкивался.

sniknik ©   (28.09.04 14:46) [31]
ДАС работает через клиентскую ДЛЛку pglib.dll, а та в свою очередь сама разбирается с данными. И что к чему у этой библиотеки знает только разработчик видимо.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.075 c
1-1097584979
NewDelpher
2004-10-12 16:42
2004.10.24
свойство Items класса TList


1-1097505960
gigabyte
2004-10-11 18:46
2004.10.24
Как работать с Microsoft Agent?


9-1087975484
lifo
2004-06-23 11:24
2004.10.24
X files


3-1096194063
Merfi
2004-09-26 14:21
2004.10.24
Запрос(Query)


6-1092437337
Jetus
2004-08-14 02:48
2004.10.24
Получение почты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский