Обновить

Комментарии 7

Продакшн? Бэкапы раз в N минут? Реплики? Нет, не слышал.

Пора вам уже закопать стюардессу

Добрый день, статья скорее о последнем средстве спасения данных, чем о том как должно быть правильно

Утилита написана на дельфи неспроста) это было время (2007-2012) когда я работал в аптечной сети, и в каждой аптеке было клиент - серверное приложение, клиент - приложение на Delphi, сервер - FB

Бэкапы были, но иногда так случалось что ломалось вообще все

и вот тогда надо было вытаскивать данные с БД

и тетенькам с бухгалтерии и фармацевтам не скажешь - закапывайте стюардессу

им надо продажи и остатки склада

Так это же сих пор используется или статья историческая?

Используется ли утилита вытаскивания данных из сломанной БД? Если нет бэкапа и БД в невостановимом состоянии - думаю да

Еще раз - это не компонент нормального пайплайна/флоу работы с бд - а самый последний вариант спасения данных.

Раньше была сильно урезанная - вот удалось немного допилить и решил статью написать, вдруг кому то облегчу жизнь

Клиент-сервеные приложения на дельфи все еще используются, на сколько я знаю, у нас в замкадье точно

Нынешнее Delphi это в общем неплохой вариант в клиент-серверных приложениях без заморочек с web. Я использую конечно не fb,а sql server и sqlite. Одно приложение довольно сложное написано как универсальное, в онлайне меняете подключение и можете работать как в сети так локально. Единственное, использую только хранимые процедуры и обработку данных в sql server. C sqlite сложнее разработка, так как приходится работать только через запросы, а это больше труда намного, если нужна обработка данных, как этом приложении, где используется сложный парсинг данных и это не crud приложение. А еще оно получает данные через другое приложение на LabVIEW, посредством связи через общую таблицу в sql server или sqlite в зависимости от подключения. Ну и логи и все такое. Программируемая система тестирования электроники интеллектуальных приборов.

Для ускорения обработки запросов в sqlite, да и для унификации кода запросов, между mssql и sqlite, в sqlite можно внедрить функции из Delphi, которые будут заменять собой хранимые процедуры и любые другие, даже агрегатные функции.

Внедрить - значит зарегистрировать в sqlite название функции, использовать её в запросах, а код обработки будет на Delphi

Для работы в сетевой среде и sqlite в приложении LabVIEW код запросов и код запуска хранимых процедур через exec я положил в отдельную таблицу как поле справочника операций. Параметры запросам передаются путем замены строк параметров. После загрузки строки запроса. Все работает с сервером через ODBC и библиотеку sqlite3.DLL Проблем никаких нет. В Delphi проблемы есть при работе через встроенный драйвер firedac. Запрос с параметрами, который работает на сервере может не работаеть в sqlite. Есть тонкости с датами и СТЕ. Все запросы sqlite для Delphi приходится перепроверять и отлаживать в Sqlite studio. Но работает быстро. Хотя процедуру на сервере приходится разбивать на последовательность запросов для sqlite. Насчет внедрения функций Delphi в Sqlite надо попробовать. Спасибо за инфу. Это может пригодится. Но всё-таки я фанат обработки данных на sql и использования бизнес логики там же. Приложения мои непростые, а это сильно упрощает клиентское приложение. Даже парсинг строк предпочитаю делать в sql. Вот сейчас сть сложная задача с парсингом строки, к которой регулярки прикрутить не получится из за взаимных пересечений и отсутствия свойств. Алгоритм в sql c рекурсивными запросами , нечетким поиском и удалением взаимных пересечений распарсенных свойств с предварительным парсингом всей строки вполне показывает хорошую скорость и точность.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации