Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3 4 5      [все]
 Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Есть большой проект на Delphi 2007 - больше 400 тысяч строк.

Весь проект построен главным образом на базе

TIBDatabase, TIBTransaction, TIBQuery, TDataSource, TDBGrid

(разумеется, есть еще много используемых компонентов - но это основное)



Проблема в IBX в том, что это устаревшее решение и медленно работает при подключении к базам данных через Интернет-соединение. Например, если ping между 2 компьютерами 20 миллисекунд - выполнением одного небольшого Select (даже возвращающего всего 1 запись) занимает около 80-100 миллисекунд (то есть в 4-5 раз дольше, чем обычный ping).

Другое дело в случае с правильно настроенным FireDAC. Время выполнения Select может быть 20-40 миллисекунд (то есть 1-2 обычных ping вместо 4-5). Соответственно, если всё приложение перевести с IBX на FireDAC - скорость его работы существенно возрастёт при подключении к базе данных через Интернет (где ping между компьютерами не 1-2 миллисекунды, как в локальной сети, а даже 20 мс считается хорошим).



Теперь остаётся вопрос в том - как перевести проект с IBX на FireDAC - чтобы программный код проект этого "почти не заметил"?

Как я понимаю, потребуется переопределить классы TIBDatabase, TIBTransaction, TIBQuery - чтобы они работали на базе FireDAC (используя классы TFDConnection TFDTransaction TFDQuery) и подключить переопределённые классы ко всем формам проекта - после подключения стандартных модулей IBX.

При обращении приложения - скажем, к TIBQuery.Open промежуточный класс должен образаться к TFDQuery и т. д. Еще в приложении для TIBQuery используется множество обработчиков событий AfterScroll, OnGetText и т. д. - они тоже должны перенаправляться на FireDAC. Чтобы не менять (или почти не менять) программный код приложения (там более 200 форм) - но чтобы при этом перевести его на FireDAC.



Есть ли какое-нибудь готовое решение для этого или идея бесперспективная? Занимался ли кто-нибудь подобным? Как лучше всего безболезненно перевести проект с IBX на FireDAC?
12 ноя 21, 13:37    [22395054]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Сергей Фролов
Member

Откуда:
Сообщений: 1608
Наталья87,

Переход на Firedac не поможет. Проблема в Firebird.
12 ноя 21, 13:39    [22395056]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Сергей Фролов
Наталья87,

Переход на Firedac не поможет. Проблема в Firebird.


Если заново делать на базе FireDAC - работает всё значительно быстрее. Проблема в том, что переписывать код 400 форм это несколько месяцев работы. Потому и хочется какого-то решения - как перейти с IBX на FireDAC, не переписывая приложение.

Уходить с Firebird в планах нет, у каждой СУБД есть плюсы и минусы, Firebird не является какой-то особо плохой СУБД (минусы у Firebird есть - но например, у Firebird зато выдающаяся работа с транзакциями, это многоверсионник так что какая СУБД хуже какая лучше можно оставить за рамками данной темы).

Сообщение было отредактировано: 12 ноя 21, 13:44
12 ноя 21, 13:42    [22395060]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Сергей Фролов
Проблема в Firebird.

Не совсем, но переход действительно не поможет. Аффтарше вообще ничего не поможет.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 13:47    [22395061]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Наталья87> Другое дело в случае с правильно настроенным FireDAC.

Вы уже пробовали протестировать на реальном
примере или это умозрительные рассуждения?

> Есть ли какое-нибудь готовое решение для этого

Вряд ли. У FireDAC был IIRC некий мигратор с BDE,
но сомневаюсь, что есть нечто подобное с IBX и т.п.

P.S. Сначала попробуйте различные решения, не
требующие изменения кода - ZeBeDee, VPN и пр.
Если не поможет - тогда думайте менее "активном"
взаимодействии клиента с сервером, bried-case и пр.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 13:47    [22395062]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791
Гаджимурадов Рустам
P.S. Сначала попробуйте различные решения, не требующие изменения кода -
ZeBeDee, VPN и пр.

Мёртвому припарка. Протокол в Firebird 2.5 был оптимизирован под способ, которым
его использует IBX. В тройке добавили сжатие, что делает бесполезным ЗиБиДи.
Если даже с этим оно работает медленно - нужно рихтовать архитектуру, а у
аффтарши "400 тысяч строк". (Хотя мы-то помним, что большая часть из них это
хаки для стандартных компонент чтобы заставить их работать так как разработчикам
и в страшном сне не могло присниться.)

Сообщение было отредактировано: 12 ноя 21, 13:54
12 ноя 21, 13:53    [22395066]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Гаджимурадов Рустам
Наталья87> Другое дело в случае с правильно настроенным FireDAC.
Вы уже пробовали протестировать на реальном
примере или это умозрительные рассуждения?


Именно на реальном примере. Всё работает действительно быстрее. Раза в два как минимум.
Причём из коробки. А с несчастным IBX можно применять множественные запросы в теле одного запроса, кэширования и прочие ухищрения - но все равно на FireDAC в итоге всё работает быстрее и лучше.
12 ноя 21, 14:01    [22395074]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov
(Хотя мы-то помним, что большая часть из них это
хаки для стандартных компонент чтобы заставить их работать так как разработчикам
и в страшном сне не могло присниться.)


Нет - бОльшая часть кода - это формы, построенные на базе TIBDatabase, TIBTransaction, TIBQuery, TDataSource, TDBGrid
12 ноя 21, 14:02    [22395076]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov
Гаджимурадов Рустам
P.S. Сначала попробуйте различные решения, не требующие изменения кода -
ZeBeDee, VPN и пр.

Мёртвому припарка. Протокол в Firebird 2.5 был оптимизирован под способ, которым
его использует IBX. В тройке добавили сжатие, что делает бесполезным ЗиБиДи.
Если даже с этим оно работает медленно - нужно рихтовать архитектуру, а у
аффтарши "400 тысяч строк". (Хотя мы-то помним, что большая часть из них это
хаки для стандартных компонент чтобы заставить их работать так как разработчикам
и в страшном сне не могло присниться.)


Имеет смысл перейти с Firebird 2.5 на Firebird 3.0? Ну так это в планах. Но задачу, описанную в рамках данной темы - всё равно придётся решать. Чтобы с IBX перейти на FireDAC.

Неужели разработчики FireDAC не предусмотрели каких нибудь оберток для перехода со старого кода? IBX по сути не такой уж сложный чтобы его как надо обернуть ... может, на GitHub что-нибудь для этого есть?
12 ноя 21, 14:06    [22395078]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Наталья87> Именно на реальном примере. Всё работает
Наталья87> действительно быстрее. Раза в два как минимум.

Что ж, удачи в переезде. Сообщите о результатах, ради интереса.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:07    [22395082]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Наталья87> бОльшая часть кода - это формы, построенные
Наталья87> на базе TIBDatabase, TIBTransaction, TIBQuery

Формы не строят "на базе DB-компонент".
Коннект у вас один, надеюсь, или тоже у
каждой формы свой?

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:08    [22395084]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Гаджимурадов Рустам
Наталья87> Именно на реальном примере. Всё работает
Наталья87> действительно быстрее. Раза в два как минимум.

Что ж, удачи в переезде. Сообщите о результатах, ради интереса.


Так переезд не получается. Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC. Неужели только вариант самостоятельно писать?

Понятно что если писать с нуля то надо использовать Firebird 3.0 и FireDAC, но уже используется Firebird 2.5 и IBX ...
12 ноя 21, 14:10    [22395085]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Наталья87> Неужели разработчики FireDAC не предусмотрели
Наталья87> каких нибудь оберток для перехода со старого кода?

Разработчик FireDAC сюда заглядывает, может
прокомментирует... Но вообще да, недоработка,
должна быть и обёртка для перехода, и обёртка
для оптимизации, и обёртка для сделать хорошо. :)

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:11    [22395087]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Гаджимурадов Рустам
Наталья87> бОльшая часть кода - это формы, построенные
Наталья87> на базе TIBDatabase, TIBTransaction, TIBQuery

Формы не строят "на базе DB-компонент".
Коннект у вас один, надеюсь, или тоже у
каждой формы свой?


Коннект один - TIBDatabase. Как и положено, не в обычной форме, а в DataModule.
12 ноя 21, 14:11    [22395088]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Гаджимурадов Рустам
Наталья87> Другое дело в случае с правильно настроенным FireDAC.
Сначала попробуйте различные решения, не
требующие изменения кода - ZeBeDee, VPN и пр.
Если не поможет - тогда думайте менее "активном"
взаимодействии клиента с сервером, bried-case и пр.


Все, что можно было сделать в этом направлении - уже сделано. IBX уже "хакнутый". Но все равно так быстро, как FireDAC, не работает ...
12 ноя 21, 14:14    [22395091]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Наталья87> Нужны обертки-переходники классов для
Наталья87> IBX чтобы они работали на базе FireDAC.

Как Вы себе это представляете? Чтобы Вы в коде
вызывали свойства/методы классов IBX, а они -
невидимо и самостоятельно - "заменялись" на
методы/свойства FireDAC? Или как?

Ну, мне так, для себя ... (с) КВН

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:14    [22395093]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Наталья87> IBX уже "хакнутый". Но все равно так быстро, как FireDAC, не работает ...

В топик призывается МП.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:15    [22395096]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 985
ReplaceStr('TIB', 'TFD', [ReplaceAll])
12 ноя 21, 14:15    [22395097]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Гаджимурадов Рустам

Как Вы себе это представляете? Чтобы Вы в коде
вызывали свойства/методы классов IBX, а они -
невидимо и самостоятельно - "заменялись" на
методы/свойства FireDAC? Или как?


Да - именно так. Написать модуль - наследники классов IBX, чтобы они использовали FireDAC.
12 ноя 21, 14:18    [22395101]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Fr0sT-Brutal
ReplaceStr('TIB', 'TFD', [ReplaceAll])


Я полагаю, может сработать. Но по сложности и подводным камням будет сопоставимо с переходом с D2007 на D XE8.
12 ноя 21, 14:20    [22395102]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Наталья87
Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC.

Не нужны. Просто кладёте TFDConnection рядом с TIBConnection, одной строчкой
кода шарите им хэндл, а потом не торопясь постепенно заменяете компоненты на
формах по одной. Это будет быстрее и надёжнее, чем любый ваши самописные обёртки.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:20    [22395103]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov

Наталья87
Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC.

Не нужны. Просто кладёте TFDConnection рядом с TIBConnection, одной строчкой
кода шарите им хэндл, а потом не торопясь постепенно заменяете компоненты на
формах по одной. Это будет быстрее и надёжнее, чем любый ваши самописные обёртки.


Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же принципу. Может, так и сделаю ...
12 ноя 21, 14:22    [22395105]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 13358
Наталья87
Я полагаю, вручную на 2-3 формах заменить
На каких 2-3 формах заменить, если
Наталья87
Коннект один - TIBDatabase. Как и положено, не в обычной форме, а в DataModule.
12 ноя 21, 14:34    [22395114]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Наталья87
Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а
потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же
принципу.

Нет. Не пытайтесь умничать и отвлекаться. Ручками. Поэтапно. Каждую форму
индивидуально с тестированием после каждой. Иначе времени потратите больше на
отлов глюков, которые полезут везде и сразу.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:35    [22395116]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov

Наталья87
Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а
потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же
принципу.

Нет. Не пытайтесь умничать и отвлекаться. Ручками. Поэтапно. Каждую форму
индивидуально с тестированием после каждой. Иначе времени потратите больше на
отлов глюков, которые полезут везде и сразу.


Страшно подумать. Это же жуть, столько ручной работы в век автоматизации. Хочется автоматизировать и написать обёртку ...
12 ноя 21, 14:43    [22395121]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Наталья87
Хочется автоматизировать и написать обёртку ...

Понятно что хочется, но эти порывы надо давить в зародыше. Ибо времени уйдёт
больше, а результат будет хуже.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:47    [22395128]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
DS> Ибо времени уйдёт больше, а результат будет хуже.

+1

Заодно и отрефакторите старый проект -
наверняка, там много можно сделать лучше.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 14:59    [22395140]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov

Наталья87
Хочется автоматизировать и написать обёртку ...

Понятно что хочется, но эти порывы надо давить в зародыше. Ибо времени уйдёт
больше, а результат будет хуже.


Вы шутите. Это нереально. Работы на год и тогда уже под вопросом смысл перехода на этот FireDAC ...
12 ноя 21, 15:02    [22395143]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791
Наталья87
Вы шутите. Это нереально. Работы на год и тогда уже под вопросом смысл перехода
на этот FireDAC ...

Я не шучу. Это реальнее, чем любая другая из Ваших идей. Повторяю медленно:
переход идёт по одной форме, его скорость не важна, у вас в любой момент
полностью рабочий проект
. С системой контроля версий была бы ещё и гарантия
быстрого отката конкретной проблемы, но да, я помню, что Вы ниасилили эту концепцию.

И да, переход на FireDAC возможен только ПОСЛЕ перехода на новую версию дельфи,
так что непонятно почему Вы вообще этим озаботились уже сейчас.

PS: Вашу накопившуюся гору костылей надо разбирать медленно и очень осторожно. Иначе она обрушится и похоронит Вас.

Сообщение было отредактировано: 12 ноя 21, 15:13
12 ноя 21, 15:08    [22395145]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
Наталья87
Работы на год и тогда уже под вопросом смысл перехода на этот FireDAC ...
Так смысла и нет никакого.
То, что на FD гриды быстрее отображаются - ложь, не поверю никогда.
Если где и может быть быстрее - это где получается одна запись. Возможно, там для этого используется TIBQuery, а надо заменить на TIBSQL. Да и то - не факт, что поможет.
12 ноя 21, 15:50    [22395171]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
Наталья87
Гаджимурадов Рустам
Наталья87> Другое дело в случае с правильно настроенным FireDAC.
Вы уже пробовали протестировать на реальном
примере или это умозрительные рассуждения?


Именно на реальном примере. Всё работает действительно быстрее. Раза в два как минимум.
Причём из коробки. А с несчастным IBX можно применять множественные запросы в теле одного запроса, кэширования и прочие ухищрения - но все равно на FireDAC в итоге всё работает быстрее и лучше.

Наверняка, такая разница из-за какой-нибудь глупости, типа включенного/выключенного автокоммита или кэширования препарированных запросов.
12 ноя 21, 16:09    [22395179]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov
Вашу накопившуюся гору костылей надо разбирать медленно и очень осторожно. Иначе она обрушится и похоронит Вас.


Как сложно было переносить костыли на XE-8 вы даже не представляете. Хотя часть костылей после перехода на XE-8 (а точнее в данный момент - при компиляции проекта на XE-8) стала не нужна.
12 ноя 21, 16:23    [22395186]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
YuRock
Наталья87
Работы на год и тогда уже под вопросом смысл перехода на этот FireDAC ...
Так смысла и нет никакого.
То, что на FD гриды быстрее отображаются - ложь, не поверю никогда.
Если где и может быть быстрее - это где получается одна запись. Возможно, там для этого используется TIBQuery, а надо заменить на TIBSQL. Да и то - не факт, что поможет.


Да - используется TIBQuery вместо TIBSQL. Насчет того, что быстрее отображаются гриды - возможно, показалось.

А если не быстрее - зачем тогда он нужен вообще этот FireDAC (если он не быстрее IBX)?
12 ноя 21, 16:26    [22395189]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov

И да, переход на FireDAC возможен только ПОСЛЕ перехода на новую версию дельфи,
так что непонятно почему Вы вообще этим озаботились уже сейчас.


Вы не поверите. Но хотелось написать класс-обертку, скомпилировать проект на XE-8 с FireDAC, но сохранить возможность работы на IBX (типа чтобы можно было переключать режим IBX/FireDAC). И пока еще несколько месяцев посидеть покодить на Delphi 2007.
12 ноя 21, 16:30    [22395193]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Michael Longneck
Member

Откуда: Москва
Сообщений: 2386
Я с BDE переходил на FireDac. Утилита "конвертации" это по большому счёту "replace in files". С некоторой немалой вероятностью в вашем коде ничего такого нет, чтобы его нельзя было перенести автозаменами и поправить руками оставшееся. Поскольку я перешёл именно так, за исключением написания своего TTable "идентичного натуральному BDE по багам". А в моём проекте 1000+ форм только.
Но могу ошибаться конечно.
12 ноя 21, 16:36    [22395195]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Michael Longneck
Я с BDE переходил на FireDac. Утилита "конвертации" это по большому счёту "replace in files". С некоторой немалой вероятностью в вашем коде ничего такого нет, чтобы его нельзя было перенести автозаменами и поправить руками оставшееся. Поскольку я перешёл именно так, за исключением написания своего TTable "идентичного натуральному BDE по багам". А в моём проекте 1000+ форм только.
Но могу ошибаться конечно.


Мне кажется тоже, что ничего страшного нет. После перехода на XE-8. Написать replace-patch на AutoIt и смотреть баги - которые будут при компиляции. Потихоньку совершенствовать патч - чтобы в итоге постепенно убрать все баги. И все это время иметь рабочий проект. И периодически собирать FireDAC-версию проекта, отправляя некоторым заказчикам (а если скажут что все сломалось - отправлять основную рабочую версию и решать проблемы, исправляя ошибки ).

Кстати, для перехода на XE-8 у меня такой же replace-patch. Например, string меняется на AnsiString, char на AnsiChar и прочее. И версия для XE-8 значительно отличается от исходной и собирается уже только на XE-8. Так что не уверена даже, что системы контроля версий при таком подходе чем-то помогли - ведь СКВ - это же не серебряная пуля.
12 ноя 21, 16:51    [22395206]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30253
Наталья87,

хотите я вам всё спалю?
Так вот - а что вы будете делать, если FireDAC не будет поддерживать расширений Firebird 4.0 по типам данных?
Опять рефакторить с FireDAC на модифицированную версию FIBPlus ?

Пока, до идеи перенести свой проект на Firebird 4.0, я не вижу никакого смысла менять IBX на FireDAC.
Да и то, надо посмотреть, какие именно компоненты (FIBPLus, FireDAC, или еще кто) будут первыми доточены до типов данных FB 4. Пока вроде никакие.

p.s. и еще каверзный вопрос - у вас Delphi Enterprise? т.к. разрешение на нелокальный клиент-сервер есть только в Enterprise, а Prof разрешается использовать только "локально", т.е. приложение и ФБ/ИБ на одном компе.

Сообщение было отредактировано: 12 ноя 21, 17:05
12 ноя 21, 17:04    [22395216]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 13358
kdv
Да и то, надо посмотреть, какие именно компоненты (FIBPLus, FireDAC, или еще кто) будут первыми доточены до типов данных FB 4.
Почему-то мне кажется, что первыми сделают таки коммерческий FireDAC. Хотя возможно я наивен. И сразу вопрос - BOOLEAN в FireDAC поддержали?

kdv
разрешение на нелокальный клиент-сервер есть только в Enterprise,
Поправь меня если ошибаюсь, но вроде это не относится к IBX (а если относится, то как это проверяется? Просто под честное слово?). FireDAC в Prof отсутствует. А если докупить его отдельно, то там такого ограничения не будет.

Я сейчас большую глупость сказал?
12 ноя 21, 17:15    [22395222]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Наталья87
Как сложно было переносить костыли на XE-8 вы даже не представляете.

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

Наталья87
Вы не поверите. Но хотелось написать класс-обертку, скомпилировать проект на
XE-8 с FireDAC, но сохранить возможность работы на IBX (типа чтобы можно было
переключать режим IBX/FireDAC).

Поверю. Это вполне типичная для Вас линия: тратить время и силы на бесполезные
обёртки и костыли вместо методичного и вдумчивого рефакторинга.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 17:24    [22395226]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30253
_Vasilisk_
но вроде это не относится к IBX (а если относится, то как это проверяется?

это формальное, но лицензионное ограничение к версии Professional.
Обсуждалось тут уже не раз, и читается элементарно в русскоязычном лицензионном соглашении на Дельфи, которое
лежит в корне установки уже давным-давно.
Да, НЕ проверяется. Но сетевое использование для prof - запрещено. Localhost - можно. А не localhost - уже нельзя, только Ent.

https://www.embarcadero.com/ru/products/delphi/product-editions
Prof - FireDAC для доступа к локальным / встроенным базам данных, включая локальные Microsoft Access SQLite, Interbase ToGo, IBLite, сервер InterBase на localhost, и встроенные: MySQL Embedded, сервер MySQL на localhost, локальный сервер Advantage Database, PostgreSQL на localhost, Firebird Embedded, и Firebird на localhost.

Ent - FireDAC обеспечивает клиент-серверное многопользовательское соединение с широким спектром поддерживаемых баз данных разных СУБД, включая InterBase, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, DB2, SQL Anywhere, Advantage DB, Firebird, Access, Informix, DataSnap и многие другие.


p.s. ребята, активное обсуждение лицензионных соглашений началось в начале 2000, как минимум, массовое и публичное, если не в конце 90х.
Казалось бы, за 20 лет программисты должны научиться во избежание всякого читать лицензионные сообщения к софту, который они используют. Но нет, не заглядывают ни в папку установки дельфей, ни смотрят в описания софта на сайте производителя, и т.д.
Кошмар-кошмар...
12 ноя 21, 17:31    [22395235]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
DS> тратить время и силы на бесполезные обёртки и костыли

Ну это для кого бесполезные, а для кого очень даже полезные.
Люди сидят, работают, что-то делают, копошатся, зарплату
получают и могут ещё год-другой продолжать так копошиться...

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 17:31    [22395237]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30253
_Vasilisk_
А если докупить его отдельно

уже года три как (минимум, я не помню) "клиент-серверная" лицензия FireDAC не продается отдельно, и входит только в Enterprise.
12 ноя 21, 17:32    [22395238]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
kdv> Кошмар-кошмар...

Ты как будто в Англии живёшь...
Кому нафиг сдалось, что там в
этом файлике написано? Никому.
И правильно не читают.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 17:33    [22395239]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30253
Гаджимурадов Рустам
Люди сидят, работают, что-то делают, копошатся, зарплату
получают и могут ещё год-другой продолжать так копошиться...

ты не поверишь, бывает что вообще ничего не делают, и получают зарплату, годами.
12 ноя 21, 17:33    [22395240]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30253
Гаджимурадов Рустам
Ты как будто в Англии живёшь...

сейчас уже всё равно, что в Англии, что в РФ, что на Кубе, или в Бразилии. Все сидят в интернете, а там без разницы, влияет только часовой пояс. :-)
Гаджимурадов Рустам
Кому нафиг сдалось, что там в
этом файлике написано? Никому.
И правильно не читают.

Ну, во-первых, в РФ есть 4я часть ГК. Во-вторых, иностранные компании присутствуют в РФ. В третьих, российские разработчики могут продавать свой софт за рубеж.
Ок, как хотите, не читайте дальше.
12 ноя 21, 17:36    [22395242]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
kdv> есть 4я часть ГК. Во-вторых, иностранные компании
kdv> присутствуют в РФ. В третьих, российские разработчики
kdv> могут продавать свой софт за рубеж.

Всем пофиг. И правильно.

Ладно, закрыли оффтопик.

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 17:41    [22395248]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3954
По опыту переноса IBX > UniDAC > FireDAC достаточно больших, миллионнострочных, проектов. Не всё так печально как кажется. Я делал фаром. Переименование + разегребание ошибок компиляции.
12 ноя 21, 19:15    [22395303]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
kdv
Гаджимурадов Рустам
Люди сидят, работают, что-то делают, копошатся, зарплату
получают и могут ещё год-другой продолжать так копошиться...

ты не поверишь, бывает что вообще ничего не делают, и получают зарплату, годами.

Вот... не надо. Лишнего болтать.
Прямо уж и годами.
12 ноя 21, 20:19    [22395332]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
Наталья87
А если не быстрее - зачем тогда он нужен вообще этот FireDAC (если он не быстрее IBX)?
Для мульти-СУБД-разработки, зачем же еще. Он поддерживает не только Firebird.
12 ноя 21, 20:34    [22395339]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
YuRock
Наталья87
А если не быстрее - зачем тогда он нужен вообще этот FireDAC (если он не быстрее IBX)?
Для мульти-СУБД-разработки, зачем же еще. Он поддерживает не только Firebird.

Зато ibx/fib+ умеют сервисные вещи делать. Бэкапы-ресторы, валидацию т .д.
А FireDAC не умеет. Ну, раньше не умел. Сейчас, возможно, уже умеет.
12 ноя 21, 20:54    [22395349]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
YuRock
Наталья87
А если не быстрее - зачем тогда он нужен вообще этот FireDAC (если он не быстрее IBX)?
Для мульти-СУБД-разработки, зачем же еще. Он поддерживает не только Firebird.


Понятно. Значит, ради ускорения на него переходить не стоит.

А от Firebird мне трудно отказаться будет. У меня такой код, что открывает транзакции, которые долго висят - например, в ожидании диалогов пользователя. Очень удобно. Firebird многоверсионник легко такое переваривает. А какой-нибудь MySQL может хоть и лучше в целом но с этим конкретно у него дела хуже.

В Firebird конкретно вижу минус один - в том, что Firebird-хостингов мало, куда можно базу залить, а с MySQL - полнО. А для Firebird нужно покупать VPS (пусть даже линуксовый VPS, но все равно дороже обычного хостинга c MySQL).
12 ноя 21, 21:44    [22395367]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
kdv
Наталья87,
Пока, до идеи перенести свой проект на Firebird 4.0, я не вижу никакого смысла менять IBX на FireDAC.


Понятно. Поменяю для начала IBQuery на IBX где это возможно. Это малой кровью можно сделать. FireDAC как выяснилось не для скорости нужен как я думала изначально и уж трат ить месяцы чтобы перейти на него наверное не стоит ...
12 ноя 21, 21:48    [22395370]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1451
Наталья87

Понятно. Поменяю для начала IBQuery на IBX где это возможно ...

O tempora, o mores!!

P.S. И где только работодатели берут таких, талантливых?
Вот ваш покорный слуга, к примеру, уже два года как не может работу по профилю найти,
Смешно сказать, пришлось с мая на бейсик с акцессом перейти.
Увы нам.((

Сообщение было отредактировано: 12 ноя 21, 22:18
12 ноя 21, 22:18    [22395387]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 1457
Наталья87
Есть большой проект на Delphi 2007 - больше 400 тысяч строк.

Весь проект построен главным образом на базе

TIBDatabase, TIBTransaction, TIBQuery, TDataSource, TDBGrid

(разумеется, есть еще много используемых компонентов - но это основное)

Проблема в IBX в том, что это устаревшее решение и медленно работает при подключении к базам данных через Интернет-соединение. Например, если ping между 2 компьютерами 20 миллисекунд - выполнением одного небольшого Select (даже возвращающего всего 1 запись) занимает около 80-100 миллисекунд (то есть в 4-5 раз дольше, чем обычный ping).

Другое дело в случае с правильно настроенным FireDAC. Время выполнения Select может быть 20-40 миллисекунд (то есть 1-2 обычных ping вместо 4-5). Соответственно, если всё приложение перевести с IBX на FireDAC - скорость его работы существенно возрастёт при подключении к базе данных через Интернет (где ping между компьютерами не 1-2 миллисекунды, как в локальной сети, а даже 20 мс считается хорошим).

Теперь остаётся вопрос в том - как перевести проект с IBX на FireDAC - чтобы программный код проект этого "почти не заметил"?

Как я понимаю, потребуется переопределить классы TIBDatabase, TIBTransaction, TIBQuery - чтобы они работали на базе FireDAC (используя классы TFDConnection TFDTransaction TFDQuery) и подключить переопределённые классы ко всем формам проекта - после подключения стандартных модулей IBX.

При обращении приложения - скажем, к TIBQuery.Open промежуточный класс должен образаться к TFDQuery и т. д. Еще в приложении для TIBQuery используется множество обработчиков событий AfterScroll, OnGetText и т. д. - они тоже должны перенаправляться на FireDAC. Чтобы не менять (или почти не менять) программный код приложения (там более 200 форм) - но чтобы при этом перевести его на FireDAC.

Есть ли какое-нибудь готовое решение для этого или идея бесперспективная? Занимался ли кто-нибудь подобным? Как лучше всего безболезненно перевести проект с IBX на FireDAC?


Переход на другую библиотеку компонентов не поможет. Максимум позволит увеличить производительность в пару раз. На практике эту будет выглядеть так. Сейчас пользователь жмёт кнопку и ждёт 5 минут реакции от программы (программа, к примеру, выполняет построчную обработку записей из таблицы, состоящей из 10000 записей, для каждой записи выполняется отдельный запрос к БД). После перехода на другую библиотеку время сократится до 2.5 минут. Но это всё равно недопустимо долго! За это время оператор пять раз успеет компьютер отресетить.
Варианты решения проблемы:
1) работать в режиме RDP. С этом случае на терминалом сервере Windows может быть запущено множество экземпляров программы под учётными записями пользователей. Базу данных можно разместить на том же либо на соседнем сервере. Проблемы с подключением оборудования (и пробросом его на рабочие места операторов) так или иначе решаются.
2) вводить дополнительный сервер, общаться с ним, например с помощью rest-запросов (например, с передачей json-пакетов). В одном rest-запросе можно запросить сразу несколько таблиц. Использовать для наиболее критических участков программы.
3) переделывать наиболее критические участки (циклическая обработка большого количества записей таблицы) на хранимые процедуры либо EXETUTE BLOCK
4) выполнять длительный код в дополнительном потоке, при этом пользователю можно вешать модальное окно с сообщением "подождите пару секунд..." и какой-нибудь анимацией. Быстрее оно от этого работать не будет, но хотя бы не будут зависать окна программы.
5) кэшировать справочники в памяти программы, периодически читая последние изменения из БД.
12 ноя 21, 23:20    [22395425]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
DmSer,

ты предлагаешь переработать архитектуру здания тому, кто просит совета в выборе клея для обоев?
12 ноя 21, 23:23    [22395426]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1451
DmSer

Переход на другую библиотеку компонентов не поможет. Максимум позволит увеличить производительность в пару раз. <...>

В пару раз? При переводе с IBX на FireDAC? Во так просто заменой библиотеки (сам то пробовал) ?
Show must go on. ))
12 ноя 21, 23:37    [22395431]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
[quot Vlad F#22395387]
Наталья87

P.S. И где только работодатели берут таких, талантливых?
Вот ваш покорный слуга, к примеру, уже два года как не может работу по профилю найти,
Смешно сказать, пришлось с мая на бейсик с акцессом перейти.
Увы нам.((


Думаю, разница в зарплате все объясняет.
Может, вы к нам на 40 тысяч в месяц работать пойдете программистом? Неплохая зарплата в целом но для IT как я понимаю это копейки ...
Хочется больше, но что то голова не варит совсем. Только на написание такого кода как есть хватает ...
12 ноя 21, 23:41    [22395434]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1451
Наталья87,

Не, на 40 тысяч, - решительно не пойду. У меня уже здоровье не на столько крепкое.
И, снова, маленькие дети.

P.S. Вот, разве что, консультантом.))

Сообщение было отредактировано: 13 ноя 21, 00:00
12 ноя 21, 23:52    [22395442]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Vlad F> Вот ваш покорный слуга, к примеру, уже два
Vlad F> года как не может работу по профилю найти

Ты вроде как переезжал для этого, с прицелом на Магнит IIRC?

Posted via ActualForum NNTP Server 1.5

13 ноя 21, 11:12    [22395497]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Наталья87> У меня такой код, что открывает транзакции,
Наталья87> которые долго висят - например, в ожидании
Наталья87> диалогов пользователя. Очень удобно.

Вам может и удобно, а в многопользовательской среде
это неправильно. Правильнее делать короткие транзакции
"когда нужно" - т.е. при закрытии диалогового окна, а не
перед его открытием. Изучайте инструменты, которые
пользуете, знания сами собой не нарисуются...

Posted via ActualForum NNTP Server 1.5

13 ноя 21, 11:14    [22395498]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Cobalt747
Member

Откуда:
Сообщений: 2376
Наталья87
Гаджимурадов Рустам
Наталья87> Другое дело в случае с правильно настроенным FireDAC.
Вы уже пробовали протестировать на реальном
примере или это умозрительные рассуждения?


Именно на реальном примере. Всё работает действительно быстрее. Раза в два как минимум.
Причём из коробки. А с несчастным IBX можно применять множественные запросы в теле одного запроса, кэширования и прочие ухищрения - но все равно на FireDAC в итоге всё работает быстрее и лучше.
Не могли бы вы привести код этих двух примеров?
Хочется тоже поковыряться в этом - мы тоже используем Firebird+IBX
13 ноя 21, 11:46    [22395504]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Наталья87
Хочется больше, но что то голова не варит совсем.

Вот поэтому-то к старости человек и приучается не делать всё разом, а разбивать
работу на маленькие части. Желательно изолированные друг от друга, чтобы ошибка
в одной части не обрушила всё. Переводите по одной форме за раз. И
научитесь-таки пользоваться СКВ.

Posted via ActualForum NNTP Server 1.5

13 ноя 21, 14:19    [22395555]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9993
kdv
Так вот - а что вы будете делать, если FireDAC не будет поддерживать расширений Firebird 4.0 по типам данных?

Надо будет установить RAD Studio 11 Update 1, когда он выйдет :)
13 ноя 21, 14:48    [22395563]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9993
ъъъъъ
Зато ibx/fib+ умеют сервисные вещи делать. Бэкапы-ресторы, валидацию т .д.
А FireDAC не умеет. Ну, раньше не умел. Сейчас, возможно, уже умеет.

Эксперт, RTFM !
https://docwiki.embarcadero.com/Libraries/Alexandria/en/FireDAC.Phys.IBBase
https://docwiki.embarcadero.com/Libraries/Alexandria/en/FireDAC.Phys.FB
13 ноя 21, 14:52    [22395566]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
Dmitry Arefiev,

Крутяк! :)
13 ноя 21, 15:42    [22395584]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Гаджимурадов Рустам

Вам может и удобно, а в многопользовательской среде
это неправильно. Правильнее делать короткие транзакции
"когда нужно" - т.е. при закрытии диалогового окна, а не
перед его открытием. Изучайте инструменты, которые
пользуете, знания сами собой не нарисуются...


У меня больше 3-х пользователей одновременно к базе практически не бывает. Генераторы легко решают проблемы конфликтов одновременного доступа. Держать транзакцию открытой просто удобно - программный код становится проще. Благо Firebird это позволяет - причём позволяет гораздо в большей степени чем какая либо другая СУБД, раз уж сделан выбор в пользу этой многоверсионной СУБД не вижу смысла не пользоваться её преимуществами.

Сообщение было отредактировано: 14 ноя 21, 00:24
14 ноя 21, 00:21    [22395735]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Cobalt747
Не могли бы вы привести код этих двух примеров?
Хочется тоже поковыряться в этом - мы тоже используем Firebird+IBX


А нет уже этого кода. Эксперименты делались в 2017 году. За это время уже и комп поменялся, мусор и разные временные куски кода небыло смысла переносить.
14 ноя 21, 00:33    [22395737]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
DmSer

Варианты решения проблемы:
1) работать в режиме RDP. С этом случае на терминалом сервере Windows может быть запущено множество экземпляров программы под учётными записями пользователей. Базу данных можно разместить на том же либо на соседнем сервере. Проблемы с подключением оборудования (и пробросом его на рабочие места операторов) так или иначе решаются.
2) вводить дополнительный сервер, общаться с ним, например с помощью rest-запросов (например, с передачей json-пакетов). В одном rest-запросе можно запросить сразу несколько таблиц. Использовать для наиболее критических участков программы.
3) переделывать наиболее критические участки (циклическая обработка большого количества записей таблицы) на хранимые процедуры либо EXETUTE BLOCK
5) кэшировать справочники в памяти программы, периодически читая последние изменения из БД.


Это уже было частично сделано. Но всё равно тормозит. И всё это разное кэширование и код программы очень сильно усложняет и багов добавляет. Вариант рабочий разве что с RDP.
14 ноя 21, 01:12    [22395739]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
Наталья87
Гаджимурадов Рустам

Вам может и удобно, а в многопользовательской среде
это неправильно. Правильнее делать короткие транзакции
"когда нужно" - т.е. при закрытии диалогового окна, а не
перед его открытием. Изучайте инструменты, которые
пользуете, знания сами собой не нарисуются...


У меня больше 3-х пользователей одновременно к базе практически не бывает. Генераторы легко решают проблемы конфликтов одновременного доступа. Держать транзакцию открытой просто удобно - программный код становится проще. Благо Firebird это позволяет - причём позволяет гораздо в большей степени чем какая либо другая СУБД, раз уж сделан выбор в пользу этой многоверсионной СУБД не вижу смысла не пользоваться её преимуществами.
Плюс версионника - отнюдь не в возможности держать долгие транзакции, а в отсутствии блокировок при SELECT (и то есть нюансы).
А если транзакции будут долго висеть - то главная проблема, которая возникнет - будут накапливаться именно эти самые версии, и в итоге база обязательно станет колом.
При чем это случится даже если у вас 1 пользователь.
Есть в FB лазейка для "открытых подолгу гридов" - read only read commited транзакции. Именно read only. Но даже так - это плохо и проблемы будут возможны - как минимум, это издевательство над сервером.
Но если у вас пишущие транзакции висят - то крах вообще неминуем.

Вом не зря дали совет почитать об инструменте, который используете.
14 ноя 21, 02:18    [22395744]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1451
YuRock
крах вообще неминуем.


Ну запугал, так запугал.))
Так понимаю, что там многолетние агиевы конюшни, но краха пока нет как нет.
14 ноя 21, 09:27    [22395755]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1451
Наталья87
Cobalt747
Не могли бы вы привести код этих двух примеров?
Хочется тоже поковыряться в этом - мы тоже используем Firebird+IBX

А нет уже этого кода. Эксперименты делались в 2017 году. За это время уже и комп поменялся, мусор и разные временные куски кода небыло смысла переносить.

Наталья, имхо, тогда была допущена существенная ошибка в экспериментах. К чему народ и пытается вас аккуратно подвести.
Не может FireDAC работать с FB быстрее IBX. Его преимущества в другом.
14 ноя 21, 09:33    [22395756]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
Vlad F
Так понимаю, что там многолетние агиевы конюшни, но краха пока нет как нет.
Ну значит одно из двух:
1. Транзакции таки ридонли
2. Настроено что-то вроде еженощного бэкап-рестора базы.

В других случаях не вижу, как такая база может прожить больше нескольких дней. Если отключить sweep-интервал - месяцев.
14 ноя 21, 12:51    [22395796]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1451
YuRock,

При отсутствии конкурирующих транзакций, запускаемых вслед за текущей активной, длительность ее активности не играет никакой деструктивной роли.))
14 ноя 21, 13:05    [22395798]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Vlad F

Не может FireDAC работать с FB быстрее IBX. Его преимущества в другом.


Я уже все поняла. Не буду переходить с IBX на FireDAC, оно того не стоит. Тем более по методу от Dimitry Sibiryakov. Лучше не тратить на это время, а сам проект развивать, там непаханое поле.
14 ноя 21, 13:57    [22395816]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
YuRock
Vlad F
Так понимаю, что там многолетние агиевы конюшни, но краха пока нет как нет.
Ну значит одно из двух:
1. Транзакции таки ридонли
2. Настроено что-то вроде еженощного бэкап-рестора базы.

В других случаях не вижу, как такая база может прожить больше нескольких дней. Если отключить sweep-интервал - месяцев.


Нормально всё живёт годами. Вы наверное про какие то высоконагруженные системы. С моими базами одновременно работает 2-3 пользователя, ну иногда максимум 10, да и то разве что в порядке исключения. Если база замусоривается, файл растёт в размерах и производительность падает - это легко решается обычным Backup&Restore. В общем, Firebird - простая и удобная СУБД, при разработке продуктов для малого бизнеса просто идеальна, за что её думаю и ценят. При этом она вполне на уровне "взрослых" СУБД хоть и имеет какие-то недостатки, но в случае малого бизнеса (а не высоконагруженных систем) они несущественны. За всё время работы из всех недостатков только два обнаружила - снижение скорости работы со временем, по этой причине необходимость периодически делать backup&restore; невосстановимые бэкапы, что не дает встроить в продукт загрузку данных из бэкапов для юзеров; ну и еще базы периодически повреждаются при отключении света - но так чтобы часто это не недостаток Firebird думаю у остальных СУБД с этим не лучше а может еще и хуже тк многоверсионник по типу Firebird убить отключениями света по идее сложнее.
14 ноя 21, 14:04    [22395822]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1504
Наталья87
ну и еще базы периодически повреждаются при отключении света
Наталья, а что, источника бесперебойного питания (UPS) нет на компьютере (p.s. правильнее наверное написать - для компьютера), на котором БД?

Сообщение было отредактировано: 14 ноя 21, 14:35
14 ноя 21, 14:34    [22395833]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Наталья87
Не буду переходить с IBX на FireDAC, оно того не стоит. Тем более по методу от
Dimitry Sibiryakov. Лучше не тратить на это время, а сам проект развивать, там
непаханое поле.

С Вашей любовью к обёрткам имеет смысл переходить на прямое использование
Firebird API. Вот там выигрыш может быть заметным.

Posted via ActualForum NNTP Server 1.5

14 ноя 21, 14:48    [22395841]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
Vlad F
YuRock,

При отсутствии конкурирующих транзакций, запускаемых вслед за текущей активной, длительность ее активности не играет никакой деструктивной роли.))
Сборщик мусора, запустившись, не будет ничего делать для транзакций с номером больше первой активноф. Это уже очень деструктивная роль.
14 ноя 21, 14:57    [22395843]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Самое деструктивное для Firebird - идиоты, путающие Garbage Collector и Sweep.

Posted via ActualForum NNTP Server 1.5

14 ноя 21, 14:59    [22395845]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
Наталья87
За всё время работы из всех недостатков только два обнаружила - снижение скорости работы со временем, по этой причине необходимость периодически делать backup&restore
Понятно.
Так "работать" возможно, пока у вас маленькая база. Впрочем, возможно, она у вас будет и оставаться маленькой.
14 ноя 21, 15:01    [22395846]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
Dimitry Sibiryakov
Самое деструктивное для Firebird - идиоты, путающие Garbage Collector и Sweep.
Да от этого он аж загибается.
14 ноя 21, 15:03    [22395848]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 13358
Dimitry Sibiryakov
С Вашей любовью к обёрткам имеет смысл переходить на прямое использование Firebird API. Вот там выигрыш может быть заметным.
Ты уверен, что ТС осилит реализацию TDataSet?
14 ноя 21, 16:39    [22395878]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

_Vasilisk_
Ты уверен, что ТС осилит реализацию TDataSet?

Ты бы видел что она творила пытаясь заставить кнопки быть зелёными и отображать
русский интерфейс на винде без поддержки русского языка... По сравнению с этим,
TDataSet - сущая мелочь. В любом случае уже в этом топике она была готова его
реализовать как мост к ФайерДаку.

Posted via ActualForum NNTP Server 1.5

14 ноя 21, 16:53    [22395886]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
s62
Наталья87
ну и еще базы периодически повреждаются при отключении света
Наталья, а что, источника бесперебойного питания (UPS) нет на компьютере (p.s. правильнее наверное написать - для компьютера), на котором БД?


Ну там где есть - очевидно, не повреждаются. Но пользователей сотни у кого есть, у кого нет. В 90% случаях gbak-ом восстанавливаются из автоматических резервных копий с потерей пары дней работы. В оставшихся 10% случаях (когда все так плохо и настолько повреждено, что даже автоматические резервные копии уже долго не делались или умер диск вместе с базой и с резервными копиями) - как правило, проще начать с нуля, тк восстановление экспертами с IBExpert или разными сургеонами выйдет в круглую сумму.
14 ноя 21, 19:23    [22395941]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
Dimitry Sibiryakov> TDataSet - сущая мелочь. В любом случае уже в этом топике она была готова его реализовать как мост к ФайерДаку.

Уверенность в готовности - не есть готовность.
14 ноя 21, 19:24    [22395942]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov

отображать русский интерфейс на винде без поддержки русского языка...


Ну тут все-таки переход на юникодную Delphi лучше, чем насиловать Delphi 2007. На Delphi 2007 все эти костыли всё равно через раз работают и по-нормальному как на юникодной Delphi все равно не будет.
14 ноя 21, 19:26    [22395943]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
_Vasilisk_
Dimitry Sibiryakov
С Вашей любовью к обёрткам имеет смысл переходить на прямое использование Firebird API. Вот там выигрыш может быть заметным.
Ты уверен, что ТС осилит реализацию TDataSet?


Скорее всего, нет. Т. к. смотрю, скажем, в DB.pas, читаю и вижу фигу. Чужой код вообще плохо читается. Хотя была идея работать напрямую с базой на сервере (через gds32.dll) и создать что-то на базе TTcpSocket чтобы сделать что-то типа своего сервера, который бы обращался к Firebird. Но теперь думаю, что скорее всего оно того не стоит, быстрее чем IBSQL (а не IBQuery, который не нужно использовать) не будет.

В FireDAC кстати правильно настроенный аналог IBQuery (TFdQuery) работает примерно с той же скоростью, что IBSQL в IBX. Оттого и кажется что гриды на FireDAC могли бы быстрее отображаться (тк сравнивать надо не TFdQuery и IBSQL, а TFdQuery и TIBQuery). А в IBX - конечно есть IBSQL - но DataSource и гриды ведь всё равно требуют медленный TIBQuery.
14 ноя 21, 19:36    [22395946]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 63461
Наталья87> Ну тут все-таки переход на юникодную
Наталья87> лучше, чем насиловать Delphi 2007.

Да не может такого быть! Неужели?

Posted via ActualForum NNTP Server 1.5

14 ноя 21, 19:39    [22395947]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Сергей Фролов
Member

Откуда:
Сообщений: 1608
Народ, вы ж самого главного не увидели за все 4 страницы и за почти 3 дня.

Наталья87
Проблема в том, что медленно работает при подключении к базам данных через Интернет-соединение.

Не важно что там из DAC используется, проблема в том, что Firebird не умеет через Интернет. Ни по скорости, ни по отсутствию шифрования. И рефакторинг делай/не делай не поможет увеличению скорости. Во всяком случае заметному.
14 ноя 21, 21:27    [22395972]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Vlad F
Member

Откуда:
Сообщений: 1451
Сергей Фролов,

Мы все сразу увидели, ты из контекста не вырывай. Приведи ее полностью, в части сравнения в этом плане IBX и FireDAC.

Сообщение было отредактировано: 14 ноя 21, 22:04
14 ноя 21, 21:59    [22395982]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Сергей Фролов
проблема в том, что Firebird не умеет через Интернет. Ни по скорости, ни по
отсутствию шифрования.

Умеет. И по скорости, и по шифрованию. Загвоздка только в прокладке неподходящей
конфигурации.

Posted via ActualForum NNTP Server 1.5

14 ноя 21, 23:06    [22396002]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov

Сергей Фролов
проблема в том, что Firebird не умеет через Интернет. Ни по скорости, ни по
отсутствию шифрования.

Умеет. И по скорости, и по шифрованию. Загвоздка только в прокладке неподходящей
конфигурации.


И даже умеет работать при нестабильном коннекте? Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит?
14 ноя 21, 23:23    [22396003]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Наталья87
Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты
теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит?

"Фантастика в соседнем отделе". В TCP пакеты теряться не могут. Их потеря
приводит к разрыву соединения и с этим ни один stateful протокол не справится по
определению.

Зря Вы не стали писать свой собственный сокет-сервер. Получили бы неоценимый опыт.

Posted via ActualForum NNTP Server 1.5

14 ноя 21, 23:26    [22396004]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov

Наталья87
Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты
теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит?

"Фантастика в соседнем отделе". В TCP пакеты теряться не могут. Их потеря
приводит к разрыву соединения и с этим ни один stateful протокол не справится по
определению.

Зря Вы не стали писать свой собственный сокет-сервер. Получили бы неоценимый опыт.


Да - но попробуй это объясни пользователям. Они говорят "интернет есть", а когда им говоришь про необходимость непрерывного бесперебойного соединения для клиент-серверных программ - считают, что им голову морочат ведь сбербанк онлайн, видеосистемы, тимвивер и прочее работают.
15 ноя 21, 00:30    [22396007]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
Наталья87
медленно работает


Наталья87
скорость его работы существенно возрастёт


Наталья87
Всё работает действительно быстрее.


Наталья87
всё работает быстрее



Наталья87
быстрее отображаются

Наталья87
А если не быстрее - зачем тогда он нужен вообще этот

...
Оптимизатор вернулся?
Возможно, сменив пол (но это не точно).
15 ноя 21, 00:53    [22396009]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Gluck99
Member

Откуда: Оттуда
Сообщений: 1191
Наталья87
И даже умеет работать при нестабильном коннекте? Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит?
При "нестабильном коннекте" надо обращаться к сисадмину, чтобы он починил сеть. Если сисадмин отвечает, что "всё в порядке, яндекс открывается" - уволить некомпетентного сисадмина и взять компетентного, чтобы он привёл сеть в порядок.
15 ноя 21, 02:20    [22396013]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Просто Вы масштабы проблемы видимо не поняли. При локальном коннекте и даже при сетевом всё работает нормально. Но стоит только сделать подключение к базе через Интернет (используя какой нибудь Хамачи). Хорошо если проводной Интернет, а не какой-нибудь 3G/4G. То всё начинает жутко тормозить. Пинг между компьютерами может быть всего 50 миллисекунд. Но при этом каждое обращение к базе может занимать 200 миллисекунд. Обращений таких при открытии разделов множество и не надо говорить про потоки, это поможет разве что добавить глюков в программу. А при выполнении операций еще больше (там запросов туда-сюда гоняется очень много и всё последовательно). Надо, конечно, оптимизировать всё и возможно, всё переписывать - но это в идеальном мире. Знаю и видела на прошлой работе, что в 1С для этого придумали что то типа &НаСервере, &НаКлиенте (правда с этими &НаСервере башку можно сломать). А по итогу разделы открываются по 5 секунд, а разные операции могут занимать и по 30 секунд - при пинге через черную командную строку в 50 мс. Притом что при подключении по Team Viewer или через RDP если работать с базой локально или в локальной сети всё практически мгновенно. Ускорить бы этот неоптимальный код раза в 2 просто переходом с IBX на FireDAC но похоже, что это не спасёт. А так делать, конечно, мне нечего как оптимизировать код ради оптимизации.

Сообщение было отредактировано: 15 ноя 21, 02:29
15 ноя 21, 02:28    [22396014]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Gluck99
Наталья87
И даже умеет работать при нестабильном коннекте? Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит?
При "нестабильном коннекте" надо обращаться к сисадмину, чтобы он починил сеть. Если сисадмин отвечает, что "всё в порядке, яндекс открывается" - уволить некомпетентного сисадмина и взять компетентного, чтобы он привёл сеть в порядок.


Так в локальной сети же всё нормально. Проблемы если подключаться к базе через Интернет. И не каждый админ возьмется такое настроить.
15 ноя 21, 02:30    [22396015]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
Наталья87
проводной Интернет...Пинг ... всего 50 миллисекунд.

Наталья87
Так в локальной сети же всё нормально.

В локальной сети - пинг тоже "всего" 50 мс?
15 ноя 21, 02:40    [22396016]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
Наталья87
Просто Вы масштабы проблемы видимо не поняли. При локальном коннекте и даже при сетевом всё работает нормально. Но стоит только сделать подключение к базе через Интернет (используя какой нибудь Хамачи). Хорошо если проводной Интернет, а не какой-нибудь 3G/4G. То всё начинает жутко тормозить. Пинг между компьютерами может быть всего 50 миллисекунд. Но при этом каждое обращение к базе может занимать 200 миллисекунд. Обращений таких при открытии разделов множество и не надо говорить про потоки, это поможет разве что добавить глюков в программу. А при выполнении операций еще больше (там запросов туда-сюда гоняется очень много и всё последовательно). Надо, конечно, оптимизировать всё и возможно, всё переписывать - но это в идеальном мире. Знаю и видела на прошлой работе, что в 1С для этого придумали что то типа &НаСервере, &НаКлиенте (правда с этими &НаСервере башку можно сломать). А по итогу разделы открываются по 5 секунд, а разные операции могут занимать и по 30 секунд - при пинге через черную командную строку в 50 мс. Притом что при подключении по Team Viewer или через RDP если работать с базой локально или в локальной сети всё практически мгновенно. Ускорить бы этот неоптимальный код раза в 2 просто переходом с IBX на FireDAC но похоже, что это не спасёт. А так делать, конечно, мне нечего как оптимизировать код ради оптимизации.
Чтобы нормально работать на 3G, надо переходить на HTTP. Протокол Firebird для этого слабо подходит.
15 ноя 21, 02:52    [22396017]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
Наталья87,

раз "в локальной сети все работает отлично", то тебя спасет терминальный сервер.
Ничего переписывать не придется.
15 ноя 21, 02:55    [22396018]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4936
ъъъъъ
Ничего переписывать не придется.
Я бы не был так уверен.
Есть всякие любители читать/писать в инифайлы "рядом с экзешником".
Но, да, это минимальные проблемы.
15 ноя 21, 03:54    [22396019]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

Наталья87
Проблемы если подключаться к базе через Интернет.

Так "интернет" или "хамачи"? Это реально две разные вещи...

Posted via ActualForum NNTP Server 1.5

15 ноя 21, 13:51    [22396190]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
YuRock
в инифайлы "рядом с экзешником".

Это да, бывает.
15 ноя 21, 13:55    [22396195]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791
YuRock
Чтобы нормально работать на 3G, надо переходить на HTTP.

С учётом криворукости современных уэб-программистов, наворачивающих CSS на десять мегабайт и втыкающих xquery в каждую дыру по поводу или без - бесполезно, 3G от них ляжет точно так же.

ъъъъъ
тебя спасет терминальный сервер.

Из табачного киоска через хамачу? Не спасёт.

Сообщение было отредактировано: 15 ноя 21, 14:35
15 ноя 21, 14:28    [22396208]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
bk0010
Member

Откуда:
Сообщений: 5126
Наталья87
Пинг между компьютерами может быть всего 50 миллисекунд. Но при этом каждое обращение к базе может занимать 200 миллисекунд.
Попробуйте обойтись без имен компьютеров, чистыми IP-адресами и портами в виде числа, а не имени сервиса. Может помочь, если DNS кривой.
15 ноя 21, 21:51    [22396409]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 13358
bk0010
Может помочь, если DNS кривой.
Помочь чем? Уменьшить время коннекта? Наверное. А вот на скорость обмена пакетами это не повлияет аж вообще никак
15 ноя 21, 22:44    [22396411]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
bk0010
Member

Откуда:
Сообщений: 5126
_Vasilisk_
Помочь чем? Уменьшить время коннекта? Наверное. А вот на скорость обмена пакетами это не повлияет аж вообще никак
Ну да: вполне может быть, что у нее 150 мс уходит на разрешение имени сервера и за 50 передаются данные.
16 ноя 21, 21:23    [22396696]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2657
bk0010,

"разрешение имени" требуется один раз, при коннекте, а у ТС запросы тормозят.
16 ноя 21, 21:30    [22396703]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Наталья87
Member

Откуда:
Сообщений: 114
Dimitry Sibiryakov

_Vasilisk_
Ты уверен, что ТС осилит реализацию TDataSet?

Ты бы видел что она творила пытаясь заставить кнопки быть зелёными и отображать
русский интерфейс на винде без поддержки русского языка... По сравнению с этим,
TDataSet - сущая мелочь. В любом случае уже в этом топике она была готова его
реализовать как мост к ФайерДаку.


Вообще-то изначальная идея была другой.

Как правило, при разработке проекта на форму кидаются

TIBTransaction, TIBQuery, TIBDataSource и так далее. В принципе ведь можно делать приложение и без использования визуального редактора форм - а создавая данные объекты вручную.

Так вот - идея была в том, чтобы при каждом OnCreate какой-либо формы пройтись по всем обьектам формы, найти объекты TIBTransaction, TIBQuery и т. д., уничтожить и создать на их месте TFbConnection и т. д. И в свойствах гридов тоже - проверить, что Delphi прописал, удалить это и прописать то же самое - но на основе FireDAC.

То есть фактически - имитировать создание объектов "ручками". Ну а если код какой перестанет работать - понять, что именно перестало работать и возможно, создать обёртки. Это кажется проще, чем создавать полноценный мост - но судя по всему - тоже задача непростая ...
18 ноя 21, 14:13    [22397496]     Ответить | Цитировать Сообщить модератору
 Re: Перевод проекта с IBX на FireDAC  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 985
Во че есть
https://delphiparser.com/
автор
DELPHI PARSER is A Software Utility Robot & Development Full Kit Solution Specializing in Automatic Code Refactoring.

It is designed & aimed to Modernize Database Oriented Software Legacy Systems build with Borland Delphi or C++ Builder in the mid 1990’s using ClientServer architecture.

Embarcadero recommends the use of the DELPHI PARSER for Upgrading Legacy Software Systems from any Delphi or C++ Builder version using BDE (or any other Data-Aware component) to latest RAD Studio 10.1 Berlin using FireDAC. The Delphi Parser is powered by PACIFITY Technologies Ltd. An Official Embarcadero’s Tech Partner.
19 ноя 21, 17:22    [22398059]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4 5      [все]
Все форумы / Delphi Ответить