|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
Если в проекте применяется база данных и ведётся разработка на sql, то часто проявляется сложность поддержки актуальности клиента и сервера. Если отсутствие новой таблицы в клиенте очевидно, то отсутствие поддержки очередного мелкого изменения в базе может всплыть при тестировании или уже при эксплуатации. На клиенте есть компиляция, выявляющая некоторые несоответствия, в некоторых базах тоже есть что-то подобное. Но между клиентом и базой подобного процесса нет. Чаще всего применяются организационные методы борьбы с этим. Какие есть технические методы? Например, статическую кодогенерацию по шаблонам нельзя назвать существенно техническим методом. Если не изменить шаблон или не вызвать кодогенерацию, то клиент и сервер перестанут быть совместимы. Динамическая кодогенерация в этом смысле лучше, но обходится существенно дороже. Но и в этом случае, например, прямое указание имени поля в клиенте вызовет ошибку при изменении или удалении его из базы. Причём, важность такой совместимости повышается после передачи в эксплуатацию, т.к. организационные меры легче применять ограниченное время или вообще разово, например, ударным тестированием, чем постоянно их поддерживать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 12:46 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
авторКакие есть технические методы?В общем случае - никаких. Вести разработку строго в одной среде (типа как в 1С) и не использовать всех возможностей СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 13:34 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown часто проявляется сложность поддержки актуальности клиента и сервера Что за сложность? Кто-то в клиенте не в состоянии сравнить номер версии БД с теми, с которыми он умеет работать?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 13:43 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
L_argo авторКакие есть технические методы? Вести разработку строго в одной среде (типа как в 1С) и не использовать всех возможностей СУБД.Пока знаю один. Утоньшение клиента относительно обработки частных данных, например, атрибутов. Если разработать изначально архитектуру клиента, чтобы он опирался на некие "интерфейсы", а не на реализации выборок и изменений данных. Получается прямая противоположность 1С. Правда, здесь другая крайность, если идти до конца по этому пути, то можно переизобрести RDP. Dimitry Sibiryakov tunknown часто проявляется сложность поддержки актуальности клиента и сервера Что за сложность? Кто-то в клиенте не в состоянии сравнить номер версии БД с теми, с которыми он умеет работать?.. Такой вопрос у меня возник очень давно, когда я работал с Delphi 3. Зафетчил колонки в датасеты и любое изменение в базе приходится повторять в клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 14:40 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown Такой вопрос у меня возник очень давно, когда я работал с Delphi 3. Зафетчил колонки в датасеты и любое изменение в базе приходится повторять в клиенте. Такие вопросы чаще всего возникают от неграмотности в использовании инструмента. Достаточно не использовать persistent fields (это то, что Вы творчески назвали "зафетчил колонки в датасеты") - и проблемы не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 21:23 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown Вопрос не в том, как сделать, чтобы работало в каком-то конкретном случае, а в том, чтобы такая проверка не понадобилась. И ответ на это - "никак, обломись". Приложение, способное работать с абсолютно любой базой, это нежизнеспособный монстр. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 14:15 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown, БД и Клиент должны базироваться на общих метаданных - меняются метаданные (изменения сохраняются), БД перегенерируется, клиент сгенерирует запросы с учетом изменений метаданных. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 22:22 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
ViPRos меняются метаданные (изменения сохраняются), БД перегенерируется ... Закрываем магазины на пару месяцев, пока после перегенерации БД в неё не перезальются данные ... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 22:44 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
softwarer Такие вопросы чаще всего возникают от неграмотности в использовании инструмента. Достаточно не использовать persistent fields (это то, что Вы творчески назвали "зафетчил колонки в датасеты") - и проблемы не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 23:59 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown Предлагаете тому мне именовать поля на русском, чтобы в гриде всё было понятно пользователям? В хорошей книге Специалист по этике душевно описаны чувства главного героя, когда он видит толпу дикарей, старательно таскающих статор вокруг неподвижного ротора. Это в точности то чувство, которое я испытываю от Ваших описаний. А предлагаю я, как уже сказал, осваивать инструмент и выбирать адекватные средства решения той или иной задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 00:26 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
EF Code First + Migration вобщем делает, то что вам нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 00:38 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
softwarer ViPRos меняются метаданные (изменения сохраняются), БД перегенерируется ... Закрываем магазины на пару месяцев, пока после перегенерации БД в неё не перезальются данные ... фантазер, ты меня называла... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 01:35 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
softwarer ViPRos меняются метаданные (изменения сохраняются), БД перегенерируется ... Закрываем магазины на пару месяцев, пока после перегенерации БД в неё не перезальются данные ... а еще у нас умер ослик и мы его 4 часа детскими совками во дворе закапывали... а почему не пару лет? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 10:19 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
Если прога - монолит - разбиваем её на запускалку - проверяльщика версии и собственно саму функциональную прогу. Проверяльщик с базы на клиента тянет свежее актуальное обновление и стартует его. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 10:51 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
softwarer А предлагаю я, как уже сказал, осваивать инструмент и выбирать адекватные средства решения той или иной задачи. Relic Hunter EF Code First + Migration вобщем делает, то что вам нужно. x0125 Если прога - монолит - разбиваем её на запускалку - проверяльщика версии и собственно саму функциональную прогу. Проверяльщик с базы на клиента тянет свежее актуальное обновление и стартует его. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 11:14 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown Задача в том, чтобы расхождение не могло произойти принципиально эта задача решения не имеет словарь метаданных придется кешировать на клиенте для скорости, кеш из-за сбоев рано или поздно протухает, очищаем локальный кеш и формируем новый на клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 13:36 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
Last of 1 as а почему не пару лет? Можно и пару лет, не суть. Суть в том, что "перегенерация базы" подразумевает "перезаливку данных", а "перезаливка данных" требует куда больше времени, чем допустимо отдать на технологическое окно - даже если нет требования 24/7 и технологическое окно вообще существует. Такая технология может быть реально использована только в том случае, если есть возможность по одному отключать и обновлять сервера БД. Это требует целого списка других технических решений, включая умение программного ядра и репликации одновременно работать с БД разных версий. В принципе, это всё реализуемо, но в мире довольно мало контор, где нужно решение такого масштаба. Поэтому выдавать такой подход как универсальное решение.... ну это примерно как проект электрификации дачного посёлка начинать с постройки АЭС. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 20:03 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown Пока вы говорите, что всё неверно, но не говорите в каком направлении двигаться. Подскажите примеры какие-нибудь. Да какие примеры. Суть того, что Вы сказали - Вы к каждому датасету приделываете persistent fields для того, чтобы прописать там DisplayLabel и прочие свойства, унаследованные из Delphi 1 и касающиеся отображения данных в гриде. В этот момент все, кто много лет рассказывал про Delphi как про образец паттерна "мешанина из всего в одной куче" красноречиво улыбаются, и в Вашем конкретном случае для разнообразия правы. В каком направлении двигаться.... в датасетах писать запросы. Запросы желательно размещать в модулях данных. Названия и свойства колонок прописывать в гридах. Гриды размещать на формах и фреймах. Мухи - отдельно, котлеты - отдельно. Persistent fields выкинуть и забыть навсегда. Когда нужно сделать вычисляемое поле - делать его не через persistent field, а выражением в запросе. Когда нужно сделать лукап - делать его не через persistent field, а через джойн в запросе. Если работаете с MSSQL - воспользоваться толковой рекомендацией использовать вместо запросов хранимки, возвращающие рекордсеты. Если, не дай бог, работаете с Oracle - не пользоваться дурацкой рекомендацией использовать вместо запросов хранимки. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 20:20 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
Когда нужно сделать вычисляемое поле - делать его не через persistent field, а выражением в запросе.А если вычисление касается других датасетов или данных непосредственно из приложения ? Хотя можно попробовать использовать параметры в подзапросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 09:18 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
softwarer Можно и пару лет, не суть. Суть в том, что "перегенерация базы" подразумевает "перезаливку данных", а "перезаливка данных" требует куда больше времени, чем допустимо отдать на технологическое окно - даже если нет требования 24/7 и технологическое окно вообще существует. softwarer проект электрификации дачного посёлка начинать с постройки АЭ ага. в магазине... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 10:17 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
softwarer Суть в том, что "перегенерация базы" подразумевает "перезаливку данных", а "перезаливка данных" требует куда больше времени балкинсерт из старой таблицы в новую. на объемах которыми оперирует магазин это занимает в лучшем случае минуты... откуда месяцы взялись ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 10:28 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
Last of 1 as tunknown Задача в том, чтобы расхождение не могло произойти принципиально эта задача решения не имеет словарь метаданных придется кешировать на клиенте для скорости, кеш из-за сбоев рано или поздно протухает, очищаем локальный кеш и формируем новый на клиенте softwarer В каком направлении двигаться.... в датасетах писать запросы. Запросы желательно размещать в модулях данных. Названия и свойства колонок прописывать в гридах. Кроме этого, я не видел ни одной реализации, где более-менее существенная манипуляция с полями не вызывала бы у пользователей проблем именно из-за локальных личных настроек. Эти настройки часто программисту недоступны, поэтому и протестировать-то затруднительно в реальных условиях. Ещё один вопрос- часто с базы тянутся все поля, даже если у пользователя часть их скрыта. Поскольку .visible колонке выставить проще, чем из запроса исключать поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 10:54 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown то добавленные колонки, всё равно, не будут иметь русского имени, размера, формата и т.д. кеш метаданных на клиенте обновится когда клиент поймет что его локальный кеш не соответствует тому что на сервере. откуда возьмутся "бесхозные" колонки? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 11:22 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown Кроме этого, я не видел ни одной реализации, где более-менее существенная манипуляция с полями не вызывала бы у пользователей проблем именно из-за локальных личных настроек если форма грида не хочет открываться из-за того что юзер навертел для себя такое локальное представление грида, что его клиент не может прожевать и отрисовать делают сервисную возможность скинуть пользовательские настройки - привести их к дефалтным для формы ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 11:25 |
|
О совместимости БД и клиента
|
|||
---|---|---|---|
#18+
tunknown Ещё один вопрос- часто с базы тянутся все поля, даже если у пользователя часть их скрыта. Поскольку .visible колонке выставить проще, чем из запроса исключать поле. и вопрос в чем? в 1с допустим невидимое поле для простоты исключается из выборки. но есть свойство "обязательное"... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2021, 11:27 |
|
|
start [/forum/topic.php?fid=33&startmsg=40090989&tid=1547058]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 157ms |
0 / 0 |