iAlexander |
Отправлено: 27.07.2005, 10:58 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Всем привет.
Использование такой странной связки вызвано тем, что программа, ранее работавшая с Paradox через BDE, теперь должна быть перенесена на Interbase. Вся программа построена на TQuery (и частично TTable), коих множество, в том числе как визуальных, так и создаваемых в run-time. Поэтому замена их на IB компоненты обойдется немалой кровью.
Чтобы избежать этого, я добавил TDataBase, все TDataSet завязал на эту TDataBase, настроил для TDataBase алиас, использующий драйвер INTRBASE и соответствующий моей Interbase 6.0 базе. IB 6.0 я использую сам, поэтому перспектива постоянно перепрыгивать с 5 на 6 сервер и обратно меня не вдохновляет . Базу я сконвертировал из Paradox'овой в Interbase 6.0 dialect 1.
Проблем возникло достаточно, но я скажу сейчас только об одной. Если ее не удастся разрешить, говорить об остальных смысла наверное не будет.
Выборка данных SQL выражением через компонент TQuery при использовании IB алиаса занимает несколько секунд (!) против долей секунды при Paradox'e. Это при том, что вся база 3Мб и выборка очень простая.
Тормозит ли так связка Builder 5.0 — BDE — Interbase 6, или я ее неправильно использую? |
|
olegenty |
Отправлено: 27.07.2005, 12:16 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
проверь настройки INTERBASE LINK на предмет курсора. если сделать его серверным, возможно, это чуть "ускорит" выборку. сильно вдаваться в суть того, почему НЕ СТОИТ использовать BDE для доступа к Interbase, не буду — много информации на ibase.ru
|
|
iAlexander |
Отправлено: 27.07.2005, 12:40 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Спасибо за ответ.
Что такое INTERBASE LINK и где его можно настроить, я не знаю, но если преимущество от этого будет столь незначительным, то проблемы это не снимает.
Будет ли работать эффективнее BDE с Interbase 5? (вместо IB6)
Существуют ли эффективные автоматические способы подмены BDE компонентов на ADO или IB? (Существенно в данном случае именно время, затраченное на переделку) |
|
olegenty |
Отправлено: 27.07.2005, 14:17 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
настроить его можно в BDE Administrator, при создании Alias'а к твоей БД.
быстрого способа перейти на другие компоненты нет.
идеальный способ досупа — использование FIBPlus (об этом можно почитать как на ibase.ru, так и на Devrace.com, всё будет вращаться вокруг пары: длинная читающая короткая транзакция/короткая пишущая)
переход хоть на IBX, хоть на FIBPlus — будет долгим и мучительным.
я бы порекомендовал осуществить его (это IMHO), используя "прослоечные" компоненты — TMemTableEh + TIBXDataDriverEh/TFIBDataDriverEh из пакета компонентов EhLib. TMemTableEh — клиентский набор данных. Если позже что-то придётся опять серьёзно модифицировать, достаточно будет заменить один TXXXDataDriver на другой.
|
|
iAlexander |
Отправлено: 27.07.2005, 18:37 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Хорошо, поскольку разница между IB и FIBPlus мне неизвестна, я последую вашему совету.
Но есть вопрос: сколько примерно компонент FIBPlus добавит к моему exe?
Я как-то использовал EhLib — прискорбно, но он добавил кажется 1,5 М!!
И, может быть, тогда уже использовать какую-нибудь другую версию Interbase или FireBird, с поддержкой Boolean и прочими совместимостями с Paradox'ом?
Отредактировано iAlexander — 27/07/2005, 18:38 |
|
olegenty |
Отправлено: 28.07.2005, 07:18 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
таких версий пока нет.
компилируй with runtime packages, и не мучайся весомостью
к сожалению, так устроен компилятор Borland — либо влинковывает всё, либо — ничего.
|
|
iAlexander |
Отправлено: 24.09.2005, 17:46 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
To olegenty
О долгом и мучительном переходе:
Я посмотрел на компоненты IBX в BCB5 и нашел их во многом похожими на аналогичные компоненты для работы через BDE. Это значительно облегчит перевод программы на использование IBX.
Помня в то же время о вашем совете относительно FIBPlus, я установил Trial версию 6.25. Значительным (с моей точки зрения и в моей ситуации) недостатком является то, что эти компоненты не следуют иерархии наследования от TDataSet. Таким образом, я лишаюсь возможности оставить текущие Grid'ы, Edit и ComboBox'ы и прочие элементы управления, а это означает полную переделку визуальной части. К сожалению, это для меня является неприподъемной задачей.
Не могли бы вы указать какие-либо причины, по которым мне следует отменить переделку под IBX компоненты (серьезные глюки IBX/Interbase, наличие еще каких-либо альтернатив) ? Исходя из того, что база останется под Interbase'ом, и возможно, лишь будет инкрементироваться версия СУБД. Очень хочется быть полностью уверенным в своем выборе перед началом таких крупномасштабных операций
Отредактировано iAlexander — 24/09/2005, 17:47 |
|
olegenty |
Отправлено: 26.09.2005, 07:04 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
??? FIBPlus-таки ничего не нарушает, используй TpFIBDataSet, и наздоровье пользуйся всем, что было по пользовательскую сторону от TDataSource. Это раз. IBX + Firebird — неживая связка — это два. а Interber 5 давно не жив, это тоже уже факт
|
|
iAlexander |
Отправлено: 27.09.2005, 10:10 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Спасибо. TpFIBDataSet я как-то не заметил, посмотрел лишь на TpFIBQuery. Про FB — я специально оговорился про InterBase, а мой BCB5+IBX нормально выбирал и писал данные в IB6.1 используя диалект 1. Но: я спрашивал человека, использовавшего updated IBX (видимо, с ibase.ru) — и он сказал, что его программа (BCB5) нормально работала и с FireBird'вой базой. Вот.
Как я понял, TpFIBDataSet кроме всего прочего совмещает в себе функциональность TQuery+TUpdateSQL. Это хорошо
Кстати, заметил глюк генерации SQL выражений: при нажатии на кнопку GenerateSQLs RefreshSQL генерируется с ошибкой:
CODE |
DeleteSQL
DELETE FROM
FILES
WHERE
FILE_ID = :OLD_FILE_ID
|
CODE |
RefreshSQL
select * from files;
WHERE
FILES.FILE_ID = :OLD_FILE_ID
|
Какие существенные ограничения поджидают меня в Trial-версии? Ибо покупать full компонент я пока не собираюсь...
Или если буду использовать FIBPlus3 (последняя бесплатная версия) — как там с глюками и с функциональностью?
Отредактировано iAlexander — 28/09/2005, 18:56 |
|
olegenty |
Отправлено: 03.10.2005, 12:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
версию 3 использовать не вздумай — функционал этой древней версии не учитывает всех нововведений в Interbase/Firebird
full — для русских за 700 рублей + год бесплатной поддержки/обновлений
ограничения триала ТОЛЬКО в появляющемся при старте приложения предупреждении, что используется триал.
IBX-таки может работать с Firebird, достаточно переименовать fbclient.dll в gds32.dll. однако, объективная реальность такова, что в данный момент интерфейсы этих библиотек от Interbase и Firebird далеко не идентичны. что-то будет работать, что-то — нет.
|
|