powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / О совместимости БД и клиента
25 сообщений из 52, страница 1 из 3
О совместимости БД и клиента
    #40090989
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в проекте применяется база данных и ведётся разработка на sql, то часто проявляется сложность поддержки актуальности клиента и сервера. Если отсутствие новой таблицы в клиенте очевидно, то отсутствие поддержки очередного мелкого изменения в базе может всплыть при тестировании или уже при эксплуатации. На клиенте есть компиляция, выявляющая некоторые несоответствия, в некоторых базах тоже есть что-то подобное. Но между клиентом и базой подобного процесса нет. Чаще всего применяются организационные методы борьбы с этим. Какие есть технические методы?

Например, статическую кодогенерацию по шаблонам нельзя назвать существенно техническим методом. Если не изменить шаблон или не вызвать кодогенерацию, то клиент и сервер перестанут быть совместимы. Динамическая кодогенерация в этом смысле лучше, но обходится существенно дороже. Но и в этом случае, например, прямое указание имени поля в клиенте вызовет ошибку при изменении или удалении его из базы.

Причём, важность такой совместимости повышается после передачи в эксплуатацию, т.к. организационные меры легче применять ограниченное время или вообще разово, например, ударным тестированием, чем постоянно их поддерживать.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091005
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКакие есть технические методы?В общем случае - никаких.
Вести разработку строго в одной среде (типа как в 1С) и не использовать всех возможностей СУБД.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091010
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown
часто проявляется сложность поддержки актуальности клиента и сервера

Что за сложность? Кто-то в клиенте не в состоянии сравнить номер версии БД с теми, с которыми он умеет работать?..
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091025
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
авторКакие есть технические методы?
В общем случае - никаких.
Вести разработку строго в одной среде (типа как в 1С) и не использовать всех возможностей СУБД.Пока знаю один. Утоньшение клиента относительно обработки частных данных, например, атрибутов. Если разработать изначально архитектуру клиента, чтобы он опирался на некие "интерфейсы", а не на реализации выборок и изменений данных. Получается прямая противоположность 1С. Правда, здесь другая крайность, если идти до конца по этому пути, то можно переизобрести RDP.


Dimitry Sibiryakov
tunknown
часто проявляется сложность поддержки актуальности клиента и сервера

Что за сложность? Кто-то в клиенте не в состоянии сравнить номер версии БД с теми, с которыми он умеет работать?..
Вопрос не в том, как сделать, чтобы работало в каком-то конкретном случае, а в том, чтобы такая проверка не понадобилась.


Такой вопрос у меня возник очень давно, когда я работал с Delphi 3. Зафетчил колонки в датасеты и любое изменение в базе приходится повторять в клиенте.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091110
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown
Такой вопрос у меня возник очень давно, когда я работал с Delphi 3. Зафетчил колонки в датасеты и любое изменение в базе приходится повторять в клиенте.

Такие вопросы чаще всего возникают от неграмотности в использовании инструмента. Достаточно не использовать persistent fields (это то, что Вы творчески назвали "зафетчил колонки в датасеты") - и проблемы не будет.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091227
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown
Вопрос не в том, как сделать, чтобы работало в каком-то конкретном случае, а в том, чтобы такая проверка не понадобилась.

И ответ на это - "никак, обломись". Приложение, способное работать с абсолютно любой базой, это нежизнеспособный монстр.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091353
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown,

БД и Клиент должны базироваться на общих метаданных - меняются метаданные (изменения сохраняются), БД перегенерируется, клиент сгенерирует запросы с учетом изменений метаданных.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091359
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
меняются метаданные (изменения сохраняются), БД перегенерируется

... Закрываем магазины на пару месяцев, пока после перегенерации БД в неё не перезальются данные ...
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091363
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Такие вопросы чаще всего возникают от неграмотности в использовании инструмента. Достаточно не использовать persistent fields (это то, что Вы творчески назвали "зафетчил колонки в датасеты") - и проблемы не будет.
Предлагаете тому мне именовать поля на русском, чтобы в гриде всё было понятно пользователям? Или использовать "словари", кажется, что-то такое в BDE было.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091366
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown
Предлагаете тому мне именовать поля на русском, чтобы в гриде всё было понятно пользователям?

В хорошей книге Специалист по этике душевно описаны чувства главного героя, когда он видит толпу дикарей, старательно таскающих статор вокруг неподвижного ротора. Это в точности то чувство, которое я испытываю от Ваших описаний. А предлагаю я, как уже сказал, осваивать инструмент и выбирать адекватные средства решения той или иной задачи.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091367
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EF Code First + Migration

вобщем делает, то что вам нужно.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091370
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
ViPRos
меняются метаданные (изменения сохраняются), БД перегенерируется

... Закрываем магазины на пару месяцев, пока после перегенерации БД в неё не перезальются данные ...

фантазер, ты меня называла...
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091407
Last of 1 as
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
ViPRos
меняются метаданные (изменения сохраняются), БД перегенерируется

... Закрываем магазины на пару месяцев, пока после перегенерации БД в неё не перезальются данные ...


а еще у нас умер ослик и мы его 4 часа детскими совками во дворе закапывали...

а почему не пару лет?
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091416
x0125
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если прога - монолит - разбиваем её на запускалку - проверяльщика версии и собственно саму функциональную прогу. Проверяльщик с базы на клиента тянет свежее актуальное обновление и стартует его.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091421
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
А предлагаю я, как уже сказал, осваивать инструмент и выбирать адекватные средства решения той или иной задачи.
Пока вы говорите, что всё неверно, но не говорите в каком направлении двигаться. Подскажите примеры какие-нибудь.

Relic Hunter
EF Code First + Migration

вобщем делает, то что вам нужно.
Это выглядит удобненькой и красивенькой организационной мерой, которая подчиняет себе всё. Как она помешает сделать несколько ALTER в базе?

x0125
Если прога - монолит - разбиваем её на запускалку - проверяльщика версии и собственно саму функциональную прогу. Проверяльщик с базы на клиента тянет свежее актуальное обновление и стартует его.
Так я и делал, но вопрос не об этом. Задача в том, чтобы расхождение не могло произойти принципиально(насколько это возможно, конечно), а не как бороться с расхождением. Или, чтобы расхождение было изолировано в базе, т.е. чтобы до клиента это никаким образом не доходило.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091480
Last of 1 as
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tunknown
Задача в том, чтобы расхождение не могло произойти принципиально


эта задача решения не имеет

словарь метаданных придется кешировать на клиенте для скорости, кеш из-за сбоев рано или поздно протухает, очищаем локальный кеш и формируем новый на клиенте
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091597
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last of 1 as
а почему не пару лет?

Можно и пару лет, не суть. Суть в том, что "перегенерация базы" подразумевает "перезаливку данных", а "перезаливка данных" требует куда больше времени, чем допустимо отдать на технологическое окно - даже если нет требования 24/7 и технологическое окно вообще существует.

Такая технология может быть реально использована только в том случае, если есть возможность по одному отключать и обновлять сервера БД. Это требует целого списка других технических решений, включая умение программного ядра и репликации одновременно работать с БД разных версий. В принципе, это всё реализуемо, но в мире довольно мало контор, где нужно решение такого масштаба. Поэтому выдавать такой подход как универсальное решение.... ну это примерно как проект электрификации дачного посёлка начинать с постройки АЭС.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091605
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tunknown
Пока вы говорите, что всё неверно, но не говорите в каком направлении двигаться. Подскажите примеры какие-нибудь.

Да какие примеры. Суть того, что Вы сказали - Вы к каждому датасету приделываете persistent fields для того, чтобы прописать там DisplayLabel и прочие свойства, унаследованные из Delphi 1 и касающиеся отображения данных в гриде. В этот момент все, кто много лет рассказывал про Delphi как про образец паттерна "мешанина из всего в одной куче" красноречиво улыбаются, и в Вашем конкретном случае для разнообразия правы.

В каком направлении двигаться.... в датасетах писать запросы. Запросы желательно размещать в модулях данных. Названия и свойства колонок прописывать в гридах. Гриды размещать на формах и фреймах. Мухи - отдельно, котлеты - отдельно. Persistent fields выкинуть и забыть навсегда. Когда нужно сделать вычисляемое поле - делать его не через persistent field, а выражением в запросе. Когда нужно сделать лукап - делать его не через persistent field, а через джойн в запросе. Если работаете с MSSQL - воспользоваться толковой рекомендацией использовать вместо запросов хранимки, возвращающие рекордсеты. Если, не дай бог, работаете с Oracle - не пользоваться дурацкой рекомендацией использовать вместо запросов хранимки.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091669
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда нужно сделать вычисляемое поле - делать его не через persistent field, а выражением в запросе.А если вычисление касается других датасетов или данных непосредственно из приложения ?
Хотя можно попробовать использовать параметры в подзапросе.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091695
Last of 1 as
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
Можно и пару лет, не суть. Суть в том, что "перегенерация базы" подразумевает "перезаливку данных", а "перезаливка данных" требует куда больше времени, чем допустимо отдать на технологическое окно - даже если нет требования 24/7 и технологическое окно вообще существует.


softwarer
проект электрификации дачного посёлка начинать с постройки АЭ



ага. в магазине...
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091702
Last of 1 as
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
Суть в том, что "перегенерация базы" подразумевает "перезаливку данных", а "перезаливка данных" требует куда больше времени


балкинсерт из старой таблицы в новую. на объемах которыми оперирует магазин это занимает в лучшем случае минуты... откуда месяцы взялись
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091708
tunknown
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Last of 1 as
tunknown
Задача в том, чтобы расхождение не могло произойти принципиально


эта задача решения не имеет

словарь метаданных придется кешировать на клиенте для скорости, кеш из-за сбоев рано или поздно протухает, очищаем локальный кеш и формируем новый на клиенте
В полном виде, возможно, не имеет. Вопрос в том, как, хотя бы, приблизиться к её решению.

softwarer
В каком направлении двигаться.... в датасетах писать запросы. Запросы желательно размещать в модулях данных. Названия и свойства колонок прописывать в гридах.
В мелком техническом плане такой подход существенно лучше. Но вопрос в том, как не дублировать "декларативную часть фронтенда" базы на клиенте. Даже если все колонки сделать, насколько можно, автоматически настраиваемыми и никакие манипуляции с существующим полем не приведут к ошибке, то добавленные колонки, всё равно, не будут иметь русского имени, размера, формата и т.д.

Кроме этого, я не видел ни одной реализации, где более-менее существенная манипуляция с полями не вызывала бы у пользователей проблем именно из-за локальных личных настроек. Эти настройки часто программисту недоступны, поэтому и протестировать-то затруднительно в реальных условиях.


Ещё один вопрос- часто с базы тянутся все поля, даже если у пользователя часть их скрыта. Поскольку .visible колонке выставить проще, чем из запроса исключать поле.
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091729
Last of 1 as
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tunknown
то добавленные колонки, всё равно, не будут иметь русского имени, размера, формата и т.д.


кеш метаданных на клиенте обновится когда клиент поймет что его локальный кеш не соответствует тому что на сервере. откуда возьмутся "бесхозные" колонки?
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091732
Last of 1 as
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tunknown
Кроме этого, я не видел ни одной реализации, где более-менее существенная манипуляция с полями не вызывала бы у пользователей проблем именно из-за локальных личных настроек


если форма грида не хочет открываться из-за того что юзер навертел для себя такое локальное представление грида, что его клиент не может прожевать и отрисовать делают сервисную возможность скинуть пользовательские настройки - привести их к дефалтным для формы
...
Рейтинг: 0 / 0
О совместимости БД и клиента
    #40091733
Last of 1 as
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tunknown
Ещё один вопрос- часто с базы тянутся все поля, даже если у пользователя часть их скрыта. Поскольку .visible колонке выставить проще, чем из запроса исключать поле.


и вопрос в чем? в 1с допустим невидимое поле для простоты исключается из выборки. но есть свойство "обязательное"...
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 1 из 3
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / О совместимости БД и клиента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (10): Анонимы (8), Yandex Bot, Bing Bot 1 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]