Начало » Использование СУБД » Firebird, HQbird, InterBase » Внешние зависимости (как провязать клиента и базу на этапе разработки)
Внешние зависимости [сообщение #5049] |
Wed, 15 May 2024 14:53 |
shalamyansky
Сообщений: 149 Зарегистрирован: August 2022
|
Senior Member |
|
|
Firebird поддерживает концепцию зависимостей своих внутренних объектов, и это прекрасно. За любое движение, нарушающее согласованность метаданных, бьют по рукам. Это иногда приводит к необходимости дополнительных телодвижений, но то и правильно.
Также зависимости между частями проекта поддерживают среды разработки и компиляторы, на которых разрабатывают клиенты для СУБД. Просто так модуль из песни не выкинешь, мамка (среда) и папка (компилятор) заругают.
А вот связи между разрабатываемым клиентом и базой остаются на совести (на плечах, в руках, в памяти) программиста. Если совести или памяти мало-мало, возможны неприятности, обнаруживаемые только во время исполнения, и то не сразу и не всегда. Запросы к базе, прописанные в проекте клиента, должны точно соответствовать структуре базы, и никакая автоматика за этим не следит, все глазами и руками.
Что хотелось бы? Чтобы был такой робот, который взял бы структуру базы с одной стороны, вытащил бы из клиента все возможные обращения к базе с другой, сравнил и погрозил бы пальцем - ай-ай-ай, вот тут, тут и тут ерунда. Нет такой таблицы/представления/процедуры /поля.
Вопросов 2:
1. А вы как поддерживаете связи? Просто тестированием или еще как?
2. Может, есть такие инструменты, а я и не знаю? Интересует в первую очередь Delphi и Java. В принципе, можно и самому подумать-придумать-сделать, но это думать и делать надо.
[Обновления: Wed, 15 May 2024 14:58] Известить модератора
|
|
|
Re: Внешние зависимости [сообщение #5050 является ответом на сообщение #5049] |
Wed, 15 May 2024 15:01 |
МП
Сообщений: 887 Зарегистрирован: August 2022 Географическое положение: бурятский тун...
|
Senior Member |
|
|
тут бы было интересно заслушать Женю Болтика.
у него, если не ошибаюсь, все запросы лежат в базе, а не влинкованы в прогу в виде ресурсов.
также сделано, если не ошибаюсь, в системе "Гедымин".
но у них там и ресурсы формы лежат в базе, а не линкуются как *.dfm
тем самым всегда имеет место быть непротиворечивое сопряжение фронтэнда с бэкэндом.
[Обновления: Wed, 15 May 2024 15:01] Известить модератора
|
|
|
|
|
|
Re: Внешние зависимости [сообщение #5056 является ответом на сообщение #5055] |
Thu, 16 May 2024 15:30 |
shalamyansky
Сообщений: 149 Зарегистрирован: August 2022
|
Senior Member |
|
|
sim_84 писал(а) Wed, 15 May 2024 17:51всяческие ORM с подходом code-first
Да, в случае ORM указанная проблема мало актуальна. Не буду поднимать волну холивара про и контра ORM, у всего есть свои плюсы и минусы, скажу только, что сам придерживаюсь концепции database-first и ищу решение именно для таких проектов.
В самом узком и наиболее частом применении задача выглядит так. Есть база, к которой определены несколько десятков процедур. Эти процедуры вызываются несколькими клиентами с разных платформ и разным функционалом. В порядке рефакторинга структуры базы возникает подозрение, что некоторые из них давно уже никому не нужны. Могу я их безопасно удалить? Вот и вопрос.
Это описана зависимость в обратную сторону, от базы к клиенту. Нужны и прямые зависимости: вызываю с клиента процедуру, а есть такая в базе? Это второй вопрос.
pastor писал(а) Thu, 16 May 2024 10:14
можно препарировать при сборе дистра
Да, препарирование как метод валидации. Тоже думаю в эту сторону. По крайней мере прямую зависимость можно проверить.
|
|
|
|
|
|
Re: Внешние зависимости [сообщение #5061 является ответом на сообщение #5057] |
Thu, 16 May 2024 15:55 |
pastor
Сообщений: 79 Зарегистрирован: June 2022 Географическое положение: Калуга
|
Member |
|
|
МП писал(а) Thu, 16 May 2024 15:36
если юзеры прибегут с криками "шеф, всё пропало!", значит удалять не надо.
31 декабря с годовым отчетом.
и 23 числа каждого месяца на отчислениях персоналу
PS через два месяца после закрытия сезона со сверкой с Яндексом или Расчетными решениями
[Обновления: Thu, 16 May 2024 15:57] Известить модератора
|
|
|
|
|
|
|
Re: Внешние зависимости [сообщение #5081 является ответом на сообщение #5065] |
Sun, 19 May 2024 16:10 |
Саня, привет!
Сообщений: 3 Зарегистрирован: May 2024
|
Junior Member |
|
|
shalamyansky писал(а) Thu, 16 May 2024 17:16Понял, что ниша открыта, и готовых инструментов на горизонте не видно. Уже хорошо (что понял).
Спасибо всем за обсуждение!
Вот оно вам надо. Схема базы меняется редко. Поменял - погонял тесты, отдал заказчику, пофиксил возникшие претензии и живи себе дальше. А изначально строить приложения вокруг колченогой идеи - да ну нафиг.
Ну, завернешь ты запросы в процедуры. А что делать с запросами, формируемыми динамически, как ты их при компиляции проверишь? Отказаться от них?
|
|
|
|
Re: Внешние зависимости [сообщение #5084 является ответом на сообщение #5082] |
Mon, 20 May 2024 11:30 |
МП
Сообщений: 887 Зарегистрирован: August 2022 Географическое положение: бурятский тун...
|
Senior Member |
|
|
основных вариантов может быть овер-дофига.
так что без полноценных unit-тестов никуда.
зы: оно конечно всё зависит от сферического коня и уровня упругости вакуума.
|
|
|
Переход к форуму:
Текущее время: Fri Nov 15 01:45:38 GMT+3 2024
Общее время, затраченное на создание страницы: 0.01659 секунд
|