|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Есть большой проект на 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.11.2021, 13:37 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87, Переход на Firedac не поможет. Проблема в Firebird. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:39 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Сергей Фролов Наталья87, Переход на Firedac не поможет. Проблема в Firebird. Если заново делать на базе FireDAC - работает всё значительно быстрее. Проблема в том, что переписывать код 400 форм это несколько месяцев работы. Потому и хочется какого-то решения - как перейти с IBX на FireDAC, не переписывая приложение. Уходить с Firebird в планах нет, у каждой СУБД есть плюсы и минусы, Firebird не является какой-то особо плохой СУБД (минусы у Firebird есть - но например, у Firebird зато выдающаяся работа с транзакциями, это многоверсионник так что какая СУБД хуже какая лучше можно оставить за рамками данной темы). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:42 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Сергей ФроловПроблема в Firebird. Не совсем, но переход действительно не поможет. Аффтарше вообще ничего не поможет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:47 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87> Другое дело в случае с правильно настроенным FireDAC. Вы уже пробовали протестировать на реальном примере или это умозрительные рассуждения? > Есть ли какое-нибудь готовое решение для этого Вряд ли. У FireDAC был IIRC некий мигратор с BDE, но сомневаюсь, что есть нечто подобное с IBX и т.п. P.S. Сначала попробуйте различные решения, не требующие изменения кода - ZeBeDee, VPN и пр. Если не поможет - тогда думайте менее "активном" взаимодействии клиента с сервером, bried-case и пр. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:47 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамP.S. Сначала попробуйте различные решения, не требующие изменения кода - ZeBeDee, VPN и пр. Мёртвому припарка. Протокол в Firebird 2.5 был оптимизирован под способ, которым его использует IBX. В тройке добавили сжатие, что делает бесполезным ЗиБиДи. Если даже с этим оно работает медленно - нужно рихтовать архитектуру, а у аффтарши "400 тысяч строк". (Хотя мы-то помним, что большая часть из них это хаки для стандартных компонент чтобы заставить их работать так как разработчикам и в страшном сне не могло присниться.) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 13:53 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Наталья87> Другое дело в случае с правильно настроенным FireDAC. Вы уже пробовали протестировать на реальном примере или это умозрительные рассуждения? Именно на реальном примере. Всё работает действительно быстрее. Раза в два как минимум. Причём из коробки. А с несчастным IBX можно применять множественные запросы в теле одного запроса, кэширования и прочие ухищрения - но все равно на FireDAC в итоге всё работает быстрее и лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:01 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov (Хотя мы-то помним, что большая часть из них это хаки для стандартных компонент чтобы заставить их работать так как разработчикам и в страшном сне не могло присниться.) Нет - бОльшая часть кода - это формы, построенные на базе TIBDatabase, TIBTransaction, TIBQuery, TDataSource, TDBGrid ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:02 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Гаджимурадов РустамP.S. Сначала попробуйте различные решения, не требующие изменения кода - ZeBeDee, VPN и пр. Мёртвому припарка. Протокол в Firebird 2.5 был оптимизирован под способ, которым его использует IBX. В тройке добавили сжатие, что делает бесполезным ЗиБиДи. Если даже с этим оно работает медленно - нужно рихтовать архитектуру, а у аффтарши "400 тысяч строк". (Хотя мы-то помним, что большая часть из них это хаки для стандартных компонент чтобы заставить их работать так как разработчикам и в страшном сне не могло присниться.) Имеет смысл перейти с Firebird 2.5 на Firebird 3.0? Ну так это в планах. Но задачу, описанную в рамках данной темы - всё равно придётся решать. Чтобы с IBX перейти на FireDAC. Неужели разработчики FireDAC не предусмотрели каких нибудь оберток для перехода со старого кода? IBX по сути не такой уж сложный чтобы его как надо обернуть ... может, на GitHub что-нибудь для этого есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:06 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87> Именно на реальном примере. Всё работает Наталья87> действительно быстрее. Раза в два как минимум. Что ж, удачи в переезде. Сообщите о результатах, ради интереса. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:07 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87> бОльшая часть кода - это формы, построенные Наталья87> на базе TIBDatabase, TIBTransaction, TIBQuery Формы не строят "на базе DB-компонент". Коннект у вас один, надеюсь, или тоже у каждой формы свой? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:08 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Наталья87> Именно на реальном примере. Всё работает Наталья87> действительно быстрее. Раза в два как минимум. Что ж, удачи в переезде. Сообщите о результатах, ради интереса. Так переезд не получается. Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC. Неужели только вариант самостоятельно писать? Понятно что если писать с нуля то надо использовать Firebird 3.0 и FireDAC, но уже используется Firebird 2.5 и IBX ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:10 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87> Неужели разработчики FireDAC не предусмотрели Наталья87> каких нибудь оберток для перехода со старого кода? Разработчик FireDAC сюда заглядывает, может прокомментирует... Но вообще да, недоработка, должна быть и обёртка для перехода, и обёртка для оптимизации, и обёртка для сделать хорошо. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:11 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Наталья87> бОльшая часть кода - это формы, построенные Наталья87> на базе TIBDatabase, TIBTransaction, TIBQuery Формы не строят "на базе DB-компонент". Коннект у вас один, надеюсь, или тоже у каждой формы свой? Коннект один - TIBDatabase. Как и положено, не в обычной форме, а в DataModule. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:11 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Наталья87> Другое дело в случае с правильно настроенным FireDAC. Сначала попробуйте различные решения, не требующие изменения кода - ZeBeDee, VPN и пр. Если не поможет - тогда думайте менее "активном" взаимодействии клиента с сервером, bried-case и пр. Все, что можно было сделать в этом направлении - уже сделано. IBX уже "хакнутый". Но все равно так быстро, как FireDAC, не работает ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:14 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87> Нужны обертки-переходники классов для Наталья87> IBX чтобы они работали на базе FireDAC. Как Вы себе это представляете? Чтобы Вы в коде вызывали свойства/методы классов IBX, а они - невидимо и самостоятельно - "заменялись" на методы/свойства FireDAC? Или как? Ну, мне так, для себя ... (с) КВН Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:14 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87> IBX уже "хакнутый". Но все равно так быстро, как FireDAC, не работает ... В топик призывается МП. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:15 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
ReplaceStr('TIB', 'TFD', [ReplaceAll]) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:15 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Как Вы себе это представляете? Чтобы Вы в коде вызывали свойства/методы классов IBX, а они - невидимо и самостоятельно - "заменялись" на методы/свойства FireDAC? Или как? Да - именно так. Написать модуль - наследники классов IBX, чтобы они использовали FireDAC. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:18 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal ReplaceStr('TIB', 'TFD', [ReplaceAll]) Я полагаю, может сработать. Но по сложности и подводным камням будет сопоставимо с переходом с D2007 на D XE8. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:20 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC. Не нужны. Просто кладёте TFDConnection рядом с TIBConnection, одной строчкой кода шарите им хэндл, а потом не торопясь постепенно заменяете компоненты на формах по одной. Это будет быстрее и надёжнее, чем любый ваши самописные обёртки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:20 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Наталья87Нужны обертки-переходники классов для IBX чтобы они работали на базе FireDAC. Не нужны. Просто кладёте TFDConnection рядом с TIBConnection, одной строчкой кода шарите им хэндл, а потом не торопясь постепенно заменяете компоненты на формах по одной. Это будет быстрее и надёжнее, чем любый ваши самописные обёртки. Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же принципу. Может, так и сделаю ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:22 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Я полагаю, вручную на 2-3 формах заменить Наталья87 Коннект один - TIBDatabase. Как и положено, не в обычной форме, а в DataModule. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:34 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же принципу. Нет. Не пытайтесь умничать и отвлекаться. Ручками. Поэтапно. Каждую форму индивидуально с тестированием после каждой. Иначе времени потратите больше на отлов глюков, которые полезут везде и сразу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:35 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Наталья87Я полагаю, вручную на 2-3 формах заменить, понять, что именно менять нужно, а потом написать скрипт на AutoIt чтобы заменил на остальных формах по такому же принципу. Нет. Не пытайтесь умничать и отвлекаться. Ручками. Поэтапно. Каждую форму индивидуально с тестированием после каждой. Иначе времени потратите больше на отлов глюков, которые полезут везде и сразу. Страшно подумать. Это же жуть, столько ручной работы в век автоматизации. Хочется автоматизировать и написать обёртку ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:43 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Хочется автоматизировать и написать обёртку ... Понятно что хочется, но эти порывы надо давить в зародыше. Ибо времени уйдёт больше, а результат будет хуже. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:47 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
DS> Ибо времени уйдёт больше, а результат будет хуже. +1 Заодно и отрефакторите старый проект - наверняка, там много можно сделать лучше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 14:59 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Наталья87Хочется автоматизировать и написать обёртку ... Понятно что хочется, но эти порывы надо давить в зародыше. Ибо времени уйдёт больше, а результат будет хуже. Вы шутите. Это нереально. Работы на год и тогда уже под вопросом смысл перехода на этот FireDAC ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 15:02 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Вы шутите. Это нереально. Работы на год и тогда уже под вопросом смысл перехода на этот FireDAC ... Я не шучу. Это реальнее, чем любая другая из Ваших идей. Повторяю медленно: переход идёт по одной форме, его скорость не важна, у вас в любой момент полностью рабочий проект . С системой контроля версий была бы ещё и гарантия быстрого отката конкретной проблемы, но да, я помню, что Вы ниасилили эту концепцию. И да, переход на FireDAC возможен только ПОСЛЕ перехода на новую версию дельфи, так что непонятно почему Вы вообще этим озаботились уже сейчас. PS: Вашу накопившуюся гору костылей надо разбирать медленно и очень осторожно. Иначе она обрушится и похоронит Вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 15:08 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Работы на год и тогда уже под вопросом смысл перехода на этот FireDAC ... То, что на FD гриды быстрее отображаются - ложь, не поверю никогда. Если где и может быть быстрее - это где получается одна запись. Возможно, там для этого используется TIBQuery, а надо заменить на TIBSQL. Да и то - не факт, что поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 15:50 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Гаджимурадов Рустам Наталья87> Другое дело в случае с правильно настроенным FireDAC. Вы уже пробовали протестировать на реальном примере или это умозрительные рассуждения? Именно на реальном примере. Всё работает действительно быстрее. Раза в два как минимум. Причём из коробки. А с несчастным IBX можно применять множественные запросы в теле одного запроса, кэширования и прочие ухищрения - но все равно на FireDAC в итоге всё работает быстрее и лучше. Наверняка, такая разница из-за какой-нибудь глупости, типа включенного/выключенного автокоммита или кэширования препарированных запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 16:09 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Вашу накопившуюся гору костылей надо разбирать медленно и очень осторожно. Иначе она обрушится и похоронит Вас. Как сложно было переносить костыли на XE-8 вы даже не представляете. Хотя часть костылей после перехода на XE-8 (а точнее в данный момент - при компиляции проекта на XE-8) стала не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 16:23 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
YuRock Наталья87 Работы на год и тогда уже под вопросом смысл перехода на этот FireDAC ... То, что на FD гриды быстрее отображаются - ложь, не поверю никогда. Если где и может быть быстрее - это где получается одна запись. Возможно, там для этого используется TIBQuery, а надо заменить на TIBSQL. Да и то - не факт, что поможет. Да - используется TIBQuery вместо TIBSQL. Насчет того, что быстрее отображаются гриды - возможно, показалось. А если не быстрее - зачем тогда он нужен вообще этот FireDAC (если он не быстрее IBX)? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 16:26 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov И да, переход на FireDAC возможен только ПОСЛЕ перехода на новую версию дельфи, так что непонятно почему Вы вообще этим озаботились уже сейчас. Вы не поверите. Но хотелось написать класс-обертку, скомпилировать проект на XE-8 с FireDAC, но сохранить возможность работы на IBX (типа чтобы можно было переключать режим IBX/FireDAC). И пока еще несколько месяцев посидеть покодить на Delphi 2007. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 16:30 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Я с BDE переходил на FireDac. Утилита "конвертации" это по большому счёту "replace in files". С некоторой немалой вероятностью в вашем коде ничего такого нет, чтобы его нельзя было перенести автозаменами и поправить руками оставшееся. Поскольку я перешёл именно так, за исключением написания своего TTable "идентичного натуральному BDE по багам". А в моём проекте 1000+ форм только. Но могу ошибаться конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 16:36 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
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.11.2021, 16:51 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87, хотите я вам всё спалю? Так вот - а что вы будете делать, если FireDAC не будет поддерживать расширений Firebird 4.0 по типам данных? Опять рефакторить с FireDAC на модифицированную версию FIBPlus ? Пока, до идеи перенести свой проект на Firebird 4.0, я не вижу никакого смысла менять IBX на FireDAC. Да и то, надо посмотреть, какие именно компоненты (FIBPLus, FireDAC, или еще кто) будут первыми доточены до типов данных FB 4. Пока вроде никакие. p.s. и еще каверзный вопрос - у вас Delphi Enterprise? т.к. разрешение на нелокальный клиент-сервер есть только в Enterprise, а Prof разрешается использовать только "локально", т.е. приложение и ФБ/ИБ на одном компе. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:04 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
kdv Да и то, надо посмотреть, какие именно компоненты (FIBPLus, FireDAC, или еще кто) будут первыми доточены до типов данных FB 4. kdv разрешение на нелокальный клиент-сервер есть только в Enterprise, Я сейчас большую глупость сказал? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:15 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Как сложно было переносить костыли на XE-8 вы даже не представляете. Вы на это растратили год, так что да, представляю. И именно поэтому говорю, что избавиться от них было бы проще и быстрее, чем переносить. Наталья87Вы не поверите. Но хотелось написать класс-обертку, скомпилировать проект на XE-8 с FireDAC, но сохранить возможность работы на IBX (типа чтобы можно было переключать режим IBX/FireDAC). Поверю. Это вполне типичная для Вас линия: тратить время и силы на бесполезные обёртки и костыли вместо методичного и вдумчивого рефакторинга. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:24 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
_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.11.2021, 17:31 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
DS> тратить время и силы на бесполезные обёртки и костыли Ну это для кого бесполезные, а для кого очень даже полезные. Люди сидят, работают, что-то делают, копошатся, зарплату получают и могут ещё год-другой продолжать так копошиться... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:31 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
_Vasilisk_А если докупить его отдельно уже года три как (минимум, я не помню) "клиент-серверная" лицензия FireDAC не продается отдельно, и входит только в Enterprise. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:32 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
kdv> Кошмар-кошмар... Ты как будто в Англии живёшь... Кому нафиг сдалось, что там в этом файлике написано? Никому. И правильно не читают. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:33 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамЛюди сидят, работают, что-то делают, копошатся, зарплату получают и могут ещё год-другой продолжать так копошиться... ты не поверишь, бывает что вообще ничего не делают, и получают зарплату, годами. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:33 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамТы как будто в Англии живёшь... сейчас уже всё равно, что в Англии, что в РФ, что на Кубе, или в Бразилии. Все сидят в интернете, а там без разницы, влияет только часовой пояс. :-) Гаджимурадов РустамКому нафиг сдалось, что там в этом файлике написано? Никому. И правильно не читают. Ну, во-первых, в РФ есть 4я часть ГК. Во-вторых, иностранные компании присутствуют в РФ. В третьих, российские разработчики могут продавать свой софт за рубеж. Ок, как хотите, не читайте дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:36 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
kdv> есть 4я часть ГК. Во-вторых, иностранные компании kdv> присутствуют в РФ. В третьих, российские разработчики kdv> могут продавать свой софт за рубеж. Всем пофиг. И правильно. Ладно, закрыли оффтопик. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 17:41 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
По опыту переноса IBX > UniDAC > FireDAC достаточно больших, миллионнострочных, проектов. Не всё так печально как кажется. Я делал фаром. Переименование + разегребание ошибок компиляции. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 19:15 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
kdv Гаджимурадов РустамЛюди сидят, работают, что-то делают, копошатся, зарплату получают и могут ещё год-другой продолжать так копошиться... ты не поверишь, бывает что вообще ничего не делают, и получают зарплату, годами. Вот... не надо. Лишнего болтать. Прямо уж и годами. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 20:19 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 А если не быстрее - зачем тогда он нужен вообще этот FireDAC (если он не быстрее IBX)? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 20:34 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
YuRock Наталья87 А если не быстрее - зачем тогда он нужен вообще этот FireDAC (если он не быстрее IBX)? Зато ibx/fib+ умеют сервисные вещи делать. Бэкапы-ресторы, валидацию т .д. А FireDAC не умеет. Ну, раньше не умел. Сейчас, возможно, уже умеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 20:54 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
YuRock Наталья87 А если не быстрее - зачем тогда он нужен вообще этот FireDAC (если он не быстрее IBX)? Понятно. Значит, ради ускорения на него переходить не стоит. А от Firebird мне трудно отказаться будет. У меня такой код, что открывает транзакции, которые долго висят - например, в ожидании диалогов пользователя. Очень удобно. Firebird многоверсионник легко такое переваривает. А какой-нибудь MySQL может хоть и лучше в целом но с этим конкретно у него дела хуже. В Firebird конкретно вижу минус один - в том, что Firebird-хостингов мало, куда можно базу залить, а с MySQL - полнО. А для Firebird нужно покупать VPS (пусть даже линуксовый VPS, но все равно дороже обычного хостинга c MySQL). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 21:44 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
kdv Наталья87, Пока, до идеи перенести свой проект на Firebird 4.0, я не вижу никакого смысла менять IBX на FireDAC. Понятно. Поменяю для начала IBQuery на IBX где это возможно. Это малой кровью можно сделать. FireDAC как выяснилось не для скорости нужен как я думала изначально и уж трат ить месяцы чтобы перейти на него наверное не стоит ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 21:48 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Понятно. Поменяю для начала IBQuery на IBX где это возможно ... O tempora, o mores!! P.S. И где только работодатели берут таких, талантливых? Вот ваш покорный слуга, к примеру, уже два года как не может работу по профилю найти, Смешно сказать, пришлось с мая на бейсик с акцессом перейти. Увы нам.(( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 22:18 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья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.11.2021, 23:20 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
DmSer, ты предлагаешь переработать архитектуру здания тому, кто просит совета в выборе клея для обоев? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 23:23 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
DmSer Переход на другую библиотеку компонентов не поможет. Максимум позволит увеличить производительность в пару раз. <...> В пару раз? При переводе с IBX на FireDAC? Во так просто заменой библиотеки (сам то пробовал) ? Show must go on. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 23:37 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
[quot Vlad F#22395387] Наталья87 P.S. И где только работодатели берут таких, талантливых? Вот ваш покорный слуга, к примеру, уже два года как не может работу по профилю найти, Смешно сказать, пришлось с мая на бейсик с акцессом перейти. Увы нам.(( Думаю, разница в зарплате все объясняет. Может, вы к нам на 40 тысяч в месяц работать пойдете программистом? Неплохая зарплата в целом но для IT как я понимаю это копейки ... Хочется больше, но что то голова не варит совсем. Только на написание такого кода как есть хватает ... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 23:41 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87, Не, на 40 тысяч, - решительно не пойду. У меня уже здоровье не на столько крепкое. И, снова, маленькие дети. P.S. Вот, разве что, консультантом.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2021, 23:52 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Vlad F> Вот ваш покорный слуга, к примеру, уже два Vlad F> года как не может работу по профилю найти Ты вроде как переезжал для этого, с прицелом на Магнит IIRC? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2021, 11:12 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87> У меня такой код, что открывает транзакции, Наталья87> которые долго висят - например, в ожидании Наталья87> диалогов пользователя. Очень удобно. Вам может и удобно, а в многопользовательской среде это неправильно. Правильнее делать короткие транзакции "когда нужно" - т.е. при закрытии диалогового окна, а не перед его открытием. Изучайте инструменты, которые пользуете, знания сами собой не нарисуются... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2021, 11:14 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Гаджимурадов Рустам Наталья87> Другое дело в случае с правильно настроенным FireDAC. Вы уже пробовали протестировать на реальном примере или это умозрительные рассуждения? Именно на реальном примере. Всё работает действительно быстрее. Раза в два как минимум. Причём из коробки. А с несчастным IBX можно применять множественные запросы в теле одного запроса, кэширования и прочие ухищрения - но все равно на FireDAC в итоге всё работает быстрее и лучше. Хочется тоже поковыряться в этом - мы тоже используем Firebird+IBX ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2021, 11:46 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Хочется больше, но что то голова не варит совсем. Вот поэтому-то к старости человек и приучается не делать всё разом, а разбивать работу на маленькие части. Желательно изолированные друг от друга, чтобы ошибка в одной части не обрушила всё. Переводите по одной форме за раз. И научитесь-таки пользоваться СКВ. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2021, 14:19 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
kdv Так вот - а что вы будете делать, если FireDAC не будет поддерживать расширений Firebird 4.0 по типам данных? Надо будет установить RAD Studio 11 Update 1, когда он выйдет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2021, 14:48 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
ъъъъъ Зато 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.11.2021, 14:52 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dmitry Arefiev, Крутяк! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2021, 15:42 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Вам может и удобно, а в многопользовательской среде это неправильно. Правильнее делать короткие транзакции "когда нужно" - т.е. при закрытии диалогового окна, а не перед его открытием. Изучайте инструменты, которые пользуете, знания сами собой не нарисуются... У меня больше 3-х пользователей одновременно к базе практически не бывает. Генераторы легко решают проблемы конфликтов одновременного доступа. Держать транзакцию открытой просто удобно - программный код становится проще. Благо Firebird это позволяет - причём позволяет гораздо в большей степени чем какая либо другая СУБД, раз уж сделан выбор в пользу этой многоверсионной СУБД не вижу смысла не пользоваться её преимуществами. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 00:21 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Cobalt747 Не могли бы вы привести код этих двух примеров? Хочется тоже поковыряться в этом - мы тоже используем Firebird+IBX А нет уже этого кода. Эксперименты делались в 2017 году. За это время уже и комп поменялся, мусор и разные временные куски кода небыло смысла переносить. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 00:33 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
DmSer Варианты решения проблемы: 1) работать в режиме RDP. С этом случае на терминалом сервере Windows может быть запущено множество экземпляров программы под учётными записями пользователей. Базу данных можно разместить на том же либо на соседнем сервере. Проблемы с подключением оборудования (и пробросом его на рабочие места операторов) так или иначе решаются. 2) вводить дополнительный сервер, общаться с ним, например с помощью rest-запросов (например, с передачей json-пакетов). В одном rest-запросе можно запросить сразу несколько таблиц. Использовать для наиболее критических участков программы. 3) переделывать наиболее критические участки (циклическая обработка большого количества записей таблицы) на хранимые процедуры либо EXETUTE BLOCK 5) кэшировать справочники в памяти программы, периодически читая последние изменения из БД. Это уже было частично сделано. Но всё равно тормозит. И всё это разное кэширование и код программы очень сильно усложняет и багов добавляет. Вариант рабочий разве что с RDP. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 01:12 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Гаджимурадов Рустам Вам может и удобно, а в многопользовательской среде это неправильно. Правильнее делать короткие транзакции "когда нужно" - т.е. при закрытии диалогового окна, а не перед его открытием. Изучайте инструменты, которые пользуете, знания сами собой не нарисуются... У меня больше 3-х пользователей одновременно к базе практически не бывает. Генераторы легко решают проблемы конфликтов одновременного доступа. Держать транзакцию открытой просто удобно - программный код становится проще. Благо Firebird это позволяет - причём позволяет гораздо в большей степени чем какая либо другая СУБД, раз уж сделан выбор в пользу этой многоверсионной СУБД не вижу смысла не пользоваться её преимуществами. А если транзакции будут долго висеть - то главная проблема, которая возникнет - будут накапливаться именно эти самые версии, и в итоге база обязательно станет колом. При чем это случится даже если у вас 1 пользователь. Есть в FB лазейка для "открытых подолгу гридов" - read only read commited транзакции. Именно read only. Но даже так - это плохо и проблемы будут возможны - как минимум, это издевательство над сервером. Но если у вас пишущие транзакции висят - то крах вообще неминуем. Вом не зря дали совет почитать об инструменте, который используете. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 02:18 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
YuRock крах вообще неминуем. Ну запугал, так запугал.)) Так понимаю, что там многолетние агиевы конюшни, но краха пока нет как нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 09:27 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Cobalt747 Не могли бы вы привести код этих двух примеров? Хочется тоже поковыряться в этом - мы тоже используем Firebird+IBX А нет уже этого кода. Эксперименты делались в 2017 году. За это время уже и комп поменялся, мусор и разные временные куски кода небыло смысла переносить. Наталья, имхо, тогда была допущена существенная ошибка в экспериментах. К чему народ и пытается вас аккуратно подвести. Не может FireDAC работать с FB быстрее IBX. Его преимущества в другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 09:33 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Vlad F Так понимаю, что там многолетние агиевы конюшни, но краха пока нет как нет. 1. Транзакции таки ридонли 2. Настроено что-то вроде еженощного бэкап-рестора базы. В других случаях не вижу, как такая база может прожить больше нескольких дней. Если отключить sweep-интервал - месяцев. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 12:51 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
YuRock, При отсутствии конкурирующих транзакций, запускаемых вслед за текущей активной, длительность ее активности не играет никакой деструктивной роли.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 13:05 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Vlad F Не может FireDAC работать с FB быстрее IBX. Его преимущества в другом. Я уже все поняла. Не буду переходить с IBX на FireDAC, оно того не стоит. Тем более по методу от Dimitry Sibiryakov. Лучше не тратить на это время, а сам проект развивать, там непаханое поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 13:57 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
YuRock Vlad F Так понимаю, что там многолетние агиевы конюшни, но краха пока нет как нет. 1. Транзакции таки ридонли 2. Настроено что-то вроде еженощного бэкап-рестора базы. В других случаях не вижу, как такая база может прожить больше нескольких дней. Если отключить sweep-интервал - месяцев. Нормально всё живёт годами. Вы наверное про какие то высоконагруженные системы. С моими базами одновременно работает 2-3 пользователя, ну иногда максимум 10, да и то разве что в порядке исключения. Если база замусоривается, файл растёт в размерах и производительность падает - это легко решается обычным Backup&Restore. В общем, Firebird - простая и удобная СУБД, при разработке продуктов для малого бизнеса просто идеальна, за что её думаю и ценят. При этом она вполне на уровне "взрослых" СУБД хоть и имеет какие-то недостатки, но в случае малого бизнеса (а не высоконагруженных систем) они несущественны. За всё время работы из всех недостатков только два обнаружила - снижение скорости работы со временем, по этой причине необходимость периодически делать backup&restore; невосстановимые бэкапы, что не дает встроить в продукт загрузку данных из бэкапов для юзеров; ну и еще базы периодически повреждаются при отключении света - но так чтобы часто это не недостаток Firebird думаю у остальных СУБД с этим не лучше а может еще и хуже тк многоверсионник по типу Firebird убить отключениями света по идее сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 14:04 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 ну и еще базы периодически повреждаются при отключении света ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 14:34 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Не буду переходить с IBX на FireDAC, оно того не стоит. Тем более по методу от Dimitry Sibiryakov. Лучше не тратить на это время, а сам проект развивать, там непаханое поле. С Вашей любовью к обёрткам имеет смысл переходить на прямое использование Firebird API. Вот там выигрыш может быть заметным. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 14:48 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Vlad F YuRock, При отсутствии конкурирующих транзакций, запускаемых вслед за текущей активной, длительность ее активности не играет никакой деструктивной роли.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 14:57 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Самое деструктивное для Firebird - идиоты, путающие Garbage Collector и Sweep. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 14:59 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 За всё время работы из всех недостатков только два обнаружила - снижение скорости работы со временем, по этой причине необходимость периодически делать backup&restore Так "работать" возможно, пока у вас маленькая база. Впрочем, возможно, она у вас будет и оставаться маленькой. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 15:01 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Самое деструктивное для Firebird - идиоты, путающие Garbage Collector и Sweep. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 15:03 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov С Вашей любовью к обёрткам имеет смысл переходить на прямое использование Firebird API. Вот там выигрыш может быть заметным. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 16:39 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
_Vasilisk_Ты уверен, что ТС осилит реализацию TDataSet? Ты бы видел что она творила пытаясь заставить кнопки быть зелёными и отображать русский интерфейс на винде без поддержки русского языка... По сравнению с этим, TDataSet - сущая мелочь. В любом случае уже в этом топике она была готова его реализовать как мост к ФайерДаку. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 16:53 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
s62 Наталья87 ну и еще базы периодически повреждаются при отключении света Ну там где есть - очевидно, не повреждаются. Но пользователей сотни у кого есть, у кого нет. В 90% случаях gbak-ом восстанавливаются из автоматических резервных копий с потерей пары дней работы. В оставшихся 10% случаях (когда все так плохо и настолько повреждено, что даже автоматические резервные копии уже долго не делались или умер диск вместе с базой и с резервными копиями) - как правило, проще начать с нуля, тк восстановление экспертами с IBExpert или разными сургеонами выйдет в круглую сумму. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 19:23 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov> TDataSet - сущая мелочь. В любом случае уже в этом топике она была готова его реализовать как мост к ФайерДаку. Уверенность в готовности - не есть готовность. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 19:24 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov отображать русский интерфейс на винде без поддержки русского языка... Ну тут все-таки переход на юникодную Delphi лучше, чем насиловать Delphi 2007. На Delphi 2007 все эти костыли всё равно через раз работают и по-нормальному как на юникодной Delphi все равно не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 19:26 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
_Vasilisk_ Dimitry Sibiryakov С Вашей любовью к обёрткам имеет смысл переходить на прямое использование Firebird API. Вот там выигрыш может быть заметным. Скорее всего, нет. Т. к. смотрю, скажем, в DB.pas, читаю и вижу фигу. Чужой код вообще плохо читается. Хотя была идея работать напрямую с базой на сервере (через gds32.dll) и создать что-то на базе TTcpSocket чтобы сделать что-то типа своего сервера, который бы обращался к Firebird. Но теперь думаю, что скорее всего оно того не стоит, быстрее чем IBSQL (а не IBQuery, который не нужно использовать) не будет. В FireDAC кстати правильно настроенный аналог IBQuery (TFdQuery) работает примерно с той же скоростью, что IBSQL в IBX. Оттого и кажется что гриды на FireDAC могли бы быстрее отображаться (тк сравнивать надо не TFdQuery и IBSQL, а TFdQuery и TIBQuery). А в IBX - конечно есть IBSQL - но DataSource и гриды ведь всё равно требуют медленный TIBQuery. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 19:36 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87> Ну тут все-таки переход на юникодную Наталья87> лучше, чем насиловать Delphi 2007. Да не может такого быть! Неужели? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 19:39 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Народ, вы ж самого главного не увидели за все 4 страницы и за почти 3 дня. Наталья87 Проблема в том, что медленно работает при подключении к базам данных через Интернет-соединение. Не важно что там из DAC используется, проблема в том, что Firebird не умеет через Интернет. Ни по скорости, ни по отсутствию шифрования. И рефакторинг делай/не делай не поможет увеличению скорости. Во всяком случае заметному. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 21:27 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Сергей Фролов, Мы все сразу увидели, ты из контекста не вырывай. Приведи ее полностью, в части сравнения в этом плане IBX и FireDAC. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 21:59 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Сергей Фроловпроблема в том, что Firebird не умеет через Интернет. Ни по скорости, ни по отсутствию шифрования. Умеет. И по скорости, и по шифрованию. Загвоздка только в прокладке неподходящей конфигурации. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 23:06 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Сергей Фроловпроблема в том, что Firebird не умеет через Интернет. Ни по скорости, ни по отсутствию шифрования. Умеет. И по скорости, и по шифрованию. Загвоздка только в прокладке неподходящей конфигурации. И даже умеет работать при нестабильном коннекте? Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 23:23 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит? "Фантастика в соседнем отделе". В TCP пакеты теряться не могут. Их потеря приводит к разрыву соединения и с этим ни один stateful протокол не справится по определению. Зря Вы не стали писать свой собственный сокет-сервер. Получили бы неоценимый опыт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2021, 23:26 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Наталья87Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит? "Фантастика в соседнем отделе". В TCP пакеты теряться не могут. Их потеря приводит к разрыву соединения и с этим ни один stateful протокол не справится по определению. Зря Вы не стали писать свой собственный сокет-сервер. Получили бы неоценимый опыт. Да - но попробуй это объясни пользователям. Они говорят "интернет есть", а когда им говоришь про необходимость непрерывного бесперебойного соединения для клиент-серверных программ - считают, что им голову морочат ведь сбербанк онлайн, видеосистемы, тимвивер и прочее работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 00:30 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 медленно работает Наталья87 скорость его работы существенно возрастёт Наталья87 Всё работает действительно быстрее. Наталья87 всё работает быстрее Наталья87 быстрее отображаются Наталья87 А если не быстрее - зачем тогда он нужен вообще этот ... Оптимизатор вернулся? Возможно, сменив пол (но это не точно). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 00:53 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 И даже умеет работать при нестабильном коннекте? Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 02:20 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Просто Вы масштабы проблемы видимо не поняли. При локальном коннекте и даже при сетевом всё работает нормально. Но стоит только сделать подключение к базе через Интернет (используя какой нибудь Хамачи). Хорошо если проводной Интернет, а не какой-нибудь 3G/4G. То всё начинает жутко тормозить. Пинг между компьютерами может быть всего 50 миллисекунд. Но при этом каждое обращение к базе может занимать 200 миллисекунд. Обращений таких при открытии разделов множество и не надо говорить про потоки, это поможет разве что добавить глюков в программу. А при выполнении операций еще больше (там запросов туда-сюда гоняется очень много и всё последовательно). Надо, конечно, оптимизировать всё и возможно, всё переписывать - но это в идеальном мире. Знаю и видела на прошлой работе, что в 1С для этого придумали что то типа &НаСервере, &НаКлиенте (правда с этими &НаСервере башку можно сломать). А по итогу разделы открываются по 5 секунд, а разные операции могут занимать и по 30 секунд - при пинге через черную командную строку в 50 мс. Притом что при подключении по Team Viewer или через RDP если работать с базой локально или в локальной сети всё практически мгновенно. Ускорить бы этот неоптимальный код раза в 2 просто переходом с IBX на FireDAC но похоже, что это не спасёт. А так делать, конечно, мне нечего как оптимизировать код ради оптимизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 02:28 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Gluck99 Наталья87 И даже умеет работать при нестабильном коннекте? Ну это - когда у клиента "интернет работает, сайты открываются", но пакеты теряются и TIBDatabase, TIBTransaction, TIBQuery и прочее глючит? Так в локальной сети же всё нормально. Проблемы если подключаться к базе через Интернет. И не каждый админ возьмется такое настроить. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 02:30 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 проводной Интернет...Пинг ... всего 50 миллисекунд. Наталья87 Так в локальной сети же всё нормально. В локальной сети - пинг тоже "всего" 50 мс? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 02:40 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Просто Вы масштабы проблемы видимо не поняли. При локальном коннекте и даже при сетевом всё работает нормально. Но стоит только сделать подключение к базе через Интернет (используя какой нибудь Хамачи). Хорошо если проводной Интернет, а не какой-нибудь 3G/4G. То всё начинает жутко тормозить. Пинг между компьютерами может быть всего 50 миллисекунд. Но при этом каждое обращение к базе может занимать 200 миллисекунд. Обращений таких при открытии разделов множество и не надо говорить про потоки, это поможет разве что добавить глюков в программу. А при выполнении операций еще больше (там запросов туда-сюда гоняется очень много и всё последовательно). Надо, конечно, оптимизировать всё и возможно, всё переписывать - но это в идеальном мире. Знаю и видела на прошлой работе, что в 1С для этого придумали что то типа &НаСервере, &НаКлиенте (правда с этими &НаСервере башку можно сломать). А по итогу разделы открываются по 5 секунд, а разные операции могут занимать и по 30 секунд - при пинге через черную командную строку в 50 мс. Притом что при подключении по Team Viewer или через RDP если работать с базой локально или в локальной сети всё практически мгновенно. Ускорить бы этот неоптимальный код раза в 2 просто переходом с IBX на FireDAC но похоже, что это не спасёт. А так делать, конечно, мне нечего как оптимизировать код ради оптимизации. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 02:52 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87, раз "в локальной сети все работает отлично", то тебя спасет терминальный сервер. Ничего переписывать не придется. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 02:55 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
ъъъъъ Ничего переписывать не придется. Есть всякие любители читать/писать в инифайлы "рядом с экзешником". Но, да, это минимальные проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 03:54 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87Проблемы если подключаться к базе через Интернет. Так "интернет" или "хамачи"? Это реально две разные вещи... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 13:51 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
YuRock в инифайлы "рядом с экзешником". Это да, бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 13:55 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
YuRock Чтобы нормально работать на 3G, надо переходить на HTTP. С учётом криворукости современных уэб-программистов, наворачивающих CSS на десять мегабайт и втыкающих xquery в каждую дыру по поводу или без - бесполезно, 3G от них ляжет точно так же. ъъъъътебя спасет терминальный сервер. Из табачного киоска через хамачу? Не спасёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 14:28 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Наталья87 Пинг между компьютерами может быть всего 50 миллисекунд. Но при этом каждое обращение к базе может занимать 200 миллисекунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 21:51 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
bk0010 Может помочь, если DNS кривой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2021, 22:44 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
_Vasilisk_ Помочь чем? Уменьшить время коннекта? Наверное. А вот на скорость обмена пакетами это не повлияет аж вообще никак ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 21:23 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
bk0010, "разрешение имени" требуется один раз, при коннекте, а у ТС запросы тормозят. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 21:30 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov _Vasilisk_Ты уверен, что ТС осилит реализацию TDataSet? Ты бы видел что она творила пытаясь заставить кнопки быть зелёными и отображать русский интерфейс на винде без поддержки русского языка... По сравнению с этим, TDataSet - сущая мелочь. В любом случае уже в этом топике она была готова его реализовать как мост к ФайерДаку. Вообще-то изначальная идея была другой. Как правило, при разработке проекта на форму кидаются TIBTransaction, TIBQuery, TIBDataSource и так далее. В принципе ведь можно делать приложение и без использования визуального редактора форм - а создавая данные объекты вручную. Так вот - идея была в том, чтобы при каждом OnCreate какой-либо формы пройтись по всем обьектам формы, найти объекты TIBTransaction, TIBQuery и т. д., уничтожить и создать на их месте TFbConnection и т. д. И в свойствах гридов тоже - проверить, что Delphi прописал, удалить это и прописать то же самое - но на основе FireDAC. То есть фактически - имитировать создание объектов "ручками". Ну а если код какой перестанет работать - понять, что именно перестало работать и возможно, создать обёртки. Это кажется проще, чем создавать полноценный мост - но судя по всему - тоже задача непростая ... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 14:13 |
|
Перевод проекта с IBX на FireDAC
|
|||
---|---|---|---|
#18+
Во че есть 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.11.2021, 17:22 |
|
|
start [/forum/topic.php?all=1&fid=58&tid=2036862]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
137ms |
get tp. blocked users: |
2ms |
others: | 282ms |
total: | 503ms |
0 / 0 |