powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Взаимодействие клиентов с БД.
323 сообщений из 323, показаны все 13 страниц
Взаимодействие клиентов с БД.
    #39958846
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня , господа.
Я начинающий , но уже не молодой и вроде не эникейщик.
Собственно вопрос по взаимодействию клиентов и БД следущий -
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?
Т.е. я могу тормознуть поток в приложении , не закрывая подключения и в этом же подключении
если conn = not null сделать следующий запрос\процедуру.
Готов обсудить все за и против каждого варианта.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39958875
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Доброго дня , господа.
Я начинающий , но уже не молодой и вроде не эникейщик.
Собственно вопрос по взаимодействию клиентов и БД следущий -
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?
Т.е. я могу тормознуть поток в приложении , не закрывая подключения и в этом же подключении
если conn = not null сделать следующий запрос\процедуру.
Готов обсудить все за и против каждого варианта.


Ну если у Вас descktop приложение(Даже новомодные electron desctop-flutter pwa ) то одно соединение.
А если web ,то создается пул соединений.(Ибо соединение допустим для oracle...это ресурсоёмкая операция..так же для db2 и pg)
Поэтому создается пул и при транзакции или запросе менеджер пула предоставляет свободное соединение(Не занятое в данный момент транзакцией или возвращением запроса)...если свободного нет,то ставится в очередь)
(На java и python и node полно примеров работы с пулом)
Кстати в html примерах к ораклу...там создается новое соединение на request(и потом закрывается),-не ведитесь...это лишь обучающий пример.

А вот к моему непониманию, например в языке PHP при работе c mysql ...каждый request раз поднимается connect и выполняет sql и потом connection закрывается.(может быть что-то уже изменилось,но даже крутые порталы так работали(На мой взгляд неэффективно)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39958893
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
Misha_E
Доброго дня , господа.
Я начинающий , но уже не молодой и вроде не эникейщик.
Собственно вопрос по взаимодействию клиентов и БД следущий -
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?
Т.е. я могу тормознуть поток в приложении , не закрывая подключения и в этом же подключении
если conn = not null сделать следующий запрос\процедуру.
Готов обсудить все за и против каждого варианта.


Ну если у Вас descktop приложение(Даже новомодные electron desctop-flutter pwa ) то одно соединение.
А если web ,то создается пул соединений.(Ибо соединение допустим для oracle...это ресурсоёмкая операция..так же для db2 и pg)
Поэтому создается пул и при транзакции или запросе менеджер пула предоставляет свободное соединение(Не занятое в данный момент транзакцией или возвращением запроса)...если свободного нет,то ставится в очередь)
(На java и python и node полно примеров работы с пулом)
Кстати в html примерах к ораклу...там создается новое соединение на request(и потом закрывается),-не ведитесь...это лишь обучающий пример.

А вот к моему непониманию, например в языке PHP при работе c mysql ...каждый request раз поднимается connect и выполняет sql и потом connection закрывается.(может быть что-то уже изменилось,но даже крутые порталы так работали(На мой взгляд неэффективно)

Вот и я озадачился , т.к. накатал прожку для оценки производительности БД, оказалось что нашей БД само подключение ресурсоемкое по процессору . По ораклу читал Кайта, надо освежить в память, а то отложилось что уникальный пользователь накладен , а не коннект. Ставить в очередь это сервер приложений , в клиентском приложении можно так данные терять , т.е. юзер будет искать сохранилось или нет. Вы правы, везде в обучалках открыть закрыть коннект .
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39958911
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E,
Ставить в очередь это сервер приложений ,

Нет это делает сам класс OracleDatabasePollConnection из JDBC если мы говорим о java
для node и python необходим OCI(бинарные либы оракла...они держат пул и являются шлюзом к node и т.д).
Поэтому сервер приложений Вам необязателен(Можно спокойно на jetty(grizly,-любой автономный лёгкий http сервер на java) заделать..у меня так где-то было)...разве,что решаете и другие web проблемы...ну например,чтоб был https,много приложений взаимодействующих..Websocket и т.д. -тогда стоит подумать о сервере приложений.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959088
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
Misha_E,
Ставить в очередь это сервер приложений ,

Нет это делает сам класс OracleDatabasePollConnection из JDBC если мы говорим о java
для node и python необходим OCI(бинарные либы оракла...они держат пул и являются шлюзом к node и т.д).
Поэтому сервер приложений Вам необязателен(Можно спокойно на jetty(grizly,-любой автономный лёгкий http сервер на java) заделать..у меня так где-то было)...разве,что решаете и другие web проблемы...ну например,чтоб был https,много приложений взаимодействующих..Websocket и т.д. -тогда стоит подумать о сервере приложений.
В данном случае не Оракля, но большое вам спасибо. Дали верное направление.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959109
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Вот и я озадачился , т.к. накатал прожку для оценки производительности БД

Напишите, на чём накатали, что за БД?
Многие библиотеки по работе с БД реализуют в себе поддержку пула соединений и надо просто следовать рекомендациям вида:
Misha_E
открыть закрыть коннект
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959127
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Misha_E
Вот и я озадачился , т.к. накатал прожку для оценки производительности БД

Напишите, на чём накатали, что за БД?

JDBC , FireBird
Дмитрий Мух

Многие библиотеки по работе с БД реализуют в себе поддержку пула соединений и надо просто следовать рекомендациям вида:

C FireBird все сложно, но на выбор СУБД повлиять не могу.И JDBC неудачно выбрал на питоне там драйвер и мануал повеселей и местами проще.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959464
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?

Обычно это совершенно неправильно. Но сильно зависит от архитектуры приложения и обстоятельств.

Misha_E
JDBC неудачно выбрал на питоне там драйвер и мануал повеселей

А что, на нормальных языках программировать вообще вариантов нет?.. С/С++ там, Дельфи...
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959535
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?

Обычно это совершенно неправильно. Но сильно зависит от архитектуры приложения и обстоятельств.


Я неопытным глазом сразу заметил неладное
[quot Dimitry Sibiryakov#22135787]
Misha_E


Misha_E
JDBC неудачно выбрал на питоне там драйвер и мануал повеселей

А что, на нормальных языках программировать вообще вариантов нет?.. С/С++ там, Дельфи...

С++ начну в ближайшее время. Дельфи нормальный? Давно?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959740
Zmeelov2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Дельфи нормальный? Давно?

Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959770
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeelov2
Misha_E
Дельфи нормальный? Давно?

Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший.


Вот не хочу заводить холливар в этой теме можно отдельную тему создать..
Но вот я как бывший дельфист могу сказать если быстро наформошлёпать то да...дельфи равных нет...а вот если Вы делаете большую ERP
И неизвестно(Компилятору) какая у Вас подгрузится логика интерфейс и т.д. Т.е мы говорим о ленивой заранее неизвестной подгрузке исполняемого объекта (в том числе с зависимостями из репозитория и по http),то круче java в этом вопросе никого нет.
У Меня модуль состоит из главной формы...контейнера в который загрузится неизвестно что,и коннектор к базе данных ,который читает конфигурацию и говорит что грузить в контейнер в данный момент.
Вот тут обсуждалось
Идеальная платформа - из чего и как построить?
И можно эту тему там и продолжать насчёт языка и т.д.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959772
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeelov2
Misha_E
Дельфи нормальный? Давно?

Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший.

Наверно именно поэтому мне пришлось на JDBC писать, потому что наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert. Разумеется эта хрень напрочь зависала в 70% случаев. Вот ничего не хочется иметь общего ни с такими языками , ни с такими ведущими.

А теперь серьезно :делфи хорош как быстрая разработка легких графических интерфейсов , но как выясняется и тут
есть VCL для решения многих проблем\задач, а в этом VCL нет диаграмм Ганта, но в этом же VCL для С++ они есть.
Итог - делфи норм для узкого круга задач небольших организаций, и если есть 10к зелени на Embarcadero .

Начав работать с FB я познал параллельную реальность в которой живет эта СУБД. Я узнал что существует такая
вещь как "нестабильность курсора" . Был сильно удивлен что MERGE по скорости выполнения то же самое что процедурка на процедурном языке с переменными.И многое многое другое. После такого могу точно сказать - стоимость Оракли оправдана на все 100%
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959793
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E,
- стоимость Оракли оправдана на все 100%

Ну возьмите Oracle XE(Он бесплатен) ...с каждой новой версией...он даёт всё больше и больше лимитов.Хотя их(лимитов) и сейчас дофига.
Так же можно скачать по девелоперской лицензии большой оракле
У меня в образе VM там большой оракле(его поставить непросто)
http://www.cis-pos.com/apex/f?p=116:43
Поставьте образ сравните с XE
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959804
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
Misha_E,
- стоимость Оракли оправдана на все 100%

Ну возьмите Oracle XE(Он бесплатен) ...с каждой новой версией...он даёт всё больше и больше лимитов.Хотя их(лимитов) и сейчас дофига.
Так же можно скачать по девелоперской лицензии большой оракле
У меня в образе VM там большой оракле(его поставить непросто)
http://www.cis-pos.com/apex/f?p=116:43
Поставьте образ сравните с XE
Дома XE, на работе 10Гб превышено. Сейчас занимаюсь миграцией таблиц с FB в PostGres , потом и до оракли очередь дойдет.
Прогоним тесты(запросы) посмотрим насколько FB хуже , а там может и БД сменим.У нас и оракля есть(а в целом по конторе у нас оракли не мерянно) , FB в нашей БД вероятно политическое решение
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959805
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как то так.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959807
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?

Смотря как напишешь. Бывает нужно сделать n действий в одной сессии и если начать раздавать подключение направо и налево, то можно наделать себе дырок. С другой стороны поднимать соединение дорого, надо держать какой-то пул, пул закончится надо поднимать новые соединение - дорого, n соединений делать на всех страшно.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959810
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
надо держать какой-то пул, пул закончится

Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает.

Это экспериментальным путем вычисляется...
У меня например расчёт на 25-30 пользователей 5 соединений в пуле.(у Вас может быть другая картина)
При этом зависимость нелинейная (см.теорию массового обслуживания) на 60 пользователей модно дать уже 9 в пуле
а на 90 -12 в пуле.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959811
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает.

Так надо всё равно новое соединение поднимать. Не секурно же. Там в кешах что-то может остаться или во временных таблицах.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959825
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
irbis_al
Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает.

Так надо всё равно новое соединение поднимать. Не секурно же. Там в кешах что-то может остаться или во временных таблицах.

А пользователь в БД один?
А после авторизации как этот пользователь подтверждает что это он? Врменный файл, либо кукис если веб , либо переменная в приложении?Секурность отдельная история.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959828
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
А пользователь в БД один?

Один. Авторизацию через юзеров бд делать - херовая идея.
Misha_E
А после авторизации как этот пользователь подтверждает что это он? Врменный файл, либо кукис если веб , либо переменная в приложении?

С помощью асинхронного шифрования еще можно.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959843
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert

Ненормальный процент дебилов среди использующих язык никак не соотносится с самим языком.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39959858
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Misha_E
наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert

Ненормальный процент дебилов среди использующих язык никак не соотносится с самим языком.

"порог входа" обычно отсекает дебилов. Каждый дебил знает что такое плюсы и даже не суется туда.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961030
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?

Нет. Это самый тупой вариант, какой только можно представить.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961033
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?

Нет. Это самый тупой вариант, какой только можно представить.

если клиентов дофига, то иного варианта и нет
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961105
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
то иного варианта и нет

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

Точно нет? Ну то есть вот если хоть один другой вариант найдётся - ты посыпешь голову пеплом и впредь заречёшься писать прежде чем думать?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961228
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
ViPRos
если клиентов дофига, то иного варианта и нет

Точно нет? Ну то есть вот если хоть один другой вариант найдётся - ты посыпешь голову пеплом и впредь заречёшься писать прежде чем думать?

чем лишний раз блабла, лучше бы просветил
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961231
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
чем лишний раз блабла, лучше бы просветил

Чтобы просвещать, нужно хоть как-то представлять задачу. "Дофига" - это хотя бы примерно сколько?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961244
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?


Правильно держать пул соединений, на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Во многих ЯП и библиотеках это выглядит как создание и закрытие соединения, но при этом они берутся из пула.

Никаких за и против тут быть не может. Вы не должны напрямую управлять соединением на уровне прикладного кода. И никакие оправдания вам тут не помогут.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961322
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961331
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
hVostt
на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных.

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

Чтобы просвещать, нужно хоть как-то представлять задачу. "Дофига" - это хотя бы примерно сколько?

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

Ну, тут вопрос - каких именно соединений. Речь может идти о сессиях в БД или о tcp/соединениях операционки. Но в любом случае в таких условиях стратегия "сразу же гробить" неэффективна по сравнению со стратегией "разделяя, эффективно использовать". На пальцах:

  • допустим, одна пользовательская операция потребляет в среднем X ресурсов (процессор, память итп)
  • допустим, мощность основного железа 10'000 * X (то есть в идеале оно может обслуживать 10'000 постоянно активных клиентов)
  • допустим, операционка, БД или что-нибудь в этом духе ограничивает количество одновременных соединений 1'000
  • допустим, инициализация и завершение соединения потребляют в среднем Y ресурсов.

Давай возьмём за эталон лузерства решение "1000 счастливчиков подключились и работают, остальные сосут". В этом режиме ресурсы сервера утилизируются на 10%, то есть 90% уходит впустую. Показатель полезной нагрузки - 1000 операций в единицу времени.

Рассмотрим твоё решение. В этом случае одна операция требует уже X + Y ресурсов. Что будет с сервером? Тут уже начинает зависеть от того, что именно за ресурсы. В наилучшем случае он будет делать те же 1000 операций в единицу времени, но утилизация повысится до 10*(X+Y)/X процентов (так будет, например, если операции требуют почти исключительно процессора, и по нему запас). В наихудшем случае утилизация останется той же, но он будет делать всего 1000*X/(X+Y) операций в единицу времени. То есть пропускная способность уменьшится даже по сравнению с лузерским вариантом! В реальности скорее всего будет нечто промежуточное - пропускная способность уменьшится, но не так сильно, утилизация увеличится, но не так сильно.

На практике этим ты предлагаешь купить следующее: вместо "1000 счастливчиков, 9000 сосут" будет "10000 сосут, но чуть менее обидно". С точки зрения пользователя каждая операция будет занимать в 10-20-50 раз дольше, чем могла бы. Можно ли так работать? Ну да, в принципе, конечно, можно. Я в такой ситуации просто приношу на работу книжку и сижу, читаю.

Что бы лично я сделал вместо этого. Я бы поставил 20 промежуточных прокси - они простые и дешёвые. Клиенты соединяются на прокси по 500 штук на каждого, лимит в 1000 соединений не нарушен. Прокси соединяются с БД, тратя на это 20 * N соединений. N выбирается исходя из оптимальной работы сервера. Прокси диспетчеризует запросы так, чтобы наилучшим образом загрузить сервер (например, упаковывает разные в один батч). Лимит в 1000 соединений опять же не нарушается. Итого: сервер загружен по полной, 10'000 счастливчиков спокойно и эффективно работают, все счастливы. По цена/качество этот вариант кроет "одноразовые подключения" как бык блоху.

Для упрощения рассуждений я говорю о постоянно активных клиентах, то есть работающих в цикле "отправил запрос - получил ответ - сразу же отправил следующий". Реальные клиенты, конечно, обычно ждут пользователя, но с этим всё просто: если клиент активен в среднем k% времени, то N "ждущих клиентов" по потоку обращений эквивалентны kN "постоянно активных", можно рассуждать в терминах последних и не думать о k.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961362
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
hVostt
на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных.


Ну а ещё раньше лошадей подковывали.

Как вам вообще права-то выдали, если вы не знаете о том, как подковать лошадь или перебрать мотор и промыть карбюратор, а? )))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961365
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Что бы лично я сделал вместо этого. Я бы поставил 20 промежуточных прокси - они простые и дешёвые. Клиенты соединяются на прокси по 500 штук на каждого, лимит в 1000 соединений не нарушен. Прокси соединяются с БД, тратя на это 20 * N соединений. N выбирается исходя из оптимальной работы сервера. Прокси диспетчеризует запросы так, чтобы наилучшим образом загрузить сервер (например, упаковывает разные в один батч). Лимит в 1000 соединений опять же не нарушается. Итого: сервер загружен по полной, 10'000 счастливчиков спокойно и эффективно работают, все счастливы. По цена/качество этот вариант кроет "одноразовые подключения" как бык блоху.


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

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

Не надо этими словами приписывать мне всякую фигню. Сам прекрасно понимаешь, есть некое приложение (готовое либо проектируемое), есть нарисованная тобой ситуация, стоит вопрос как сделать (или переделать) это приложение, чтобы оно хорошо работало в таком раскладе.

ViPRos
а в режиме клиент-сервер я бы и на стороне сервера ввел бы пул соединений

Ну, есть такое в Oracle, называется shared server mode. Но это ответ для случая, если лимит по количеству соединений. Лимит по tcp соединениям это преодолеть не поможет.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961465
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

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

Ну, есть такое в Oracle, называется shared server mode. Но это ответ для случая, если лимит по количеству соединений. Лимит по tcp соединениям это преодолеть не поможет.

ну, есть слава бог люди с правильными мозгами, не все фаулеры еще засрали
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961467
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
Т.е мы говорим о ленивой заранее неизвестной подгрузке исполняемого объекта (в том числе с зависимостями из репозитория и по http),то круче java в этом вопросе никого нет.

Весьма спорно. Напомните: вот лежит некий плагин (ну то есть jar-ник или нечто аналогичное в любом другом формате). Java хотя бы научилась загружать его без необходимости явно перечислять стартовые классы, инициализация которых должна быть выполнена?

irbis_al
У Меня модуль состоит из главной формы...контейнера в который загрузится неизвестно что,и коннектор к базе данных ,который читает конфигурацию и говорит что грузить в контейнер в данный момент.

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

Если у ТС есть колёса и руль, это не означает, что нет ничего кроме колёс и руля. Он задаёт архитектурный вопрос и не задал никаких ограничений на "только КС". Да и кроме того, прокси - вовсе не обязательно нарушение КС.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961477
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
ViPRos
ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок

Если у ТС есть колёса и руль, это не означает, что нет ничего кроме колёс и руля. Он задаёт архитектурный вопрос и не задал никаких ограничений на "только КС". Да и кроме того, прокси - вовсе не обязательно нарушение КС.

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

а смысл спорить? Ну хреновый это режим - пересоединяться на каждый чих. Всё равно что школьникам после каждого урока возвращаться домой, а потом снова топать в школу на следующий.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961486
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
ну, есть слава бог люди с правильными мозгами, не все фаулеры еще засрали


Ну я же говорил! Земля плоская!

А то засрали тут свои мозги всякими Галилеями галимыми. Фух, хорошо есть ещё умные люди
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961510
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Misha_E
правильно ли на каждое действие клиентского приложения создавать новое подключение к БД?


Правильно держать пул соединений, на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Во многих ЯП и библиотеках это выглядит как создание и закрытие соединения, но при этом они берутся из пула.

Никаких за и против тут быть не может. Вы не должны напрямую управлять соединением на уровне прикладного кода. И никакие оправдания вам тут не помогут.


Зависит от БД.
Иногда выгоднее честное открытие/закрытие соединений.
Натолкнулся на особенности MySQL.
Где у меня пул соединений постоянно тихо терял соединение с БД.
Соответственно из пула выдавалось "мертвое содинение"
:-)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961577
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
hVostt
на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул.

Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных.
А разве все перечисленное не должно интересовать только того кто пишет ХП?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961687
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
А разве все перечисленное не должно интересовать только того кто пишет ХП?

Нет. Подход "всё на ХП" - это отрыжка больного на голову MSSQL, которая появилась только потому, что они не могли сделать адекватной работы СУБД в других режимах и предпочли за счёт маркетоидов прорекламировать багу как фичу.

Так или иначе, контракт между БД-частью и БД-клиентом - вопрос архитектуры. Разработчик выбирает тот вариант, который соответствует задаче.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961689
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
А разве все перечисленное не должно интересовать только того кто пишет ХП?

Нет. Подход "всё на ХП" - это отрыжка больного на голову MSSQL, которая появилась только потому, что они не могли сделать адекватной работы СУБД в других режимах и предпочли за счёт маркетоидов прорекламировать багу как фичу.

Так или иначе, контракт между БД-частью и БД-клиентом - вопрос архитектуры. Разработчик выбирает тот вариант, который соответствует задаче.

ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API или тому от чего наследоваться , а в противном случае ORM .
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961694
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API

Секурность на уровне ХП - это заведомо хрупкое решение. API - хорошее слово. ХП - это существенная часть API, но они не в состоянии дать адекватное решение ряду стоящих задач, поэтому подход "всё на API" годится либо для демо-примеров в книжках, либо для производства инвалидов.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961707
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API

Секурность на уровне ХП - это заведомо хрупкое решение. API - хорошее слово. ХП - это существенная часть API, но они не в состоянии дать адекватное решение ряду стоящих задач, поэтому подход "всё на API" годится либо для демо-примеров в книжках, либо для производства инвалидов.

Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП, а обратные случаи есть.
Секурность на уровне ХП замечательно работает по пользователям. Пользователь может выполнить ровно то что ему дозволено и это хорошо когда используются СУБД без РЕДО лога и нельзя сделать селект таблицы на определенную дату , ну есть логгирование и дупликаты на тригграх, но сути не меняет . В некоторые ХП в некоторых СУБД вполне можно интегрировать код языков высшего порядка , поэтому я не совсем понимаю каких задач нельзя решить на уровне СУБД.Существует огромное множесто аппликух на APEX , в которых все выполняется в СУБД и есть огромная куча очень крупных компаний инвалидов, которые это с удовольствием используют .
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961723
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП, а обратные случаи есть.
Секурность на уровне ХП замечательно работает по пользователям. Пользователь может выполнить ровно то что ему дозволено и это хорошо когда используются СУБД без РЕДО лога и нельзя сделать селект таблицы на определенную дату , ну есть логгирование и дупликаты на тригграх, но сути не меняет . В некоторые ХП в некоторых СУБД вполне можно интегрировать код языков высшего порядка , поэтому я не совсем понимаю каких задач нельзя решить на уровне СУБД.Существует огромное множесто аппликух на APEX , в которых все выполняется в СУБД и есть огромная куча очень крупных компаний инвалидов, которые это с удовольствием используют .


Прошу прощения. Но у меня к ХП предвзятое отношение. ХП - зло! :-)
И проблема не в том, что можно сделать или нельзя.
Что может ХП или не может.
Дело в том что

1. Использование ХП это сильный vendor lock.
Для примера можете посмотреть страдания перехода с Oracle на PostgreSQL в соседнем форуме

2. ХП очень трудно завести в "систему контроля версий" и CI/CD

3. Очень трудно писать unit-тесты. Тут на обычных ЯП unit-тесты не особо пишут, хотя есть и специализированные фреймворки и IDE настроены, чтобы было удобно писать тесты.

4. Из-за того, что п.2. трудно сделать, то обычная практика "немножко поправим на prod'е". И соотвественно прямой доступ разработчиков к БД (это абсолютное ЗЛО).

5. Привет процедурное программирование.


А так, да. на ХП можно сделать любую дичь и она будет работать. :-)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961734
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП

Зато ряд важных вещей в ХП делается только через задницу. Например, массовая обработка данных или выборка по фильтрам.

Misha_E
а обратные случаи есть.

Даже если кто-то ухитрился наколенить СУБД, в которой такое есть - это никак не означает, что следует всё делать на ХП.

Misha_E
Секурность на уровне ХП замечательно работает по пользователям.

До тех пор, пока не пытаться её тестировать. Если секурность размазана по 10'000 ХП - в ней наверняка найдётся полно ошибок. Просто без вариантов.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961735
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
1. Использование ХП это сильный vendor lock

А уж какой vendor lock использование языка программирования

mad_nazgul
2. ХП очень трудно завести в "систему контроля версий" и CI/CD

Н-да. Собственно, на этом аргументе можно и закончить. Как говорят в таких случаях, "попробуйте нанять программиста".
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961740
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Misha_E


Прошу прощения. Но у меня к ХП предвзятое отношение. ХП - зло! :-)
И проблема не в том, что можно сделать или нельзя.
Что может ХП или не может.
Дело в том что

1. Использование ХП это сильный vendor lock.
Для примера можете посмотреть страдания перехода с Oracle на PostgreSQL в соседнем форуме

2. ХП очень трудно завести в "систему контроля версий" и CI/CD

3. Очень трудно писать unit-тесты. Тут на обычных ЯП unit-тесты не особо пишут, хотя есть и специализированные фреймворки и IDE настроены, чтобы было удобно писать тесты.

4. Из-за того, что п.2. трудно сделать, то обычная практика "немножко поправим на prod'е". И соотвественно прямой доступ разработчиков к БД (это абсолютное ЗЛО).

5. Привет процедурное программирование.


А так, да. на ХП можно сделать любую дичь и она будет работать. :-)

Ничего страшного, но и вы меня простите , я безнадежно туп и много не знаю и не понимаю:

1)Я в принципе не понимаю понимаю что такое "vendor lock" , или принимается решение о бизнеслогике в СУБД когда этой логики много вместе с аналитикой , либо используется совсем ничего не умеющий ORM . Страдания перехода с Oracle на PostgreSQL закономерны, PL\SQL самый мощный функциональный и в сложной логике самый производительный язык СУБД в котором более 300
DBMS пакетов.Нежелание платить деньги за ораклю понятно, но переход с FB или MySQL на PostGreeSQL ,будет не менее болезненным.Да и когда принимали решение и покупали\не покупали ораклю скорее всего на тот момент PostgreSQL существенно грустнее чем сейчас . А вот почему "страдающие или предшественники" не купили MSSQL вопрос открытый.

2) Это не организационный вопрос , тут тож я не силен.

3)ХП проще тестировать, по сути АПИ\КЛАСС , вход\выход и все.С ХП проще еще с той точки зрения что вернется значение нужного типа или не нужного , но указанного RETURNING_VALUES.

4)МБ, обычно решается тестовой средой.

5)Опять туплю и не понимаю, чем record в оракле и там же 3 вида массивов не угодили? Это перекрывает почти все потребности, для остальных есть DBMS и другие вещи. У Меня тут исходники делфевого проекта на 10 мегабайт валяются , я там ООП кроме class TForm не наблюдаю от слова совсем, одни процедурки.

Возвращаясь к ХП. Да, можно жить с ORM , но тогда базы 2 , вторая это аналитика , например на Elastic(или аналоги). Или вторая с аналитикой оракля\mssql с OLAP. Рассматривать СУБД как файл хранения можно хоть с ORM хоть без, но это использование СУБД на максимум 5-10% возможностей.Но ведь мы как минимум хотим транзакции, целостности и контроля,MVCC и наверное поэтому выбор падает на PostgreSQL , а не все остальное что не так похоже на ораклю.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961745
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП

Зато ряд важных вещей в ХП делается только через задницу. Например, массовая обработка данных или выборка по фильтрам.

3 самых крупных провайдера РФ сидят на чистой оракле со всей логикой в нем, БД террабайтные. Мобильные операторы то же , но насколько логика на ХП у них не знаю.
softwarer

Misha_E
а обратные случаи есть.

Даже если кто-то ухитрился наколенить СУБД, в которой такое есть - это никак не означает, что следует всё делать на ХП.

Если не нужна скорость работы , то да - не следует. А потом искать методы ускорения вставок, апдейтов и всего остального.

softwarer

Misha_E
Секурность на уровне ХП замечательно работает по пользователям.

До тех пор, пока не пытаться её тестировать. Если секурность размазана по 10'000 ХП - в ней наверняка найдётся полно ошибок. Просто без вариантов.

Ну в приложениях, которые декомпилятся на ура с безопасностью все существенно лучше с вложенным чистым SQL.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961746
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все определяется задачами.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961749
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
3 самых крупных провайдера РФ сидят на чистой оракле со всей логикой в нем

Подсказываю: я ещё недавно разрабатывал на Оракле для провайдеров. Надеюсь, Вы не собираетесь утверждать, что раз Оракл - значит всё на ХП?

Misha_E
Если не нужна скорость работы , то да - не следует.

Судя по этой фразе, Вы работаете на MSSQL? Мне так помнится, у них были подобные проблемы.

Misha_E
А потом искать методы ускорения вставок, апдейтов и всего остального.



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

Единственно разумный ответ на такой аргумент - "слив засчитан".
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961755
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
"слив засчитан".

Культурный и образовательный уровень понятен, в таком случае предпочитаю пользоваться хорошим советом. Да ,слился, ок.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961794
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E,
умеешь работать с ХП - работай и никого не слушай.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961801
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Misha_E, сегодня, 14:31 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139058][22139058]
>...и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП, а обратные случаи есть.
<
и мне также не известны случаи по "прямому запросу", обратные есть.
Все операции с базой данных (SELECT, INSERT, UPDATE, DELETE) стремлюсь реализовывать с использованием ХП. Пока получается.
Мне не понятно как реализуется UPDATE без ХП в многопользовательской среде (оптимистическая блокировка). Клиент должен получить корректное значение измененной записи и признак ошибки.
Подскажите как это реализуется без ХП
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961921
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Все операции с базой данных (SELECT, INSERT, UPDATE, DELETE) стремлюсь реализовывать с использованием ХП. Пока получается.


Если вы не понимаете, зачем вы именно так делаете, значит делаете бездумно и глупо.


ВМоисеев
Мне не понятно как реализуется UPDATE без ХП в многопользовательской среде


Ну и чем UPDATE в ХП отличается от UPDATE, вызванный со стороны клиента?

Откуда же растут ноги у этой фобии? :)
Судя по всему, абсолютно не имеет значения как вы что-то делаете.

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


Любой фанатизм является интеллектуальной импотенцией.
Использование ХП должно иметь под собой вполне обоснованный профит.

И да, язык SQL придуман для взаимодействия клиента с БД.
Затем кто-то решает, что взаимодействовать с БД надо исключительно через ХП.
Это вовсе не от большого ума, это клиника.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961931
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Затем кто-то решает, что взаимодействовать с БД надо исключительно через ХП.
Это вовсе не от большого ума, это клиника.

Придумали-то от большого ума. Просто не совсем... доброжелательного, назовём так. Примерно так же, как придумали идею каждый год покупать новый айфон. А вот бездумно следовать чужой придумке - это действительно клиника.

hVostt
Ну и чем UPDATE в ХП отличается от UPDATE, вызванный со стороны клиента?

Насколько я помню, в те времена, когда это придумали (а может и сейчас) отличие было в том, что update-а в ХП MSSQL фиксировал план, а для update-а с клиента каждый раз считал его заново. Таким образом, dml с клиента выполнялся с лишними тормозами по сравнению с таким же в ХП.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961934
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
hVostt
Ну и чем UPDATE в ХП отличается от UPDATE, вызванный со стороны клиента?

Насколько я помню, в те времена, когда это придумали (а может и сейчас) отличие было в том, что update-а в ХП MSSQL фиксировал план, а для update-а с клиента каждый раз считал его заново. Таким образом, dml с клиента выполнялся с лишними тормозами по сравнению с таким же в ХП.


Ну это уж совсем стародавние времена ))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961946
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, вчера, 23:44 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139375][22139375]
>Ну и чем UPDATE в ХП отличается от UPDATE, вызванный со стороны клиента?
<
Вот пример кода ХП UPDATE (PostgreSQL)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE OR REPLACE FUNCTION public."au_Отделы_upd"("$pk_Entity" uuid, "$ts_Entity" bigint, "$str_Отдел" character varying)
 RETURNS refcursor
 LANGUAGE plpgsql
AS $function$  declare
    ErrorVar int;
    rfc refcursor;
  begin
    ErrorVar := 0;
    begin
      UPDATE "tbl_Отделы" SET "str_Отдел" = "$str_Отдел" 
      WHERE (("pk_Entity" = "$pk_Entity") and ("ts_Entity" = "$ts_Entity"));
      exception when others then  ErrorVar := 1;
    end;
    open rfc for 
      SELECT t."pk_Entity", t."ts_Entity", t."str_Отдел", ErrorVar as rc
      FROM "tbl_Отделы" t
      WHERE (t."pk_Entity"="$pk_Entity");
    return rfc;
  end;
$function$


Покажите Ваш вариант кода клиента
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961950
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

Код: c#
1.
2.
3.
var department = repository.Get<Department>(id);
department.Name = "Новое имя отдела";
repository.Save(department);



Этот код выполнит следующие запросы:

Код: sql
1.
2.
3.
select Id, Name from Departments where Id = @id;

update Departments set Name = @name where Id = @id;



А теперь расскажите, чем принципиально отличается ваш код?

Потому что, судя по вашей ХП, она не только выполняет самую обычную команду UPDATE, которую можно совершенно таким же образом выполнить с клиента. Но и возвращает результат запроса, который мне нафиг не упал. Зачем мне эта лишняя операция?
Я ведь уже запросил эти данные, прежде чем обновлять, или я знаю что обновляю на основании ранее полученной информации.
Т.е. по сути ваша ХП является обманом. Вместо одной операции, она делает 2. Причём вторая будет выполнена независимо от того, нужна она мне или нет.

А теперь поговорим про реальные системы.
Была у меня система на поддержке с более 5000 таблиц.
Если на каждую таблицу мне кто-то предложит написать по 4 ХП, то пойдёт в пешее эротическое путешествие.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961955
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 01:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139410][22139410]
>… А теперь расскажите, чем принципиально отличается ваш код?
<
Я работаю со справочниками типа Отделы(к примеру) по другому - SELECT даёт мне список сущностей Отдел в памяти приложения. Список отображается в гриде. Здесь же могу отредактировать нужное поле Отдел и обращаюсь к хранимой процедуре UPDATE, передавая в качестве параметров <ключ, timestamp, имя_отдела>. В многопользовательской среде есть возможность что кто-то уже изменил имя сущности. UPDATE будет отклонен, пользователь получит новые параметры сущности, которые будут отражены в гриде. Если ок, то пользователь все одно получит параметры сущности с новым timestamp.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961965
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Покажите Ваш вариант кода клиента

Вы действительно так непринуждённо удваиваете нагрузку на сервер только ради того, чтобы вернуть клиенту ровно те же данные, которые у него уже есть? Убедительный пример использования ХП

Ну попробуйте хотя бы что-нибудь типа

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
update Отделы set
  отдел = case when ts = :ts then :отдел else отдел end
where
  id = :id
returning
  отдел, ts
into
  :отдел, :ts



это будет явно эффективнее Вашего чуда.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961976
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
mad_nazgul
1. Использование ХП это сильный vendor lock

А уж какой vendor lock использование языка программирования


Никак.
Если брать ЯП на JVM, то Kotlin, Scala - Open Source.
На не JVM, тоже куча ЯП в Open Source.

Есть конечно MS, со своим C#, но они вроде тоже взяли курс на Open Source.

softwarer

mad_nazgul
2. ХП очень трудно завести в "систему контроля версий" и CI/CD

Н-да. Собственно, на этом аргументе можно и закончить. Как говорят в таких случаях, "попробуйте нанять программиста".


Да?
И сколько человек могут одновременно работать, например, над одним пакетом в Oracle.
В разных ветках, т как проходит merge request. :-)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39961978
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E

Ничего страшного, но и вы меня простите , я безнадежно туп и много не знаю и не понимаю:

1)Я в принципе не понимаю понимаю что такое "vendor lock" , или принимается решение о бизнеслогике в СУБД когда этой логики много вместе с аналитикой , либо используется совсем ничего не умеющий ORM . Страдания перехода с Oracle на PostgreSQL закономерны, PL\SQL самый мощный функциональный и в сложной логике самый производительный язык СУБД в котором более 300
DBMS пакетов.Нежелание платить деньги за ораклю понятно, но переход с FB или MySQL на PostGreeSQL ,будет не менее болезненным.Да и когда принимали решение и покупали\не покупали ораклю скорее всего на тот момент PostgreSQL существенно грустнее чем сейчас . А вот почему "страдающие или предшественники" не купили MSSQL вопрос открытый.


Переход на PostgreSQL не из-за "не платить", т.к. переход из одной БД на другую, дороже лицензий. А просто в России для гоструктур и госкомпаний ПО должно быть из реестра рекомендованного ПО. Импортозамещение понимаешь.

Если бы не использовали ХП и использовали стандарт SQL, то было бы не так мучительно больно.

Misha_E

2) Это не организационный вопрос , тут тож я не силен.


Сейчас решают "большие батальоны". И как бы работа в команде над одним проектом это обязательно нужно уметь.

Misha_E


3)ХП проще тестировать, по сути АПИ\КЛАСС , вход\выход и все.С ХП проще еще с той точки зрения что вернется значение нужного типа или не нужного , но указанного RETURNING_VALUES.


Инструментов мало или нет.
Для Oracle есть что-то в рамках IDE для создания unit-тестов.
Но их в систему CI/CD не получиться "вставить"
У других особо нет.

Misha_E

4)МБ, обычно решается тестовой средой.


Ну помнится в одной конторе была тестовая среда, которую каждую неделю удаляли и переписывали с прода.
И там были веселые танцы с бубном, чтобы изменения протестировать.
Т.к. каждую неделю все изменения превращались в тыкву.
Иначе разница между продом и тестом была такая, что накатить изменения с теста на прод были не возможны.
А так, т.к. изменения были не очень большие, то геморроя было меньше.
Особенно с откатом изменений
И да. на данном проекте работали ~10 человек.

Misha_E

5)Опять туплю и не понимаю, чем record в оракле и там же 3 вида массивов не угодили? Это перекрывает почти все потребности, для остальных есть DBMS и другие вещи. У Меня тут исходники делфевого проекта на 10 мегабайт валяются , я там ООП кроме class TForm не наблюдаю от слова совсем, одни процедурки.


Да не все нормально.
Можно конечно работать, как наши прадеды в 70-х, но сейчас как бы другое тысячелетие.
И битвы между ООП и ПП давно прошли.
Сейчас уже ФП в полный рост.
Поэтому работать в стиле ПП просто не удобно.
Много copy-paste.

Misha_E

Возвращаясь к ХП. Да, можно жить с ORM , но тогда базы 2 , вторая это аналитика , например на Elastic(или аналоги). Или вторая с аналитикой оракля\mssql с OLAP. Рассматривать СУБД как файл хранения можно хоть с ORM хоть без, но это использование СУБД на максимум 5-10% возможностей.Но ведь мы как минимум хотим транзакции, целостности и контроля,MVCC и наверное поэтому выбор падает на PostgreSQL , а не все остальное что не так похоже на ораклю.


Кстати ORM - ЗЛО!
Точнее ORM == ХП. :-)

А так сейчас предлагаются архитектурные решения, которые позволяют накладывать на системы хранения данных меньше ограничений.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962001
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
ХП - зло!

У них там церковь дельфи и они правоверные двузвенщики. В такой ситуации ХП - это просто часть реальности. В противном случае надо всё выкидывать и учиться кодить заново.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962018
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mad_nazgul
ХП - зло!

У них там церковь дельфи и они правоверные двузвенщики. В такой ситуации ХП - это просто часть реальности. В противном случае надо всё выкидывать и учиться кодить заново.

У нас нет ХП если чо, и делфя за 4 года проекта без ООП вообще, ни одного класса, одни функции процедуры. Я тут новенький и моя задача уйти со всего этого говна.Мне рассказывали что эти ребята еще до недавнего времени не знали что такое индекс и зачем он.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962027
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

Misha_E

Возвращаясь к ХП. Да, можно жить с ORM , но тогда базы 2 , вторая это аналитика , например на Elastic(или аналоги). Или вторая с аналитикой оракля\mssql с OLAP. Рассматривать СУБД как файл хранения можно хоть с ORM хоть без, но это использование СУБД на максимум 5-10% возможностей.Но ведь мы как минимум хотим транзакции, целостности и контроля,MVCC и наверное поэтому выбор падает на PostgreSQL , а не все остальное что не так похоже на ораклю.


Кстати ORM - ЗЛО!
Точнее ORM == ХП. :-)

А так сейчас предлагаются архитектурные решения, которые позволяют накладывать на системы хранения данных меньше ограничений.

Но ежике страдают и колятся ,но продолжают жевать кактусы переходя на postgreesql.....

Исходя из ваших доводов выше диалог вообще ни о чем если вы вспомнили про реестр ПО, я знаю не по наслышке кучу гос. компаний где оракл был есть и будет. Про Pimavera можете почитать.Я на личном опыте знаю множество ЧИСТЫХ госкомпаний , не с долей, а с контрольным пакетом , которые на этот закон положили и продолжают юзать оракл. У каждой госкомпании есть свой список используемого ПО в компании.
Если завтра на некоторой 1\6 части суши скажут пользоваться исключительно российскими компиляторами и упаси боже российскими ЯП ,то что тогда?

А поскольку диалог перешел из технических в иные аспекты я вам скажу почему на 1\6 части суши взяли в коммерческую разработку postgres и толкают ее теперь через законы. Потому что больше всего похоже на ораклю и о счастье - там не GPL лицензия и исходники не надо публиковать. Изменение названия и компиляция и все - российское ПО. Рекомендую ознакомиться с прайсом этого российского ПО , там репликация Active-Active с распределением нагрузки 500 тысяч рублей на ЯДРО, такие прайсы что оракля энтерпрайз позавидует.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962028
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
softwarer
пропущено...

А уж какой vendor lock использование языка программирования


Никак.
Если брать ЯП на JVM, то Kotlin, Scala - Open Source.
На не JVM, тоже куча ЯП в Open Source.

Есть конечно MS, со своим C#, но они вроде тоже взяли курс на Open Source.

Чем больше ветку читаю тем больше понимаю что тупой.
Какая связь между vendor lock и свободным ПО?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962038
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Я тут новенький и моя задача уйти со всего этого говна

Ууу, еретик.

Misha_E
Мне рассказывали что эти ребята еще до недавнего времени не знали что такое индекс и зачем он.

Там всё на вынос, кмк. Перепили на вебню с трезвенкой для начала.

Misha_E
Какая связь между vendor lock и свободным ПО?

Такая, что начав пилить вложенки на ракле ты будешь их пилить, пока проект не сыграет в ящик. И стабильно заносить бабки раклу. Вся суть "технологии" в этом и им там насрать, если это тебе где-то мешает.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962040
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Никак.
Если брать ЯП на JVM, то Kotlin, Scala - Open Source.

И что? Это как-то спасает от vendor lock?

Вообще забавно. Какая-нибудь open source database - это vendor lock, а ЯП - не vendor lock, потому что якобы open source.

mad_nazgul
И сколько человек могут одновременно работать, например, над одним пакетом в Oracle.

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

mad_nazgul
В разных ветках, т как проходит merge request. :-)

У меня такое ощущение, что Вы ухитряетесь видеть здесь какие-то проблемы. Наверное, такие же, как в помещении пакета в контроль версий.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962045
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Я работаю со справочниками типа Отделы(к примеру) по другому - SELECT даёт мне список сущностей Отдел в памяти приложения. Список отображается в гриде. Здесь же могу отредактировать нужное поле Отдел и обращаюсь к хранимой процедуре UPDATE, передавая в качестве параметров <ключ, timestamp, имя_отдела>. В многопользовательской среде есть возможность что кто-то уже изменил имя сущности. UPDATE будет отклонен, пользователь получит новые параметры сущности, которые будут отражены в гриде. Если ок, то пользователь все одно получит параметры сущности с новым timestamp.


Абсолютно те же запосы, которые вы выполняете внутри ХП, можно сделать со стороны клиента. В том числе проверку timestamp в условии WHERE, более того -- код проверки будет написан всего один раз, а не для каждой таблицы как у вас. В вашем случае, как мартышка, вы должны будете его дублировать.

Какие преимущества у ХП вы можете наконец ответить?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962052
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 10:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139525][22139525]
>...Абсолютно те же запосы, которые вы выполняете внутри ХП, можно сделать со стороны клиента.
<
Я показал свой код, покажите Ваш код.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962056
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster


Misha_E
Мне рассказывали что эти ребята еще до недавнего времени не знали что такое индекс и зачем он.

Там всё на вынос, кмк. Перепили на вебню с трезвенкой для начала.

По этому пути и идем.

crutchmaster


Misha_E
Какая связь между vendor lock и свободным ПО?

Такая, что начав пилить вложенки на ракле ты будешь их пилить, пока проект не сыграет в ящик. И стабильно заносить бабки раклу. Вся суть "технологии" в этом и им там насрать, если это тебе где-то мешает.


SQL стандартизирован, юзайте чистый SQL. Сколько времени заняло добавление стандартизированного MERGE в POSTGREE?

А чем там с переходом с коммерческой Java EE на сервера приложений , написанных на Питоне?JVM не опенсорс же.
Вообще я крайне негативно отношусь к разговором о бабле. Большинство пишут из под поатной винды, юзают неимоверно дорогой офисный пакет от мелкософта, юзают домены с виндовыми серваками с подключением к ним по 5 баксов. Эти же люди хотят работать за еду,зарабатывать много денег программистами. Но эти же люди считают что СУБД должны быть бесплатными , а их продукты на их основе приносить много денег. Странно все это.

Ах да, сейчас же никто в блокноте код не пишет, че насчет стоимостей сред разработок?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962058
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt

Какие преимущества у ХП вы можете наконец ответить?

Как минимум Create or Replace и отсутствие разных версий клиента с разными вариантами запросов возвращающих разные чего-то там.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962061
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>hVostt, сегодня, 10:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139525][22139525]
>...Абсолютно те же запосы, которые вы выполняете внутри ХП, можно сделать со стороны клиента.
<
Я показал свой код, покажите Ваш код.


Я уже привёл в ответ на ваш.
Или вы решили просто дурачка в очередной раз зачем-то включить?
Очень простой вопрос задал.
Не знаете, зачем вы ХП используете, так и скажите.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962062
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Но эти же люди считают что СУБД должны быть бесплатными , а их продукты на их основе приносить много денег. Странно все это.


Щас каждый школьник так считает
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962066
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 03:52 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139430][22139430]
>...это будет явно эффективнее Вашего чуда.
<
У меня нет вопросов по возврату timestamp в случае ок. Проверю код ошибки и напишу ещё один дополнительный SELECT
Код: plsql
1.
2.
3.
4.
    open rfc for 
      SELECT t."pk_Entity", t."ts_Entity", ErrorVar as rc
      FROM "tbl_Отделы" t
      WHERE (t."pk_Entity"="$pk_Entity");


Вопрос возникает при обработке результата UPDATE клиентской программой.
Надо рассматривать ситуацию ок, когда в сущности меняется только timestamp и не меняется строка грида, от ситуации ошибки, когда меняется строка грида и пользователю предлагается обработать эту ситуацию
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962073
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Ах да, сейчас же никто в блокноте код не пишет

Я пишу в вим. Dbeaver - клиент субд - тоже опенсорц.

Misha_E
JVM не опенсорс же.

Опенсорц. С чего нет?

Misha_E
а их продукты на их основе приносить много денег. Странно все это.

Ну, какой-нибудь магазин на бесплатном LAMP, сделанный фрилансером за еду вполне может приносить тонны денег.

Misha_E
Но эти же люди считают что СУБД должны быть бесплатными

Так они не бесплатные. Всё уже оплачено, просто не тобой, а кем-то, кто заказывал разработку.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962079
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 10:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139543][22139543]
>...Или вы решили просто дурачка в очередной раз зачем-то включить?
<
По мне, то что Вы привели полная ахинея.
Так делать нельзя.
Даже простенький пример со справочником отделов, а такие ляпы - нельзя менять название отдела так, как делаете это Вы. Даже если раньше отдел назывался Зелёный и у Вас в гриде он виден как Зелёный, то нельзя менять название на Красный, как это делаете Вы - Петр Петрович уже мог поменять название на Мясной. И надо крепко подумать, перед тем как делать Вашу замену.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962080
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Вопрос возникает при обработке результата UPDATE клиентской программой.
Надо рассматривать ситуацию ок, когда в сущности меняется только timestamp и не меняется строка грида, от ситуации ошибки, когда меняется строка грида и пользователю предлагается обработать эту ситуацию


Провайдер на ваш запрос:

Код: sql
1.
2.
      UPDATE "tbl_Отделы" SET "str_Отдел" = "$str_Отдел" 
      WHERE (("pk_Entity" = "$pk_Entity") and ("ts_Entity" = "$ts_Entity"));



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

При чём тут ХП??
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962081
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
У меня нет вопросов

Угу. Этот мини-пример показывает, что Вы пишете не так, как стоило бы, а так, как получилось. Соответственно, реальный аргумент в пользу ХП в Вашем исполнении - "у меня так работает".

ВМоисеев
Надо рассматривать ситуацию ок, когда в сущности меняется только timestamp и не меняется строка грида, от ситуации ошибки, когда меняется строка грида и пользователю предлагается обработать эту ситуацию

Сама по себе необходимость это рассматривать и обрабатывать крайне надуманна, но какие проблемы? Тот же приведённый мной update отлично справится с этой задачей, а кроме того, позволит ещё отдельно обработать ситуацию "неверный id либо запись удалена другим пользователем" (в Вашей реализации эта ситуация не обрабатываема в принципе).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962082
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Misha_E
Ах да, сейчас же никто в блокноте код не пишет

Я пишу в вим. Dbeaver - клиент субд - тоже опенсорц.

предпочитаю sublime или Eclipse
crutchmaster

Misha_E
JVM не опенсорс же.

Опенсорц. С чего нет?

Смотря для чего используете, там чета про использовании в сервисах было и иск к Гуглу и все такое.
crutchmaster

Misha_E
а их продукты на их основе приносить много денег. Странно все это.

Ну, какой-нибудь магазин на бесплатном LAMP, сделанный фрилансером за еду вполне может приносить тонны денег.

Так с чего он решил что его труд должен приносить тонны , а чужой не должен?
crutchmaster

Misha_E
Но эти же люди считают что СУБД должны быть бесплатными

Так они не бесплатные. Всё уже оплачено, просто не тобой, а кем-то, кто заказывал разработку.

Ну ок, они считают что не должны платить ни за что.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962083
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
По мне, то что Вы привели полная ахинея.
Так делать нельзя.


Так делать нельзя, потому что вы так решили?


ВМоисеев
Даже простенький пример со справочником отделов, а такие ляпы - нельзя менять название отдела так, как делаете это Вы. Даже если раньше отдел назывался Зелёный и у Вас в гриде он виден как Зелёный, то нельзя менять название на Красный, как это делаете Вы - Петр Петрович уже мог поменять название на Мясной. И надо крепко подумать, перед тем как делать Вашу замену.


Далеко не всегда требуется оптимистичная блокировка.
Не все изменения в БД связаны непосредственно с редактированием данных пользователем.
Оптимистичную блокировку можно вообще реализовать без использования timestamp и вообще без БД.

Просто у вас в руках молоток и вокруг всё сразу становится гвоздями.

И вы так до сих пор не можете объяснить, при чём тут ХП. И чем именно ХП тут помогает.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962095
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
реальный аргумент в пользу ХП в Вашем исполнении - "у меня так работает"


Аргументов на самом деле пока не предоставлено )
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962101
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer

И что? Это как-то спасает от vendor lock?


Тем, что если захотите свою Scala с монадами и паттерн матчингом, то можете седлать форк и сделать.
Точно так же, как сейчас происходит с JDK.
Сейчас куча вендоров предлагает свои версии JDK.
И можно выбирать тот, который "нравиться", а не только от Oracle.

softwarer

Вообще забавно. Какая-нибудь open source database - это vendor lock, а ЯП - не vendor lock, потому что якобы open source.


Open Source DB это не vendor lock.

softwarer

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


Нет. Работать может только один.
Остальные работать не смогут. Т.к. слияние изменений будет еще тем приключением.
Тем более текущие системы контроля версий, не знает, что при слиянии веток, нужно еще накатить еще этот десяток скриптов в БД разработчика.
А про системы сборки проектов, я для актуальных БД не слышал. :-)

softwarer


mad_nazgul
В разных ветках, т как проходит merge request. :-)

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


Поместить можно - работать нельзя. Т.к. без CI/CD толку мало.
Когда на merge request прилетает несколько куча изменений от нескольких разработчиков.
А если в этих изменениях используются новые/измененные таблицы и новые/измененные данные?
В Java это решается через системы сборки проектов и flyway/liquibase.
Т.е. изменения накатываются автоматом, после слияния веток.
А что делать с БД?

Можно конечно вести проект на liqubase (сам так делаю).
Но тогда зачем писать ХП, когда можно на тех же инструментах работать с java, в более удобной инфраструктуре, заточенной под java.


Если бы вендоры БД предоставили инструменты сопоставимые инфраструктурой JVM, то мои аргументы бы отпали.
Но остались бы монолит и двухзвенка, что я тоже считаю злом. :-)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962106
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Так с чего он решил что его труд должен приносить тонны , а чужой не должен?

Так это разный труд, да и труд кодера денег уже принёс.

Misha_E
Ну ок, они считают что не должны платить ни за что.

Так а зачем, если все уже, условно, есть и подходит под задачи?

Misha_E
иск к Гуглу и все такое.

Иск к гуглу про использование api и там конца еще не видно.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962112
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul


Если бы вендоры БД предоставили инструменты сопоставимые инфраструктурой JVM, то мои аргументы бы отпали.
Но остались бы монолит и двухзвенка, что я тоже считаю злом. :-)

Вы уж определитесь , вам вендор лок и инфраструктуру или БД отдельно от инфраструктуры)))

Я окончательно запутался в том что тут пишут профи, JAVA хотим, а вот ораклю не хотим -

https://docs.oracle.com/cd/B19306_01/java.102/b14187/chfive.htm

Тока подобное использование это лютый так называемый vendor lock , но за то как удобно и функционально.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962117
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 11:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139564][22139564]
>...При чём тут ХП??
<
Я одним обращением к базе данных делаю UPDATE и получаю текущее состояние сущности.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962120
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Misha_E
Так с чего он решил что его труд должен приносить тонны , а чужой не должен?

Так это разный труд, да и труд кодера денег уже принёс.

Чета я тут совсем запутался , и этот кодер пока магазин делал еду кушал, значит дальше все бесплатно? Или как?
Еще раз - мелкософт никого не напрягает, который не стесняется ядро опенбсд в винду совать , а потом 200 баков за Win10 спрашивать.
crutchmaster

Misha_E
Ну ок, они считают что не должны платить ни за что.

Так а зачем, если все уже, условно, есть и подходит под задачи?

Так и пусть сидят на линуксе и пишут в блокноте. Я ж не против. Могут еще маки выкинуть у кого есть, оно же дорого и лютый вендор лок.[/quot]
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962130
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 11:22 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139566][22139566]
>...в Вашей реализации эта ситуация не обрабатываема в принципе
<
А если подумать и попытаться понять, что возвращает SELECT в приведенном выше коде?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962135
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
А если подумать и попытаться понять, что возвращает SELECT в приведенном выше коде?

Ладно, аргумент снимается. По другим пунктам, видимо, возражений нет. Единственная причина использования ХП и двойной нагрузки на сервер - то, что Вы не умеете иначе.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962137
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Чета я тут совсем запутался , и этот кодер пока магазин делал еду кушал, значит дальше все бесплатно?

Наняли кодера за деньги написать движок. Он движок написал, з/п получил. Что еще?

Misha_E
Еще раз - мелкософт никого не напрягает, который не стесняется ядро опенбсд в винду совать , а потом 200 баков за Win10 спрашивать.

Не напрягает. Там bsd лицензия, кто под неё писал, знали на что идут. Вот когда заставляют покупать postgress PRO - напрягает.

Misha_E
Так и пусть сидят на линуксе и пишут в блокноте.

Так причём тут их личные предпочтения? Хотят платить за венду с маками, пусть юзают, кого волнует.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962143
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>hVostt, сегодня, 11:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139564][22139564]
>...При чём тут ХП??
<
Я одним обращением к базе данных делаю UPDATE и получаю текущее состояние сущности.


Это и без ХП реализуется. В общем, как обычно, вы просто не умеете работать с БД. Вам кто-то показал одну единственную возможность, и по-другому вы не умеете. Это очень плохо для разработчика, но не для того, кто разработчиком не является.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962144
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Единственная причина использования ХП и двойной нагрузки на сервер - то, что Вы не умеете иначе.


ЧТД.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962151
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Тем, что если захотите свою Scala с монадами и паттерн матчингом, то можете седлать форк и сделать.

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

mad_nazgul
Open Source DB это не vendor lock

Значит, Вы только что дезавуировали собственный аргумент. Ну или вернее, показали, что Вас заботит не истина, а победа в споре. Один класс решений "нельзя, потому что vendor lock", другой - "можно, потому что open source", хотя в реальности open source есть в обоих классах и proprietary есть в обоих классах.

mad_nazgul
softwarer

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

Нет. Работать может только один.

Ну врать-то не надо?

mad_nazgul
Остальные работать не смогут. Т.к. слияние изменений будет еще тем приключением.

Слияние изменений - плюс-минус одинаковая операция для исходников на любом ЯП. В зависимости от масштаба изменений, архитектуры решения, технологии разработки, стиля кодирования, дисциплины коммитов может быть как тривиальщиной, так и приключением. Исходники ХП в этом смысле ничем не отличаются от исходников Scala. Вы снова показали свои двойные стандарты: там, где Вам хочется, это "ужасно и нельзя работать", а там, где Вам хочется, это "нормально".

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

mad_nazgul
Тем более текущие системы контроля версий, не знает, что при слиянии веток, нужно еще накатить еще этот десяток скриптов в БД разработчика.

Вы про что вообще? Я же говорю, у Вас какие-то дикие представления о технологии.

mad_nazgul
Поместить можно - работать нельзя.

Поменяйте "нельзя" на "я не умею и не способен" - и Ваши религиозные воззрения не будут вызывать никаких возражений.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962169
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че к человеку с ХП пристали?

Еще раз вам повторю что полно проектов на чистом Оракле APEX. 3 ведущих магистральныйх провайдера на чистой оракле на ХП.
Да, может это потому-что 15 лет назад когда они начинали писать свои БД , то таких умников и новых фреймфорков не было .Но сейчас не переписывают потому что террабайтные базы работают и очень быстро на ХП , а еще потому что там уйма бизнеслогики.А всякие стартапы и интернет магазинчики могут спокойно делать на чем хотят.Потом когда стартап станет крупной компанией купят и они ораклю.

Если у вас не "трехзвенка", то вы упираетесь в нужду обновлять тысячи клиентов ели у вас не SP . Если сервер приложений , то да можете ручками селекты править
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962176
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E,

Вы вообще хотя бы примерно представляете объём данных "магистральных провайдеров"? Терабайтные базы, блин... Я бы просто ради смеха посмотрел, как Вы пытаетесь класть данные с радиуса в базу через ХП и насмерть затыкаетесь на 1/100 того потока, который вставляется без ХП.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962182
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Еще раз вам повторю что полно проектов на чистом Оракле APEX. 3 ведущих магистральныйх провайдера на чистой оракле на ХП.

И что? Как будто это что-то хорошее.

Misha_E
Но сейчас не переписывают потому что террабайтные базы работают и очень быстро на ХП

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

Вы вообще хотя бы примерно представляете объём данных "магистральных провайдеров"? Терабайтные базы, блин... Я бы просто ради смеха посмотрел, как Вы пытаетесь класть данные с радиуса в базу через ХП и насмерть затыкаетесь на 1/100 того потока, который вставляется без ХП.

Ну , т.е. даже вашу версию принят за истину, то существуют только внешние вставки из внешних систем?А то что там встроенные шедулеры, что вставка идет в одну таблицу, а планировщики (с интервалами в 10ки секунд) с помощью различного кода в ХП это раскидывают куда надо по другим таблицам это мы в расчет не берем. Ок. Что ж, вывод по ветке:
1) Оракля говно потому что платное , винда и мак норм, потому что кто за платит его личное дело
2) ХП говно потому что можно сделать без них, обратное заключение то ж говно , смотри заключение первое.
3) Все кругом говно, тока Графы Монте Кристо молодцы.

Если что упустил, дописывайте не стесняйтесь.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962198
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Misha_E

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

В мире энтерпрайз не важно хипстеры или нет, важно как работает. Когда аналоги будут работать быстрее ,дешевле или функциональнее ,тогда это поставят.
А пока в узколобом мире есть только страх хипстеров, но нет страхов начальника что хипстеры быстро разбегутся и их поделки не будут работать.

Была у меня парочка хипстерских коллег с профильным образованием, один бил в себя в грудь про то что он Жава кодер, второй про то что Шарпист. На вопрос что такое принципы ООП ответить не могли. Разумеется ничего такие хипстеры написать не могут.Писал один из них программы кликеры с помощью плагина IrfanView, второй ушел в JS.
Если вы пытались перейти на личности, поленившись почитать ветку:
1) На делфи проекты не пишу, и делфи не интересует от слова совсем.
2) За двузвенку не топлю
3) Вообще ничего не умею и сливаюсь.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962202
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
ХП говно потому что можно сделать без них, обратное заключение то ж говно , смотри заключение первое.


Вы сильно искажаете смысл сообщений себе в угоду.
С такой позицией сложно о чём-то дискутировать.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962208
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Misha_E
ХП говно потому что можно сделать без них, обратное заключение то ж говно , смотри заключение первое.


Вы сильно искажаете смысл сообщений себе в угоду.
С такой позицией сложно о чём-то дискутировать.

Это выражение было не в паблик, а конкретному человеку с узколобыми взгядами.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962216
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
Ну , т.е. даже вашу версию принят за истину, то существуют только внешние вставки из внешних систем?

Аргумент из области женской логики. Напомню: Ваша позиция "Всё надо делать на ХП". Моя позиция: "Всё надо делать подходящими средствами. ХП не является подходящим средством для всех случаев". И теперь Вы пытаетесь сказать "Ну ладно, допустим ХП в случае моего собственного примера неприменимы, ну так что же, вообще обходиться без ХП?"

Misha_E
Что ж, вывод по ветке:
1) Оракля говно ....
Если что упустил, дописывайте не стесняйтесь.

Конечно, упустили. Вывод по ветке очень простой: адепты подхода "всё на ХП" не имеют ни единого внятного аргумента в пользу своей точки зрения. Их аргументы можно объединить в следующие группы:

- я сделал вот так и не умею иначе даже если так явно плохо
- какой-то бред (это про мифические проблемы мержа итп)
- бессодержательная демагогия (отсылка к авторитету провайдеров итп).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962224
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 12:32 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139641][22139641]
>Это и без ХП реализуется. В общем, как обычно, вы просто не умеете работать с БД.
<
Покажите как надо. Приведите код пожалуйста.
Но по моему мнению, пользователь должен точно знать, что он меняет. Поэтому Ваш код для меня не приемлен.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962227
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
mad_nazgul

Если бы вендоры БД предоставили инструменты сопоставимые инфраструктурой JVM, то мои аргументы бы отпали.
Но остались бы монолит и двухзвенка, что я тоже считаю злом. :-)


Вы уж определитесь , вам вендор лок и инфраструктуру или БД отдельно от инфраструктуры)))


Ну, например, Java это Open Source проект.
Инфраструктура вокруг него тоже Open Source (по большей части)

Но даже для PostgreSQL нет инфраструктуры сопоставимой для JVM/Java

Поэтому только усилиями вендора/вендоров можно создать что-то подобное.
Желательно Open Source.

Misha_E

Я окончательно запутался в том что тут пишут профи, JAVA хотим, а вот ораклю не хотим -

https://docs.oracle.com/cd/B19306_01/java.102/b14187/chfive.htm

Тока подобное использование это лютый так называемый vendor lock , но за то как удобно и функционально.


Я не не хочу Oracle, я против того, как Oracle видит использование свой БД.
Как БД Oracle меня устраивает. И я с ней нормально работаю.

Но вот ХП для меня ЗЛО! :-)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962231
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 12:32 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139642][22139642]
>ЧТД
<
<Бред.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962239
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Поменяйте "нельзя" на "я не умею и не способен" - и Ваши религиозные воззрения не будут вызывать никаких возражений.


У меня опыт только моих наблюдений.
Видел парочку проектов на Oracle c ХП "со стороны".
Ни в одном из них система контроля версий не использовалась для ХП.
В лучшем случае через бекапы БД.
И честно, я не представляю, как все это запихнуть в пайплайн "Система контроля версий" CI/CD.
Очень много ручного труда, и откат изменений так же ручной и очень сложный.

Сам же для работы с изменениями в БД использую liquibase или flyway.
Но это без ХП, максимум view-ки.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962241
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
по моему мнению, пользователь должен точно знать, что он меняет.

И Вы не знаете про существование UPDATE...RETURNING.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962250
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt

Потому что, судя по вашей ХП, она не только выполняет самую обычную команду UPDATE, которую можно совершенно таким же образом выполнить с клиента. Но и возвращает результат запроса, который мне нафиг не упал.

Ну да. Принцип CQS. То что изменяет состояние не должно ничего возвращать, а то что что-либо возвращает не должно ничего изменять.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962257
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
У меня опыт только моих наблюдений. Видел парочку проектов на Oracle c ХП "со стороны"

То есть Вы даже сами не работали, не пытались сделать и не спрашивали. Но уверенно говорите "нельзя". Как можно в такой ситуации говорить хоть о каком-то уровне разговора?

mad_nazgul
Ни в одном из них система контроля версий не использовалась для ХП.
В лучшем случае через бекапы БД.

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

mad_nazgul
И честно, я не представляю, как все это запихнуть в пайплайн "Система контроля версий" CI/CD

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

mad_nazgul
Очень много ручного труда, и откат изменений так же ручной и очень сложный.

Ээ... Вы это про кнопочку "пересоздать контейнер" или про сервис, выполняющий ровно ту же операцию по запросу из средств автоматизации? К тому же, если я правильно помню, в модном сейчас devops, в связке с которым чаще всего и говорят про ci/cd, откат изменений вообще не предусмотрен, идеология "только вперёд, бац-бац и в продакшн, потом исправим".
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962278
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
Ну , т.е. даже вашу версию принят за истину, то существуют только внешние вставки из внешних систем?

Аргумент из области женской логики. Напомню: Ваша позиция "Всё надо делать на ХП". Моя позиция: "Всё надо делать подходящими средствами. ХП не является подходящим средством для всех случаев". И теперь Вы пытаетесь сказать "Ну ладно, допустим ХП в случае моего собственного примера неприменимы, ну так что же, вообще обходиться без ХП?"

про все на ХП не помню, даже уточнял в каких случаях лучше , а в каких вариантов нет не в ХП писать..

softwarer
Misha_E
Что ж, вывод по ветке:
1) Оракля говно ....
Если что упустил, дописывайте не стесняйтесь.

Конечно, упустили. Вывод по ветке очень простой: адепты подхода "всё на ХП" не имеют ни единого внятного аргумента в пользу своей точки зрения. Их аргументы можно объединить в следующие группы:

Были ,но я начинаю вас вспоминать, вам же чужие аргументы не интересны.
softwarer


- я сделал вот так и не умею иначе даже если так явно плохо
- какой-то бред (это про мифические проблемы мержа итп)
- бессодержательная демагогия (отсылка к авторитету провайдеров итп).

Авторитета у провайдеров нет , у них большие БД с большой кучей данных и отчетов по этим данным.

А ТЕПЕРЬ КАПСЛОКОМ - Я СЛИЛСЯ, ТОЧКА.

Проблем с мержом нет, у людей есть проблемы с вендорлоком, который не связан с платностью или бесплатностью.
Вtндорлок всегда решался стандартами , в субд это стандарты sql, тока вот в чем печалька, СУБД на которую переходят для избежания вендорлока мердж добавляет более 10 лет. Все бы ничего, но мердж очень удобная вещь позволяющая удобно делать вещи которые в обычной практике удобнее делались на вендорлочных расшиниях SQL.

И еще раз - я слился, не надо меня убеждать.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962285
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
про все на ХП не помню

22138868
22139058

и т. п.

Misha_E
даже уточнял в каких случаях лучше

Очень односторонне уточняли. В формулировке "я не знаю случаев, когда лучше" итп.

Misha_E
Были

Когда были, на них легко дать ссылку. А подобное утверждение без ссылки - опять же демагогия. Равно как и ссылка на какой-либо опровергнутый аргумент.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962293
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Misha_E
про все на ХП не помню

22138868
22139058

и т. п.

Не нашел там указания что SP ONLY, первая ссылка вообще вопрос....

softwarer

Misha_E
даже уточнял в каких случаях лучше

Очень односторонне уточняли. В формулировке "я не знаю случаев, когда лучше" итп.

в 3 или 4 раз повторю. Например APEX.[/quot]

softwarer

Misha_E
Были

Когда были, на них легко дать ссылку. А подобное утверждение без ссылки - опять же демагогия. Равно как и ссылка на какой-либо опровергнутый аргумент.

22139669

Я слился, не забывайте.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962303
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
в 3 или 4 раз повторю. Например APEX.

Что APEX? APEX - это средство разработки. С тем же успехом можно говорить "для C++ лучше всё на ХП". Если APEX выдвигает по этому поводу какие-то нелепые ограничения (не пользовался, не знаю) - это его идиотизм и ничего больше.

Misha_E
Я слился, не забывайте.

Я даже помню, что это произошло ещё пару страниц назад.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962322
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Ни в одном из них система контроля версий не использовалась для ХП.
В лучшем случае через бекапы БД.
И честно, я не представляю, как все это запихнуть в пайплайн "Система контроля версий" CI/CD.
Очень много ручного труда, и откат изменений так же ручной и очень сложный.

У вас ХП, таблицы и проч. только мышом в дизайнере умеют рисовать, похоже?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962323
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

APEX это когда у тебя весь код в хранимках в том числе и код web страницы....
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962324
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
в том числе и код web страницы....

Это образец эталонной архитектуры?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962325
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
APEX это когда у тебя весь код в хранимках в том числе и код web страницы....

Могу лишь выразить его пользователям мои глубочайшие соболезнования. Этот архитектурный антипаттерн я называю "однозвенное мышление".
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962329
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Могу лишь выразить его пользователям мои глубочайшие соболезнования. Этот архитектурный антипаттерн я называю "однозвенное мышление".

Живуч стереотип, что если что-то это "типа крутой этерпрайз за большие кучи денег", то на это всем равнятся надо. На самом деле таких многовековых залежей говнокода, как в энтерпрайзе нет больше, наверное, нигде.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962331
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
На самом деле таких многовековых залежей говнокода, как в энтерпрайзе нет больше, наверное, нигде.

По моей практике, самые залежи говнокода в интеграторах (ну, вернее у клиентов интеграторов), в первую очередь в госструктурах и на внедрениях всяких САПов. Энтерпрайз по крайней мере пишет для себя, и в нём работают люди, которые будут много лет поддерживать и развивать именно то, что написали. А в интеграторах подход откатил - сдал - ушёл - забыл, заинтересованность в качестве решения отрицательная.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962334
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Misha_E
в том числе и код web страницы....

Это образец эталонной архитектуры?

Что ж тут тролли то все какие слабенькие?
Это образец (в понимании одного из вендоров) того как оно называется - Application Express.
Надеюсь перевод не нужен.При чем судя по гуглу , многим этого в "освободите от вендор лока"(пострессе) не хватет
и люди ставят Oracle XE и из него DBLINK. Чудны дети твои,Боженька...
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962336
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, про APEX я пожалуй соглашусь, что это попытка посадить на vendor lock. Ровно как и предыдущее подёргивание в этом направлении - Oracle Forms - оно не для того, чтобы удобно и хорошо разрабатывать приложения, а для того, чтобы дебилы, которые умеют только PL/SQL, всю жизнь только на нём и оставались - с соответствующим влиянием на рынок рабочей силы и, соответственно, рынок платформ.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962339
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Кстати, про APEX я пожалуй соглашусь, что это попытка посадить на vendor lock. Ровно как и предыдущее подёргивание в этом направлении - Oracle Forms - оно не для того, чтобы удобно и хорошо разрабатывать приложения, а для того, чтобы дебилы, которые умеют только PL/SQL, всю жизнь только на нём и оставались - с соответствующим влиянием на рынок рабочей силы и, соответственно, рынок платформ.

Ага и существовал он до Ноды,Джанги и других. Тогда еще лочить не от кого было , тока если от мелкософта.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962357
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Dimitry Sibiryakov, сегодня, 14:14 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139758][22139758]
>И Вы не знаете про существование UPDATE...RETURNING.
<
Где?
Здесь нет.
И что сиё даёт?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962358
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>Dimitry Sibiryakov, сегодня, 14:14 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139758][22139758]
>И Вы не знаете про существование UPDATE...RETURNING.
<
Где?
Здесь нет.
И что сиё даёт?

Предположу что человек имел ввиду это -
http://firebirdsql.su/doku.php?id=returning
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962365
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
и люди ставят Oracle XE

Я хорошо помню времена, когда MS SharePoint по энтерпрайзам разлетался, как пирожки в голодный год. А сказать почему? МС платила партнерам бешенный по сравнению с другими продуктами процент за его впаривания своим клиентам. А у меня после работы тогда с ним до сих пор от одного упомминания приступы тахикардии начинаются. Я тогда случайно пообщался с одним человеком из МС, который одно время участвовал в его разработке и он мне рассказывал, что этим (его разработкой) регулярно занималась куча случайных людей, т.е. если в МС какое-то время какого-нибудь девелопера было нечем занять, то его по-дефолту отправляли в команду шейрпойнта
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962378
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>hVostt, сегодня, 12:32 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139641][22139641]
>Это и без ХП реализуется. В общем, как обычно, вы просто не умеете работать с БД.
<
Покажите как надо. Приведите код пожалуйста.
Но по моему мнению, пользователь должен точно знать, что он меняет. Поэтому Ваш код для меня не приемлен.


Вы меня совершенно не слышите, или не хотите услышать, или (что печально) не способны воспринимать информацию

Возьмём ещё раз мой пример, в котором ничего не меняется с точки зрения клиента:

Код: c#
1.
2.
3.
var department = repository.Get<Department>(id);
department.Name = "Новое имя отдела";
repository.Save(department);



В репозиторий можно добавить поддержку оптимистичной блокировки:

Этот код выполнит следующие запросы:

Код: sql
1.
2.
3.
select Id, Revision, Name from Departments where Id = @id;

update Departments set Name = @name where Id = @id and Revision = @revision;



Теперь, репозиторий выбросит специальное исключение, если не удалось обновить запись из-за нарушения номер ревизии (под которым можно сохранять инкремент изменений, или штамп времени).

Вот так можно ловить исключение:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
var department = repository.Get<Department>(id);
department.Name = "Новое имя отдела";
try {
   repository.Save(department);
}
catch (OptimisticLockException ex)
{
   Console.WriteLine("Сорян бро, запись была уже кем-то изменена");
}



Очень упрощённый пример метода Save репозитория:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class Repository
{
   ....

   public void Save<TEntity>(TEntity entity)
     where TEntity: EntityBase
   {
       var sqlText = _sqlGenerator.EntityUpdate<TEntity>();
      // для сущности Department sqlText будет содержать примерно такой SQL
      //    update Department set Name = @name where Id = @id and Revision = @revision
      var count = _connection.Execute(sqlText, entity);
      if(count == 0) 
        throw new OptimisticLockException("Сущность {0} с Id = {1} уже кем-то изменена", typeof(TEntity).Name, entity.Id);
   }

   ...
}
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962380
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

А теперь, когда я уже вам кода тут понаписал.

Может вы соизволите наконец объяснить, зачем вам ХП?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962403
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев

Дополню по этой части, чтоб вопросов небыло, а то я всё пытаюсь на концептуальном уровне разговаривать, но с вами не получается:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
class Repository
{
   ....

   public void Save<TEntity>(TEntity entity)
     where TEntity: EntityBase
   {
       var sqlText = _sqlGenerator.EntityUpdate<TEntity>();
      // для сущности Department sqlText будет содержать примерно такой SQL
      //    update Department set Name = @name and Revision = @revision where Id = @id and Revision = @currentRevision
      var currentRevision = entity.Revision;
      entity.Revision += 1;
      var parameters = new DynamicParameters(entity);
      parameters["currentRevision"] = currentRevision;
      var count = _connection.Execute(sqlText, parameters);
      if(count == 0) 
        throw new OptimisticLockException("Сущность {0} с Id = {1} уже кем-то изменена", typeof(TEntity).Name, entity.Id);
   }

   ...
}
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962417
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 17:45 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139917][22139917]
>...Может вы соизволите наконец объяснить, зачем вам ХП?
<
Мне нужно текущее состояние сущности после операций изменения для представления клиенту.
Клиент работает со списком сущностей в гриде. Корректирует нужную и выполняет UPDATE. В результате отображаемое состояние сущности может не изменится (в случае ок) или изменится на текущее её состояние в базе + отображение состояние не штатной ситуации.
Привожу пример фрагмента кода приложения. Он одинаков и для MS SQL и PostgreSQL.
Код есть шаблон для всех подобных операций с сущностями.
wsp - класс, отвечающий за работу с базой данных. Для MS SQL свой, для PostgreSQL - свой.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
    //-- UPDATE 
    //-- Обработка нажатия кнопки сохранения изменений записи в базу данных
    //=========================================================================
    private void btc_Сохранить_Click(object sender, RoutedEventArgs e) {
      try {
        wspErr = null; if (!bl_Разрешение) return; bl_Разрешение = false;  //-- Запрещаем пользовательский интерфейс
        if (dgv_Entity.SelectedIndex == -1) return;  //-- Нет выбора
        //-- Получим индекс элемента коллекции
        xrow = (row_Entity)dgv_Entity.SelectedItem; iRow = oc_Entity.IndexOf(xrow);

        //-- выполнение хранимой процедуры
        wsp.sp_Параметры(3);
        wsp.sp_Параметр("pk_Entity", xrow.pk_Entity); wsp.sp_Параметр_ts("ts_Entity", xrow.ts_Entity);
        wsp.sp_Параметр("str_Отдел", xrow.str_Отдел);
        xrow = null; lst_Entity = null;
        wsp.Entity_SP("au_Отделы_upd", wsp.sp_Upd, RowToEntity); if ((wspErr = wsp.wspErr) != null) return;
        if (xrow == null) { wspErr = "Ошибка выполнения операции"; return; }

        dgv_Entity.CancelEdit(); xrow.chb_Entity = false;
        oc_Entity.RemoveAt(iRow); oc_Entity.Insert(iRow, xrow); dgv_Entity.SelectedIndex = iRow;
      }
      catch (Exception ex) { wspErr = ex.Message; }
      finally {
        bl_Разрешение = true;      //-- Разрешаем пользовательский интерфейс
        if (wspErr != null) { MessageBox.Show(wspErr, caption_Entity, MessageBoxButton.OK); }
      }
    }
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962433
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев

btc_ Сохранить _Click

"Ой, всё" (с)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962437
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Мне нужно текущее состояние сущности после операций изменения для представления клиенту.


Нет не нужно. У вас оптимистичная блокировка.


ВМоисеев
Привожу пример фрагмента кода приложения. Он одинаков и для MS SQL и PostgreSQL.
Код есть шаблон для всех подобных операций с сущностями.


Ну и посмотрите на свой код внимательно. Кроме этого кода, у вас ещё есть код в БД в виде ХП.
По сути у вас очень много дублирующегося мусора.
Это, извините, говнокод (даже не смотря на качество и стиль кода).


ВМоисеев
Клиент работает со списком сущностей в гриде. Корректирует нужную и выполняет UPDATE. В результате отображаемое состояние сущности может не изменится (в случае ок) или изменится на текущее её состояние в базе + отображение состояние не штатной ситуации.


Ну и при чём тут ХП, опять же?

Описанное вами поведение не правильно с точки зрения UX, но если забить на это, то никто не мешает сделать запрос актуальных данных при необходимости.

Короче, я так и не услышал ответ на вопрос, зачем вам ХП.
Ладно бы, у вас вся логика в ХП была сосредоточена, но тут и на клиенте логика и в БД логика, говнокод размазан по двум разным системам. Просто рай для сопровождения и развития.

Зачем? Только не говорите, что это всё ради экономии на лишнем запросе? Эта экономия нафиг никому не упёрлась, она не нужна и откровенно вредна.

Очередная преждевременная оптимизация . Уже, простите, блевать тошнит. Когда же вы уже научитесь... работать, а не фигнёй страдать...
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962456
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 19:09 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139994][22139994]
>Это, извините, говнокод (даже не смотря на качество и стиль кода).
<
Что сказать, если одеть любителя желудей во фрак, мало что меняется. Не понимает он вкус моих апельсинов.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962517
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
даже не смотря на качество и стиль кода

писать вот так:
Код: c#
1.
wspErr = null; if (!bl_Разрешение) return; bl_Разрешение = false; 


это не стиль, а говностиль. У него Enter на клавиатуре выломан там что ли?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962521
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
и на клиенте логика и в БД логика, говнокод размазан по двум разным системам. Просто рай для сопровождения и развития.

Надо еще для полного комплекта по паре-тройке триггеров на каждую таблицу навесить, надобавлять вычисляемых полей и во вьюхи с аггрегацией позаворачивать.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962932
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Что сказать, если одеть любителя желудей во фрак, мало что меняется. Не понимает он вкус моих апельсинов.


Я понял, что с вами не имеет смысла серьёзно ни о чём дискутировать. Так же не имеет смысла приводить вам какой-то код, непонятно зачем вы его просите, если вы его воспринимаете как баран, глядя на новые ворота.

Вместо адекватного ответа на заданный вопрос вы несёте какую-то дичь, упражняетесь в литературной эквилибристике, видимо ошиблись форумом, вам нужно в гуманитарный.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962934
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
и на клиенте логика и в БД логика, говнокод размазан по двум разным системам. Просто рай для сопровождения и развития.

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


Я думаю, если бы ВМоисееву кто-то в своё время показал ещё и триггеры, то логика была бы ещё размазана и по триггерам
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39962936
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
писать вот так:
Код: c#
1.
wspErr = null; if (!bl_Разрешение) return; bl_Разрешение = false; 



это не стиль, а говностиль. У него Enter на клавиатуре выломан там что ли?


Да, тут все печально, каждая строка кода вызвает слёзы.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963026
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Я думаю, если бы ВМоисееву кто-то в своё время показал ещё и триггеры, то логика была бы ещё размазана и по триггерам

1. Название его хранимой процедуры вызывает ощущение, что она либо переделана из триггера, либо играет его роль. Я это ещё тогда отметил.

2. В триггерах нет ничего плохого. Разумеется, при уместном использовании.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963110
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, вчера, 03:52 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139430][22139430]
>...это будет явно эффективнее Вашего чуда.
<
Сделал так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE OR REPLACE FUNCTION public."au_Отделы_upd"("$pk_Entity" uuid, "$ts_Entity" bigint, "$str_Отдел" character varying)
 RETURNS refcursor
 LANGUAGE plpgsql
AS $function$  declare
    ErrorVar int;
    rfc refcursor;
  begin
    ErrorVar := 0;
    begin
      UPDATE "tbl_Отделы" SET "str_Отдел" = "$str_Отдел" 
      WHERE (("pk_Entity" = "$pk_Entity") and ("ts_Entity" = "$ts_Entity"));
      exception when others then  ErrorVar := 1;
    end;
    if ErrorVar = 1 then 
      open rfc for 
        SELECT t."pk_Entity", t."ts_Entity", t."str_Отдел"
        FROM "tbl_Отделы" t
        WHERE (t."pk_Entity"="$pk_Entity");
    else 
      open rfc for 
        SELECT t."ts_Entity"
        FROM "tbl_Отделы" t
        WHERE (t."pk_Entity"="$pk_Entity");
    end if;   
    return rfc;
  end;
$function$
; 
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963114
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Сделал так:

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


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

Даже не знаю, смеяться или плакать.


Если бы на ревью в моей команде попал вот такой код, это был бы скорее всего скандал.

Выясняли бы, не заболел ли автор какой-нибудь серьёзной болезнью, а если нет, то кто его такого нанял...
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963138
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Но зачастую ХП и триггеры так применяют, что хочется назвать их злом...

Хотел бы я увидеть инструмент, который нельзя так применить и который при этом способен на что-то полезное.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963139
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Выясняли бы, не заболел ли автор какой-нибудь серьёзной болезнью, а если нет, то кто его такого нанял...

Коллега присутствует на форуме уже лет пятнадцать, и если бы я захотел дать ему характеристику по тому, что видел за это время, то употребил бы слова "энтузиаст" и "самоучка". Насколько я помню, он работает в каком-то достаточно удалённом месте над стабильной учётной задачей, и здорово похоже, что в одиночку. Как человек он довольно симпатичен, и поэтому мне неприятны такие высказывания, но как специалист... действуя с наилучшими намерениями, часто не обращает внимания на те моменты, которые я полагаю базовыми и очевидно необходимыми. Например, насколько я помню, в одной из наших первых бесед я безуспешно пытался объяснить ему важность согласованности данных в запросе. Приводил следующий пример: допустим, нам нужен отчёт по какой-то ТМЦ: сколько её единиц на каждом из складов и сколько на всех складах вместе. Так вот, мне так и не удалось объяснить, чем плох результат

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Отчёт по утюгам на складах:
===========================

На первом складе   10
На втором складе   20
На третьем складе  30

*** ВСЕГО ***     100

Коллега считал, что если во время формирования отчёта произошло движение ТМЦ, то в таком документе нет ничего криминального.

Впрочем, справедливости ради, за эти годы он заметно вырос и в здравости суждений, и в техническом плане.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963140
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Коллега присутствует на форуме уже лет пятнадцать, и если бы я захотел дать ему характеристику по тому, что видел за это время, то употребил бы слова "энтузиаст" и "самоучка".


Я стараюсь не давать характеристику людям. Оценке и суждению подвергаются комментарии, сказанные слова и выполненные действия.

Понятно, что большинство людей склонны моментально всё воспринимать на личный счёт, конвертировать в обиду и вставать в защитную позу: не доросли вы ещё до моей музыки! (с) :)


softwarer
Коллега считал, что если во время формирования отчёта произошло движение ТМЦ, то в таком документе нет ничего криминального.

Впрочем, справедливости ради, за эти годы он заметно вырос и в здравости суждений, и в техническом плане.


Да вот здесь и проблема. Уже довольно с давних пор, больше года точно, коллега периодически появляется в тредах с одним и тем же своим кодом. С одними и теми же суждениями, без какого-либо прогресса, без каких-либо изменений.

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

Достойно ли подобное уважения? Нет. Ни в коем случае. Программирование, разработка -- это не художество и не поэзия. Здесь нет и не может быть фломастерной красоты. Типа мне нравится так, а вам эдак. Это унылый, бесперспективный, детский и наивный подход. Нужно с этим бороться.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963157
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Коллега присутствует на форуме уже лет пятнадцать, и если бы я захотел дать ему характеристику по тому, что видел за это время, то употребил бы слова "энтузиаст" и "самоучка"

В моем представлении, 15 лет энтузиазма и самоучения - это как-то многовато. :))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963158
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
2. В триггерах нет ничего плохого. Разумеется, при уместном использовании.

И триггера и хп, функции и все подобное на сегодняшний день это адское легаси, оставшееся в СУБД со времен двузвенок. При нынешнем выборе платформ для создания апп-серверов про все это лучше уже напрочь забыть - пускай БД хорошо занимается только своим основным делом, т.е. эффективно и надежно хранит данные, а что-либо другое в ней это полный хлам.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963163
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала не плохо бы в платформах для APP разбираться, а не лить ведро помоев не разобравшись что такое APEX)))
А так то каждая лягуха за свое болото топит.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963167
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
И триггера и хп, функции и все подобное на сегодняшний день это адское легаси, оставшееся в СУБД со времен двузвенок. При нынешнем выборе платформ для создания апп-серверов про все это лучше уже напрочь забыть - пускай БД хорошо занимается только своим основным делом, т.е. эффективно и надежно хранит данные, а что-либо другое в ней это полный хлам.
Бред какой-то. Школу сначала закончи.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963191
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Бред какой-то. Школу сначала закончи.

Уважаемый, я школу закончил еще до того, как СССР распался. А вот тебе следовало бы сходить в ту школу, где учат аргуменировать свое мнение чем-то, кроме "бред какой-то".
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963222
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, вчера, 23:51 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22140912][22140912]
>Даже не знаю, смеяться или плакать.
<
Думаю Вам следует обратится к психиатру. Забывчивость + не адекватная реакция.
Здесь Вы писали - "Вы действительно так непринуждённо удваиваете нагрузку на сервер только ради того, чтобы вернуть клиенту ровно те же данные, которые у него уже есть?"
Найдите смелость признать, что клиенту возвращаются не совсем те же данные, которые у него уже есть. См. параметр ts_Entity.
Согласен - в случае ок, возвращалась избыточная информация.
Сейчас скорректировано.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963240
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Думаю

Не стоит называть процессы, происходящие в Вашей голове, этим словом.

ВМоисеев
Здесь Вы писали - "Вы действительно так непринуждённо удваиваете нагрузку на сервер

Безусловно, писал. И показал, как сделать ровно то же самое, что написано в Вашем коде, без лишних операций. После чего Вы радостно "переделали" так, что опять же подаёте на сервер двойную нагрузку, только ещё вдобавок бессмысленно скопипастили запрос, сделав код ещё хуже чем был. И выдаёте по этому поводу кучу нелепого пафоса, присыпанного хамством, а сейчас уже готовитесь выдать очередную порцию бреда по поводу того, что я якобы не заметил разные списки полей в этих запросах.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963285
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 10:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141084][22141084]
>Безусловно, писал…
<
Да нет, не об этом - "вернуть клиенту ровно те же данные, которые у него уже есть". После UPDATE у клиента и сервера разные ts_Entity.
Уточните, о каком удвоении нагрузки Вы пишите?
И право, не Вам говорить о хамстве.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963358
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
softwarer
2. В триггерах нет ничего плохого. Разумеется, при уместном использовании.

И триггера и хп, функции и все подобное на сегодняшний день это адское легаси, оставшееся в СУБД со времен двузвенок. При нынешнем выборе платформ для создания апп-серверов про все это лучше уже напрочь забыть - пускай БД хорошо занимается только своим основным делом, т.е. эффективно и надежно хранит данные, а что-либо другое в ней это полный хлам.


Ну зачем вы так?!
А как же говнокод?
А как же "фигак, фигак и в продакшен" без тестирования?
А как же "удалит прод-базу без бекапа"?

Вы предлагаете заменить романтику и адреналин правок в продуктовой базе, на унылую прозу пайплайна разработки (обложенную кучей тестов в три слоя)?

Зачем так?

<:o)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963363
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
L_argo
Бред какой-то. Школу сначала закончи.

Уважаемый, я школу закончил еще до того, как СССР распался. А вот тебе следовало бы сходить в ту школу, где учат аргуменировать свое мнение чем-то, кроме "бред какой-то".
Срач на подобную тему тут регулярно возникает неск. раз в год.
Надоело уже аргументировать с 2001 г. И не надо смотреть на дату моего ника. Он второй.
Хранить абсолютно всю SQL логику на стороне апп-сервера это еще более дичайшее легаси, т.к. мода на тот или иной апп-сервер быстро проходит. И все надо переписывать. А БД-сервера почти вечные. И SQL гораздо более стабильный и стандартный язык чем очередной хайпо-гик-сервер на новомодном хайпо-гик-фреймворке.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963367
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
fkthat
И триггера и хп, функции и все подобное на сегодняшний день это адское легаси, оставшееся в СУБД со времен двузвенок. При нынешнем выборе платформ для создания апп-серверов про все это лучше уже напрочь забыть - пускай БД хорошо занимается только своим основным делом, т.е. эффективно и надежно хранит данные, а что-либо другое в ней это полный хлам.
Бред какой-то. Школу сначала закончи.

ды в школах именно этому и учат
что бы написать калькулятор надо - фронтенды на 3 фреймворках + нативные, аппсерверы-агрегаторы- кэшеры (где надо обязательно иметь какой нить NOSQL СУБД и т.д. фигню) управляемые какой нить системой балансировки и т.д., микросервисы с собственными СУБД) обернутые в докеры и загнанные в кубернеты
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963375
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело, по моему, обстоит еще хуже - они не пишут никаких калькуляторов!
Я за эти годы видел всего около 10 калькуляторов в разделе "Информационные системы" или как там.
Такое впечатление, что вся их работа - это читать и писать (это у них не всегда удается, как я понимаю - т.е. что там получилось после этого им пофиг).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963393
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>softwarer, сегодня, 10:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141084][22141084]
>Безусловно, писал…
<


softwarer,

Самому себе и вам советую забить :)

Это опять 25, человек вместо того, чтобы чему-то научиться, углубить свой опыт и знания, откровенно тупит и занимается оправданием своего говнокода, своего невежества и своей лени.

Это литературный цербер, дурака не переспоришь. Зря теряете время (и я в очередной раз).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963396
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Хранить абсолютно всю SQL логику на стороне апп-сервера это еще более дичайшее легаси, т.к. мода на тот или иной апп-сервер быстро проходит. И все надо переписывать. А БД-сервера почти вечные. И SQL гораздо более стабильный и стандартный язык чем очередной хайпо-гик-сервер на новомодном хайпо-гик-фреймворке.


Нет, надо размазать логику тонким слоем по БД и апликухам.
Вот он, совет настоящего джедая.

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

Просто скажите правду, ей богу. Вы убили много времени на познание дао разработки в БД и вам очень жаль потерянного времени. Вы будете биться за свой опыт до конца. И вам много таких. Мне вас жаль.

L_argo
Срач на подобную тему тут регулярно возникает неск. раз в год.


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


Странное у тебя мировоззрение. Первое. Никто не знает что будет завтра. И что от этого калькулятора потребуется. Второе. Людям нужно учиться писать и делать серьёзные системы. Да, на калькуляторах.

Чтобы потом вот таких феноменов как ВМоисеев не случалось.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963413
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Я не вижу "калькуляторов" совсем!!!
Только все больше и больше растущий инфраструктурный удав, который стремится включить в себя все и вся, но никак не найдет - а куда ж воткнуть ПОЛЕЗНЫЙ ФУНКЦИОНАЛ - "калькулятор".
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963414
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 15:02 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141329][22141329]
>...откровенно тупит и занимается оправданием своего говнокода, своего невежества и своей лени.
<
Ну что сказать - перестаньте хрюкать их собственной лужи и говорите по делу, если есть что.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963416
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Ну что сказать - перестаньте хрюкать их собственной лужи и говорите по делу, если есть что.


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

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

Я вам по вашим просьбам код привёл. И другие коллеги делали это тысячу раз, объясняли вам, рассказывали, аргументировали.
Вы понимаете, что вы непробиваемый?

Нафига вам код, который вы просили? Вы ведь ничего так и не поняли, зачем людей парите своими вопросами, если в ответ начинаете доказывать, что у вас свои вкус апельсинов или что-то там у вас ещё по свинячей теме постоянно из вас вылазит? Что за фетиш вообще такой связанный со свиньями? )))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963418
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
hVostt,

Я не вижу "калькуляторов" совсем!!!
Только все больше и больше растущий инфраструктурный удав, который стремится включить в себя все и вся, но никак не найдет - а куда ж воткнуть ПОЛЕЗНЫЙ ФУНКЦИОНАЛ - "калькулятор".


Ну незнаю.
Ты предлагаешь начать каждый раз разрабатывать с нуля базы данных, с нуля разрабатывать алгоритмы для работы с сетью, с изображениями и т.д. и т.п. Обязательно каждый должен втулить себе собственную реализацию теории расписаний?

Чтобы была вычислительная сложность у ребят, так? :)

А то, что поколение работало, чтобы создать огромных стек технологий для того, чтобы сосредоточиться на бизнесе, тебя это в итоге расстраивает :)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963425
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt


А то, что поколение работало, чтобы создать огромных стек технологий для того, чтобы сосредоточиться на бизнесе, тебя это в итоге расстраивает :)

Да какой бизнес?
Именно стек и продается бизнесу, а остальное типа он сам как то должен воткнуть туда.
Зачем прикладному программисту это стек?
Он должен АВТОМАТИЧЕСКИ прибиндиться к прикладному коду (или "обернуть" прикладной код), ЕСЛИ востребован.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963430
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
А БД-сервера почти вечные. И SQL гораздо более стабильный и стандартный язык чем очередной хайпо-гик-сервер на новомодном хайпо-гик-фреймворке.

Да, вечные. Века пройдут, а БЛ в БД так и будут писать на языке из 1971 года.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963448
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
Да какой бизнес?
Именно стек и продается бизнесу, а остальное типа он сам как то должен воткнуть туда.
Зачем прикладному программисту это стек?
Он должен АВТОМАТИЧЕСКИ прибиндиться к прикладному коду (или "обернуть" прикладной код), ЕСЛИ востребован.


Чистый прикладной программист это утопия.
Таких уже нет.
Ты говоришь про интеграторов.
И вот про что ты говоришь уже сотни раз реализовано, и в твоём ВИПРОСе, и в 1С и в SAP и много-много где ещё. Да, это не похоже на идеальный мир, но в целом свои задачи там интеграторами успешно решаются. Можно лучше и намного, но бизнесу не нужно лучше, ему нужно удовлетворить свои потребности за приемлемую цену.

Другой спектр задач, это платформы и системы, где много программистов, ты почему-то считаешь, что можно запихнуть в коробочку и превратить их в интеграторов.

Это всего лишь от того, что у тебя ограниченный опыт в конкретном контексте (где ты внедрил свой ВИПРОС), и с этой колокольни ты не видишь ни деталей, ни задач, ни каких-либо ньюансов. Поэтому с твоей точки зрения всё так уныло :)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963451
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
L_argo
А БД-сервера почти вечные. И SQL гораздо более стабильный и стандартный язык чем очередной хайпо-гик-сервер на новомодном хайпо-гик-фреймворке.

Да, вечные. Века пройдут, а БЛ в БД так и будут писать на языке из 1971 года.


Не.. эти динозавры рано или поздно повымрут и некому будет устраивать холивары )
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963473
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
После UPDATE у клиента и сервера разные ts_Entity

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

ВМоисеев
Уточните, о каком удвоении нагрузки Вы пишите?

Ну наконец-то. Не пробовали задуматься над этим вопросом хотя бы на прошлой странице, раз уж это Вам не очевидно?

Тогда очередной ликбез. Реляционные СУБД можно рассматривать как программы, оперирующие данными на диске. Дисковый ввод-вывод буферизуется блоками стандартного объёма (иногда их называют страницами или прочими подобными словами). Например, Oracle по умолчанию использует блоки размером 8Кб. В других СУБД могут быть технические отличия, но суть везде одна. Если Вам нужно прочитать один байт - будут прочитаны как минимум восемь килобайт; если Вам нужно записать один байт - будут записаны как минимум восемь килобайт (а перед этим, если потребуется, ещё и прочитаны). Но для того, чтобы добраться до этого байта, нужно ещё и узнать его адрес на диске - а для этого в случае доступа по первичному ключу, скорее всего, будет использован индекс. То есть с диска будут считаны ещё килобайт пятьдесят индексной информации, чтобы добраться до этого байта. То есть даже очень мелкое изменение оказывается довольно дорогой операцией.

Ситуацию отчасти спасает кэширование. Считанные блоки данных кэшируются в оперативной памяти и позволяют следующие операции с этими данными уже без нового обращения к диску. Однако, сервер БД - высококонкурентная среда. За кэш данных борются тысячи параллельно идущих транзакций, каждая из которых пытается положить в него свои данные и вытеснить чужие. Если пустить это на самотёк - получится огромный бессмысленный бардак, который и станет узким местом системы. Стратегии и настройки кэширования - одна из стандартных "головных болей" разработчиков СУБД, и в целом эффективность кэширования - важнейший показатель качества СУБД и ожидаемой скорости её работы. В итоге разработчик не имеет реальных шансов сказать, какая страница данных в какой момент времени будет закеширована или нет, поэтому в оценках ресурсоёмкости операций используют логические чтения - по сути "обращение к диспетчеру за блоком данных", понимая, что с вероятностью X это будет чтение из памяти, а с вероятностью (1-X) - с диска, где X мало зависит от разработчика конкретного куска функциональности, а определяется железом сервера, настройками, размером базы, количеством и разнообразием других операций с этими данными и т. д. и т. п.

Дальнейшее проще показать статистикой. Я приведу для Oracle, но как я уже сказал, картина плюс-минус одинакова везде. Для начала подготовим данные:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> create table t$data(id integer not null, text varchar2(100 char));
Table created

SQL> insert into t$data select rownum, lpad(rownum, '0', 100) from dual connect by level <= 1e7;
10000000 rows inserted

SQL> alter table t$data add constraint t$data_pk primary key (id);
Table altered


Теперь посмотрим, сколько логических чтений уходит на update.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
SQL> set autotrace on
SQL> update t$data set text = 'changed' where id = 666666 returning text into :result;

1 row updated.

Execution Plan
----------------------------------------------------------                      
Plan hash value: 2890335233                                                     
                                                                                
--------------------------------------------------------------------------------
| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT   |           |     1 |   215 |     3   (0)| 00:00:01 |
|   1 |  UPDATE            | T$DATA    |       |       |            |          |
|*  2 |   INDEX UNIQUE SCAN| T$DATA_PK |     1 |   215 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------------
                                                                                
Predicate Information (identified by operation id):                             
---------------------------------------------------                             
                                                                                
   2 - access("ID"=666666)                                                      


Statistics
----------------------------------------------------------                      
          1  recursive calls                                                    
          2  db block gets                                                      
          3  consistent gets                                                    
          1  physical reads                                                     
        308  redo size                                                          
        584  bytes sent via SQL*Net to client                                   
        588  bytes received via SQL*Net from client                             
          3  SQL*Net roundtrips to/from client                                  
          1  sorts (memory)                                                     
          0  sorts (disk)                                                       
          1  rows processed    

SQL> rollback;

Rollback complete.



Добавим к этому то, что уходит на select

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SQL> set autotrace traceonly;
SQL> select text from t$data where id = 666666;


Execution Plan
----------------------------------------------------------                      
Plan hash value: 773027716                                                      
                                                                                
-----------------------------------------------------------------------------------------                                                                       
| Id  | Operation                   | Name      | Rows  | Bytes | Cost (%CPU)| Time     |                                                                       
-----------------------------------------------------------------------------------------                                                                       
|   0 | SELECT STATEMENT            |           |     1 |   215 |     3   (0)| 00:00:01 |                                                                       
|   1 |  TABLE ACCESS BY INDEX ROWID| T$DATA    |     1 |   215 |     3   (0)| 00:00:01 |                                                                       
|*  2 |   INDEX UNIQUE SCAN         | T$DATA_PK |     1 |       |     2   (0)| 00:00:01 |                                                                       
-----------------------------------------------------------------------------------------                                                                       
                                                                                
Predicate Information (identified by operation id):                             
---------------------------------------------------                             
                                                                                
   2 - access("ID"=666666)                                                      


Statistics
----------------------------------------------------------                      
          0  recursive calls                                                    
          0  db block gets                                                      
          4  consistent gets                                                    
          0  physical reads                                                     
          0  redo size                                                          
        347  bytes sent via SQL*Net to client                                   
        368  bytes received via SQL*Net from client                             
          2  SQL*Net roundtrips to/from client                                  
          0  sorts (memory)                                                     
          0  sorts (disk)                                                       
          1  rows processed



И Вам остаётся самостоятельно догадаться, откуда в Вашем замечательном решении вдруг берётся паразитное удвоение нагрузки на сервер.

ВМоисеев
И право, не Вам говорить о хамстве.

Серьёзно? Решительно не вижу, с чего бы вдруг мне не говорить о хамстве. Кажется, Вы снова пытаетесь что-то переложить со своей головы на здоровую.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963503
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 15:35 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141364][22141364]
>Вы по делу когда хоть что-то сказали?
<
Начало здесь .
Ваш ответ .
Я привел пример, где использую ХП - UPDATE.
Далее здесь , здесь и здесь .
Далее можно это и это .
Мой ответ .
Текущий вариант:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
    //-- UPDATE 
    //-- Обработка нажатия кнопки сохранения изменений записи в базу данных 
    //=========================================================================================================
    private void btc_Сохранить_Click(object sender, RoutedEventArgs e) {
      if (!bl_Разрешение) return; 
      try {
        wspErr = null; if (dgv_Entity.SelectedIndex == -1) return;  //-- Нет выбора
        bl_Разрешение = false;  //-- Запрещаем пользавательский интерфейс
        //-- Получим индекс элемента коллекции
        xrow = (row_Entity)dgv_Entity.SelectedItem; yrow = (row_Entity)xrow.Clone();
        iRow = oc_Entity.IndexOf(xrow);
        
        //-- выполнение хранимой процедуры
        wsp.sp_Параметры(3);
        wsp.sp_Параметр("pk_Entity", xrow.pk_Entity); wsp.sp_Параметр_ts("ts_Entity", xrow.ts_Entity);
        wsp.sp_Параметр("str_Отдел", xrow.str_Отдел);
        xrow = null; lst_Entity = null;
        wsp.Entity_SP("au_Отделы_upd", wsp.sp_Upd, RowToEntity_upd); wspErr = wsp.wspErr;

        if (xrow == null) throw new Exception("Ошибка выполнения операции");
        dgv_Entity.CancelEdit(); xrow.chb_Entity = false;
        oc_Entity.RemoveAt(iRow); oc_Entity.Insert(iRow, xrow); dgv_Entity.SelectedIndex = iRow;
      }
      catch (Exception ex) { wspErr = ex.Message; }
      finally {
        if (wspErr != null) { MessageBox.Show(wspErr, caption_Entity, MessageBoxButton.OK); }
        wspErr = null; yrow = null; bl_Разрешение = true;  //-- Разрешение выполнения функционала компонент
      }
    }


По завершению ХП UPDATE клиентский метод имеет:
1. yrow - старые параметры сущности
2. xrow - новые параметры сушности
3. wspErr - код завершения.
Что здесь плохого.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963513
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 16:36 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141454][22141454]
>Ну наконец-то …
<
Спасибо за ликбез. Но клиент должен получить новый ts_Entity, желательно за одно обращение к базе данных, см. здесь .
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963515
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Спасибо за ликбез. Но клиент должен получить новый ts_Entity

Какое именно слово в

Код: plsql
1.
2.
3.
4.
returning
  отдел, ts
into
  :отдел, :ts


Вам непонятно?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963516
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 16:36 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141454][22141454]
>Дальнейшее проще показать статистикой
<
Давайте по-взрослому - напишите ХП и приведите данные по её работе.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963521
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Давайте по-взрослому - напишите ХП и приведите данные по её работе.

У трассировки хранимок больше геморроя с выводом результатов в текстовом виде, а итог тот же самый. Если Вы думаете, что селект внутри хранимой процедуры вдруг перестанет запрашивать данные - подумайте ещё раз.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963541
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 17:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141517][22141517]
>Какое именно слово в …
<
returning.
Найдите его здесь .
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963553
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>softwarer, сегодня, 17:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141517][22141517]
>Какое именно слово в …
<
returning.
Найдите его здесь .

Вы свою же ссылку читали?

СсылкаВ инструкции UPDATE можно использовать имена переменных для показа старых и новых значений , но только в том случае, если инструкция UPDATE обрабатывает одну запись. Если инструкция UPDATE затрагивает несколько записей, для возвращения старых и новых значений каждой записи используйте предложение OUTPUT.


https://docs.microsoft.com/ru-ru/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963576
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 17:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141517][22141517]
>Какое именно слово в …
<
Меня не устраивает это - "Предложение RETURNING указывает, что команда UPDATE должна вычислить и возвратить значения для каждой фактически изменённой строки."
Если UPDATE … RETURNING не изменил ни одной записи, что будет возвращено клиенту?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963580
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Меня не устраивает это

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

ВМоисеев
Если UPDATE … RETURNING не изменил ни одной записи, что будет возвращено клиенту?

Вы точно уверены, что я должен за Вас прочитать доку и доступными словами разжевать Вам ответ?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963614
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 19:38 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141603][22141603]
>Вы точно уверены…
<
Да Вы большой оригинал - на мое отвечаете этим , представления не имея, как сиё работает.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963656
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Да Вы большой оригинал - на мое отвечаете этим , представления не имея, как сиё работает.

Я знаю как работает returning. И Вы тоже могли бы узнать, если бы открыли документацию и прочитали. Если же Вы считаете, что с Вами должны нянчиться - это объясняет, почему Вы до сих пор не достигли даже уровня junior-а, способного пройти собеседование.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963703
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 21:46 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141702][22141702]
>Я знаю как работает returning...
<
Сомневаюсь. Судя по этому - "returning_clause
Returns values from updated rows ...If the statement does not affect any rows, the values of the variables specified in the RETURNING clause are undefined"
Ваш код пустышка
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963710
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Ваш код пустышка

Ох, какое же ты пустое трепло. Лучше открой документацию по returning в Postgre и прочитай там, что он делает ровно то же, что и твой селект. Вот прямо английским языком написано - возвращает те же данные, которые вернул бы селект этих полей из affected строк. Так что ты только что назвал пустышкой собственное решение, красавец
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963831
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
По завершению ХП UPDATE клиентский метод имеет:
1. yrow - старые параметры сущности
2. xrow - новые параметры сушности
3. wspErr - код завершения.
Что здесь плохого.


Всё плохо.

1. Ваш код крайне тяжело сопровождать.
2. Код невозможно протестировать, так как часть логики в БД, часть логики в клиентском коде.
3. ХП на апдейт выполняет две операции: обновление и возврат данных, хотя у вас уже есть отдельная ХП на возврат данных, значит вы дублируете код -- очень велика вероятность сделать ошибку, поддерживать два разных кода возврата одних и тех же данных -- очень плохо.
4. ХП обновления выполняет две разных операций, что нарушает принцип единственной обязанности.
5. Код обновления прибит гвоздями к одному единственному способу блокировки, а это ни что иное, как костыли.
6. Ваш код представляет из себя 80% откровенного мусора и дублирования и 20% (в лучшем случае!) хоть какой-то полезной логики. С увеличением количества сущностей, такой код становится сложнее и сложнее сопровождать, абсолютно невозможно провести вменяемый рефакторинг или хоть какие-то изменения без переписывания всего, или без монотонных одних и тех же изменений.

Плохой код это не проблема. Никто не способен писать идеальный код всегда. Люди развиваются, растут, умеют учиться. Не в коде проблема. Проблема в вас. Вы не желаете учиться и развиваться.

Не понимаю чего вы хотите. Зачем нам вот это каждый раз впариваете. Вы там на медаль что-ли идёте по твердолобости? Может кто-то ставки принимает? Чё за фигня вообще с вами происходит??
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963832
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Но клиент должен получить новый ts_Entity, желательно за одно обращение к базе данных, см. здесь .


Я даже боюсь спрашивать. С какого перепугу "должен" и с чего вы взяли, что это "желательно"?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963854
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Плохой код это не проблема.

Личный опыт это если в проекте хотя бы только 50% говнокода, то это уже очень хороший проект. Есть куда более страшные вещи, чем говнокод :))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963935
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, вчера, 23:01 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141778][22141778]
>Ох, какое же ты пустое трепло... Так что ты только что назвал пустышкой собственное решение, красавец
<
Хамства Вам положим не занимать.
Ну да ладно, перейдем к сути.
Что предлагаю я - Здесь мой код UPDATE. Я работаю с оптимистической блокировкой. Поэтому есть вероятность того, что моя копия сущности на рабочем компьютере не совпадает с оригиналом. Опираясь на информацию копии, принимаю решение о её модификации с последующим изменением оригинала. Понятно что оригинал может быть кем-то изменен, но я этого не знаю.
Код:
Код: c#
1.
2.
3.
      UPDATE "tbl_Отделы" SET "str_Отдел" = "$str_Отдел" 
      WHERE (("pk_Entity" = "$pk_Entity") and ("ts_Entity" = "$ts_Entity"));
      exception when others then  ErrorVar := 1;


делает попытку изменения оригинала. Возможны ситуации:
1. операция ок, клиенту нужно передать timestamp, ибо оно показывает, что оригинал и копия клиента тождественны.
2. имеет место быть не штатная ситуация, что приведет флаг ошибки в 1.
- сбойнуло железо (?)
- другой клиент мог удалить оригинал сущности
- другой клиент мог изменить оригинал сущности
Код:
Код: c#
1.
    if ErrorVar = 1 then 


проверяет присутствие не штатной ситуации
если присутствие наблюдается,
то попытка чтения оригинала с передачей строки таблицы в качестве текущей копии клиенту. Клиент получает или оригинал или пусто.
если не штатная ситуация отсутствует, клиент получает timestamp своего изменения.

Здесь Ваше предложение.
В случае штатной ситуации результаты наших решений совпадают.
А как поведет Ваш код в случае не штатной ситуации - другой клиент мог изменить оригинал сущности-.
Повторяю
"Returns values from updated rows ...If the statement does not affect any rows, the values of the variables specified in the RETURNING clause are undefined"
и меня большие подозрения, что я не получу значение оригинала.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963941
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 04:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141942][22141942]
>Я даже боюсь спрашивать. С какого перепугу "должен" и с чего вы взяли, что это "желательно"?
<
Я считаю, что пользователь может менять только тот оригинал базы, что совпадает с его локальной копией.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39963946
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 04:11 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141941][22141941]
>Всё плохо
<
Я думаю иначе.
Понятно, что Ваши измы мне по барабану.
Поэтому, давайте оставим в покое философию и графоманию и будем обсуждать конкретные проблемы. В текущей ситуации - ХП и UPDATE.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964005
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
2. Код невозможно протестировать, так как часть логики в БД, часть логики в клиентском коде.

Н-да. До сих пор Вы оставались единственным, кроме меня, кто не говорил глупостей.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964027
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Что предлагаю я

Что "предлагаешь" ты - всем было понятно ещё позавчера. Равно как и то, как это работает.

Как отработает под Ораклом то, что написал я - можешь посмотреть. Как отработает аналог под Postgre - ну смотря кто и как напишет. Если задашься целью, чтобы было ещё хуже чем у тебя - без сомнения, сумеешь сделать именно так.

Ну а свои подозрения по поводу того, чего ты не получишь, если кто-нибудь изменил id записи... Спасибо, смешно.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964049
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
ВМоисеев
Что предлагаю я

Что "предлагаешь" ты - всем было понятно ещё позавчера. Равно как и то, как это работает.

Как отработает под Ораклом то, что написал я - можешь посмотреть. Как отработает аналог под Postgre - ну смотря кто и как напишет. Если задашься целью, чтобы было ещё хуже чем у тебя - без сомнения, сумеешь сделать именно так.

Ну а свои подозрения по поводу того, чего ты не получишь, если кто-нибудь изменил id записи... Спасибо, смешно.

по докам они работают одинаково
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964063
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
по докам они работают одинаково

Думаю, пафос Владимира вызван в основном тем, что он тоже смотрит доки, не прочитав и не поняв смысл самого update-а и не задавшись вопросом "почему он отличается от моего". В прошлый раз он бросил поверхностный взгляд и даже не увидел returning, а когда я ткнул его в это носом - полез копать про returning, так и не посмотрев в написанный update, а просто решив "ну наверняка то же самое, что у меня, только с добавлением returning".

У Оракла в случае апдейта нуля строк в переменной просто сохранится предыдущее значение. Ну и sql%rowcount будет равно нулю, само собой. Как будет у Postgre - не знаю. Достаточно фразы из доки про "тот же результат, что в селекте", чтобы сказать, что будет ровно как во владимировской нетленке - с точностью до того, что дока врёт, конечно.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964093
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer


У Оракла в случае апдейта нуля строк в переменной просто сохранится предыдущее значение. Ну и sql%rowcount будет равно нулю, само собой. Как будет у Postgre - не знаю. Достаточно фразы из доки про "тот же результат, что в селекте", чтобы сказать, что будет ровно как во владимировской нетленке - с точностью до того, что дока врёт, конечно.


ну, если доки не врут, то получается, что нечего было наезжать на бедного Моисеева по части нагрузки на сервер?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964094
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
ну, если доки не врут, то получается, что нечего было наезжать на бедного Моисеева по части нагрузки на сервер?

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

"RETURNING INTO Clause
The returning clause specifies the values return from DELETE, EXECUTE IMMEDIATE, INSERT, and UPDATE statements. You can retrieve the column values into individual variables or into collections. You cannot use the RETURNING clause for remote or parallel deletes. If the statement does not affect any rows, the values of the variables specified in the RETURNING clause are undefined."
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964105
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
В доках Оракл также написано, что поля undefined

На практике они просто unchanged. Что в них было до того, то и останется. Впрочем, это неважно, поскольку ключевая проверка в любом случае на sql%rowcount.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964106
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

ясно, так и думал, что никто лишний раз не будет их обнулять
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964166
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 13:02 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142172][22142172]
>Как отработает под Ораклом то, что написал я - можешь посмотреть
<
И всё таки, что получит клиент в случае ситуации -другой клиент мог изменить оригинал сущности-
Мой код дает текущий оригинал сущности + признак не штатной ситуации.
Что даёт твой код?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964194
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 14:35 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142259][22142259]
>Не получается…
<
Мне это напоминает шулерство.
Из всего множества работ сервера по выполнению UPDATE Вы выбрали две, собственно UPDATE или UPDATE+SELECT. И утверждаете, что UPDATE+SELECT приводит к удвоению нагрузки на сервер. Работ больше, может значительно больше.
Пользователь реализует запрос на выполнение UPDATE примерно так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    public static void Entity_SP(string spname, dlg_sp sp, dlg_RowToEntity RowToEntity) {
      PgSqlTransaction tran = null;
      try {
        wsp_Ошибка = null;
        connection = new PgSqlConnection(str_Соединение); connection.Unicode = true;
        connection.Open();
        tran = connection.BeginTransaction();
        PgSqlCommand command = new PgSqlCommand(str_Схема+spname, connection);
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Clear(); command.Parameters.AddRange(asp);
        using (reader = (PgSqlDataReader)command.ExecuteReader()) {
          if (!(reader == null)) sp(RowToEntity); else wsp_Ошибка = "Не понятная ошибка";
        }
      }
      catch (Exception ex) { wsp_Ошибка = ex.Message; }
      finally {
        if (string.IsNullOrEmpty(wsp_Ошибка)) tran?.Commit(); else tran?.Rollback();
        connection?.Close(); reader?.Close();
      }
    }


Я не знаю, какую работу выполняет сервер по команде command.ExecuteReader(), но её объём можно косвенно оценить по времени выполнения команды.
Думаю, что это более адекватная оценка нагрузки на сервер данных.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964423
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Я думаю иначе.
Понятно, что Ваши измы мне по барабану.
Поэтому, давайте оставим в покое философию и графоманию и будем обсуждать конкретные проблемы. В текущей ситуации - ХП и UPDATE.


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

Общаться с мудаками -- себя не уважать. Поэтому идите лесом и по-дальше.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964425
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
hVostt
2. Код невозможно протестировать, так как часть логики в БД, часть логики в клиентском коде.

Н-да. До сих пор Вы оставались единственным, кроме меня, кто не говорил глупостей.


Собственный опыт и опыт иногочисленных коллег показывает, что тестирование логики в БД, это боль и проблемы. А если логика распределана между клиентом и БД, всё становится ещё печальнее.

Я хочу сказать, что у ХП есть область применения, но как решение конкретных проблем производительности, а не штатный способ разработки.

Не понимаю, почему вы говорите, что это глупости. Похоже я и большинство коллег, с которыми я работал и общался -- глупые. И весь мир глупый, так как в разработке от ХП уходят по возможности.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964460
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев,

Твой код это лютый песец. Оно и вправду, лучше уж пиши всю БЛ в хранимках, чем так в клиенте или миддлетайере.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964462
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
у ХП есть область применения

Для двузвенки ХП единственный выход, из соображений секьюрити. Но кому в голову придет сейчас делать двузвенку без апп-сервера. Ну и еще, возможно, всякий репортинг, где, вообще, БЛ кроме селектов никакой нет и ХП чисто для того, чтобы не громоздить сиквельные селекты прямо в коде (еще и с вытекающими проблемами их поддержки).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964473
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>fkthat, сегодня, 19:01 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142815][22142815]
>...Но кому в голову придет сейчас делать двузвенку…
<
Мне.
>Для двузвенки ХП единственный выход, из соображений секьюрити.
<
Не совсем так.
В своё время мне пришлось написать ГИС под Венский документ. На карте Евразии отображаются метки и маркеры сущностей. ХП готовят часть параметров отображаемой сущности, другая часть формируется на компе клиента. Так удобнее.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964478
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
В своё время мне пришлось написать ГИС под Венский документ. На карте Евразии отображаются метки и маркеры сущностей. ХП готовят часть параметров отображаемой сущности, другая часть формируется на компе клиента. Так удобнее.

Двузвенка?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964479
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, 26 май 20, 03:52 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139430][22139430]
>… Ну попробуйте хотя бы что-нибудь типа…
<
Спасибо за доставленное интеллектуальное удовольствие.
Продолжаю ломать голову, как этим воспользоваться - красиво может получиться.
Если аналогично сделать для MSSQL - UPDATE … OUTPUT. Но я дилетант в тонких материях T-SQL, впрочем, как и в PostgeSQL.
Я знаю, что мне надо, но реализация хотелки не всегда на высоте.
Вот вопрос, ответ на который не нашел:
update Отделы
set отдел = case when ts = :ts then :отдел else отдел end
В моём случае, ts есть timestamp и значение её формируется системой автоматом. Какое значение ts используется в set - до или после изменения?
Потом мне не очень по душе, что UPDATE выполняется в любом случае, даже тогда, когда делать его и не надо.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964481
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Изопропил, сегодня, 20:01 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142833][22142833]
>Двузвенка?
<
Да.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964489
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Не совсем так.

Совсем так. А поскольку ты этого не понимаешь, то я сейчас заподозрил, что у тебя, помимо всего прочего, любой юзер может подконнектится к БД и делать там (по крайней мере с данными) все что хочет. А видя твой код, я даже не удивился бы, что у тебя там вообще всё коннектится под sa с открытым паролем в конфигах.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964490
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любая цепочка заканчивается двухзвенкой :)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964498
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Какое значение ts используется в set - до или после изменения?

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

И даже более того. Если немного подумать, то вполне очевидно, что там, где хорошо работает однозвенка, разумно использовать однозвенку. А для каждого следующего звена - нужно разумное обоснование - N-е звено нужно для решения задач, которые не получится хорошо решить ни на одном из предыдущих N-1 звеньев. Здесь ключевое слово "разумное". Соответственно, по мере роста технологий многозвенки становятся всё менее и менее нужными. Вполне вероятно, однажды мы придём к оптимальности однозвенной схемы для тех задач, которые сегодня решаем большим количеством звеньев.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964504
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
там, где хорошо работает однозвенка, разумно использовать однозвенку.

"Однозвенка" - это только если выкинуть вообще сервер БД, и данные прямо из файлов *.mdf с диска читать.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964509
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>fkthat, сегодня, 20:38 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142844][22142844]
> А поскольку ты этого не понимаешь…
<
Откуда этот апломб?
Посмотри сюда .
Пункт 7. Для авторизации необходимо:
1. пин-код, известный пользователю
2. криптоконтейнер с параметрами доступа пользователя к базе данных, информация пользователю не доступна
3. программа Пускач.
Никакой информации по доступе к данным у пользователя нет.
Есть у Пукача и функционального приложения. Формируется динамически, по результатам аутентификации.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964512
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 20:50 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142855][22142855]
>"ts" - это поле в таблице
<
А поле ts в этом фрагменте что?
returning отдел, ts
совпадает его значение с полем ts этого фрагмента?
отдел = case when ts = :ts then :отдел else отдел end
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964517
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
А поле ts в этом фрагменте что?

Это поле в таблице.

ВМоисеев
совпадает его значение с полем ts этого фрагмента?

Это одно и то же поле. А что происходит с его значениями - зависит от того, менялось ли значение этого поля в ходе update-а.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964521
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>softwarer, сегодня, 21:37 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142875][22142875]
>...менялось ли значение этого поля в ходе update-а
<
Да, поле обязательно будет изменено. Автоматически. Но когда?
Какое значение будет использовано здесь -отдел = case when ts = :ts then :отдел else отдел end- измененное или оригинальное?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964546
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>fkthat, сегодня, 20:38 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142844][22142844]
> А поскольку ты этого не понимаешь…
<
Откуда этот апломб?
Посмотри сюда .
Пункт 7. Для авторизации необходимо:
1. пин-код, известный пользователю
2. криптоконтейнер с параметрами доступа пользователя к базе данных, информация пользователю не доступна
3. программа Пускач.
Никакой информации по доступе к данным у пользователя нет.
Есть у Пукача и функционального приложения. Формируется динамически, по результатам аутентификации.

Слушай, ты лучше не продолжай, чтобы свою профрепутацию дальше не портить. Сделай там хоть воьмифакторную аутентификацию с Пускачами, пин-кодами. номерами кредиток, и отпечатками всех двадцати палльцев на руках и ногах. Все равно у тебя приложение будет коннектится к серверу под каким-то аккаунтом и потенциально мне ничего не помешает взять SSMS или sqlcmd и законнектиться с ним минуя всех твоих хоть пускачей, хоть хохмачей. Единственный способ при этом как-либо ограничить доступ к таблицам это использовать хранимки, вьюхи, ЮДФы и "ownership chaining". Но тебе это невдомек, потому что ты даже и двузвенную архитектуру на самом деле толком не понимаешь.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964554
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
ВМоисеев
>fkthat, сегодня, 20:38 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142844][22142844]
> А поскольку ты этого не понимаешь…
<
Откуда этот апломб?
Посмотри сюда .
Пункт 7. Для авторизации необходимо:
1. пин-код, известный пользователю
2. криптоконтейнер с параметрами доступа пользователя к базе данных, информация пользователю не доступна
3. программа Пускач.
Никакой информации по доступе к данным у пользователя нет.
Есть у Пукача и функционального приложения. Формируется динамически, по результатам аутентификации.

Слушай, ты лучше не продолжай, чтобы свою профрепутацию дальше не портить. Сделай там хоть воьмифакторную аутентификацию с Пускачами, пин-кодами. номерами кредиток, и отпечатками всех двадцати палльцев на руках и ногах. Все равно у тебя приложение будет коннектится к серверу под каким-то аккаунтом и потенциально мне ничего не помешает взять SSMS или sqlcmd и законнектиться с ним минуя всех твоих хоть пускачей, хоть хохмачей. Единственный способ при этом как-либо ограничить доступ к таблицам это использовать хранимки, вьюхи, ЮДФы и "ownership chaining". Но тебе это невдомек, потому что ты даже и двузвенную архитектуру на самом деле толком не понимаешь.

глубоко ошибаешься :)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964561
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
глубоко ошибаешься :)

Сейчас ты нам расскажешь.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964565
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Плохой код это не проблема.

Личный опыт это если в проекте хотя бы только 50% говнокода, то это уже очень хороший проект. Есть куда более страшные вещи, чем говнокод :))

Сейчас разгребаю тут, и в очередной раз убеждаюсь, что самое страшное это всевозможные долбоящеры, которые всюду обвешивают какими-то своими "гениальными" обертками, расширениями и фреймворками, то, что в этом не нуждается от слова "совсем", т.к. и без их кривых руконог уже сто лет отлично работает... :(
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964574
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>fkthat, вчера, 23:48 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142915][22142915]
>Слушай, ты лучше не продолжай…
<
На заборах многое чего пишут. Покажи как. Вызвал SSMS, имею, что на слайде. Ваш ход.
И ещё, в соответствующих конторах - как Вы вообще установите, что-то своё?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964615
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
И ещё, в соответствующих конторах - как Вы вообще установите, что-то своё?


зачем что-то устанавливать - c#   компилятор в состав дотнет фреймворка входит, а фреймворк давно в составе винды
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964621
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
ViPRos
глубоко ошибаешься :)

Сейчас ты нам расскажешь.

нет, тебе это не надо
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964622
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
fkthat
пропущено...

Личный опыт это если в проекте хотя бы только 50% говнокода, то это уже очень хороший проект. Есть куда более страшные вещи, чем говнокод :))

Сейчас разгребаю тут, и в очередной раз убеждаюсь, что самое страшное это всевозможные долбоящеры, которые всюду обвешивают какими-то своими "гениальными" обертками, расширениями и фреймворками, то, что в этом не нуждается от слова "совсем", т.к. и без их кривых руконог уже сто лет отлично работает... :(

покажи
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964642
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Покажи как.

Дизасемблирую твоё чудо-приложение и вставлю в нужное место код, который мне всю твою строку соединения на блюдечке выложит.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964657
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Для двузвенки ХП единственный выход, из соображений секьюрити.

Если в выбранной СУБД нет команды GRANT и прочего SQL ACL... То в ней и ХП скорее всего нет.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964661
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>fkthat, сегодня, 13:18 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22143047][22143047]
>Дизасемблирую твоё чудо-приложение и вставлю в нужное место код, который мне всю твою строку соединения на блюдечке выложит.
<
Логично.
Но в серьёзных конторах, если потребуется, то пин-код будет состоять из двух частей, клиента и секадмина. Так вот подобные тебе будут запускать Пускач под его контролем.
Думаю, что потеряешь работу значительно быстрее, чем докопаешься до строки соединения.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964664
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
ВМоисеев
Покажи как.

Дизасемблирую твоё чудо-приложение и вставлю в нужное место код, который мне всю твою строку соединения на блюдечке выложит.

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

И даже более того. Если немного подумать, то вполне очевидно, что там, где хорошо работает однозвенка, разумно использовать однозвенку. А для каждого следующего звена - нужно разумное обоснование - N-е звено нужно для решения задач, которые не получится хорошо решить ни на одном из предыдущих N-1 звеньев. Здесь ключевое слово "разумное". Соответственно, по мере роста технологий многозвенки становятся всё менее и менее нужными. Вполне вероятно, однажды мы придём к оптимальности однозвенной схемы для тех задач, которые сегодня решаем большим количеством звеньев.

Really?

"Могу лишь выразить его пользователям мои глубочайшие соболезнования. Этот архитектурный антипаттерн я называю "однозвенное мышление". "
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964681
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
fkthat
Для двузвенки ХП единственный выход, из соображений секьюрити.

Если в выбранной СУБД нет команды GRANT и прочего SQL ACL... То в ней и ХП скорее всего нет.

Ну, распределение прав как-то так далеко не ограничивается грантами на таблицы или на что-то еще. Оно вообще может задаваться такой хитрой логикой: "аппрувить закупку с общей суммой больше 789 рублей имеет право только пользователь из касты браминов". А если у какого-нибудь шурда есть аккаунт в базе, а все это проверяется только на клиенте, то ему уже ничего не стоит это в обход приложения сделать. Я же писал выше - именно для этого в сиквеле реализован принцип "ownership chaining".
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964682
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
нет, тебе это не надо

Да, от кого мне это точно не надо, так это от тебя :)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964687
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Оно вообще может задаваться такой хитрой логикой: "аппрувить закупку с общей суммой больше 789 рублей имеет право только пользователь из касты браминов"

Ну и кто не умеет сделать этого без ХП?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964696
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев

Логично.
Но в серьёзных конторах, если потребуется, то пин-код будет состоять из двух частей, клиента и секадмина. Так вот подобные тебе будут запускать Пускач под его контролем.

Ололо. Представил себе как в "серьезной конторе" сисадмины каждое утро обходят всех юзеров, потому что без живого присутствия систадмина в приложение зайти нельзя. Я не могу никак понять, ты прикалываешься что ли? Потому что писать такую ересь всерьез это уже даже не знаю за какими границами

ВМоисеев

Думаю, что потеряешь работу значительно быстрее, чем докопаешься до строки соединения.

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

Ну и кто не умеет сделать этого без ХП?

Я в курсе про row-level securuty. От мысли, что кому-то в голову придет все политики безопасности на ней делать шевелятся волосы на всем теле. Даже триггерами все таблицы пообвешать, и то, наверное, не такая жесть. (Совершенно не знаю, как с этим в оракле)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964705
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
"Могу лишь выразить его пользователям мои глубочайшие соболезнования. Этот архитектурный антипаттерн я называю "однозвенное мышление". "

То к чему по-настоящему надо стремиться, это архитектура нульзвенная. Когда пользователи познали такой дзен, что им уже и сама БД стала не нужна
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964711
Misha_E
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
ВМоисеев

Логично.
Но в серьёзных конторах, если потребуется, то пин-код будет состоять из двух частей, клиента и секадмина. Так вот подобные тебе будут запускать Пускач под его контролем.

Ололо. Представил себе как в "серьезной конторе" сисадмины каждое утро обходят всех юзеров, потому что без живого присутствия систадмина в приложение зайти нельзя. Я не могу никак понять, ты прикалываешься что ли? Потому что писать такую ересь всерьез это уже даже не знаю за какими границами

А такое есть, но не для юзеров ,а доступа к ИС и сервакам, первая часть пароля у админов вторая часть пароля у безопасников.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964714
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
От мысли, что кому-то в голову придет все политики безопасности на ней делать

Опять :( 22139724
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964737
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha_E
А такое есть, но не для юзеров ,а доступа к ИС и сервакам, первая часть пароля у админов вторая часть пароля у безопасников.

А третья в яйце
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964741
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
fkthat
От мысли, что кому-то в голову придет все политики безопасности на ней делать

Опять :( 22139724

Ну я, вообще-то за то и топил, что бывают кейсы для которых ХП вполне подходит. Пример кейса я привел - дать аккаунту делать только определенные действия с данными, не давая прямого доступа к самим данным. Но в трехзвенке их реально мало, а двузвенка вымирает.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964744
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Ну я, вообще-то за то и топил, что бывают кейсы для которых ХП вполне подходит.

А что, с этим кто-то где-то спорил?

fkthat
Пример кейса я привел

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

fkthat
а двузвенка вымирает.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964770
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
fkthat
а двузвенка вымирает.


Что смешного-то? Что 1С как пример бессмертного кащея двузвенного приложения? У которого сиквельная база вообще без ключей, потому что её как 20 лет назад склонировали из фокспро, так она в таком фокспрошном виде до сих пор и осталась А, впрочем забыл, есть же еще двузвенная платформа "Запускачь" ™
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964777
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Что смешного-то?

Да многое, в общем-то. Для начала я на 99% уверен, что если попрошу сформулировать определение "звена" - ну чтобы взять некое приложение и посчитать, сколько же в нём звеньев - уже будет очень весело.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964793
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
fkthat
Что смешного-то?

Да многое, в общем-то. Для начала я на 99% уверен, что если попрошу сформулировать определение "звена" - ну чтобы взять некое приложение и посчитать, сколько же в нём звеньев - уже будет очень весело.

Вы просто путаете "звено" (иногда, редко, попадался даже термин "ярус") и "слой". "Звено" ("tier") определяется как раз очень легко и однозначно, а "слой" ("layer") это действительно логическое а не физическое понятие и определить его может быть очень затруднительно. И насчет двузвенной и трехзвенной архитектуры как раз все абсолютно четко и понятно. Когда система "более распределенная", то тогда, конечно, какие-то определения дать сложно - ну, вот, распределенная она, и все.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964797
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

А DBASE-like системы они так вообще однозвенные были.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964798
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Вы просто путаете "звено" и "слой"

Чушь не порите. Ей же больно.

fkthat
"Звено" ("tier") определяется как раз очень легко и однозначно

Вперёд.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964828
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Девки спорили на даче...
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964831
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Чушь не порите. Ей же больно.

Я уже писал как-то, что в русском очень мутно с переводом терминов "tier" и "layer", ибо каждый переводит их как ему вздумается. В английском все более однозначно. "Tier" это часть системы, которая может быть запущена на отдельном хосте. "2-tier architecture" это архитектура состоящая из одного или нескольких серверов баз данных (которые может быть запущены на отдельных хостах) и клиентского приложения (которое тоже может быть запущено на отдельном хосте). Клиентское приложение при этом напрямую взаимодействует с сервером/серверами БД. "3-tier architecture" это архитектура где клиентсткое приложение не работает напрямую с серверами БД, а всегда использует промежуточный "tier", который тоже может состоять из одного или нескольких отдельных приложений (и которые тоже могут работать на отдельных хостах). При этом особенность всех "tiers" (из-за которой "tiers" и называется), это что и там и там каждый "tier" является "consumer agnostic", т.е. никак не зависит от любого "tier" выше него.

fkthat
Вперёд.

Я лучше дам ссылку: Martin Fowler, Patterns of Enterprise Application Architecture Там вся 7 глава как раз посвящена сравнению между распределенной архитектурой и многослойной (которая, строго говоря, вообще является не архитектурным паттерном, а просто паттерном программного дизайна). Её легко найти в сети в эл. виде. В переводе на русский тоже издавалась (на другой квартире где-то лежит в кладовке - все никак руки не дойдут перевезти вместе с остальными:))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964834
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Девки спорили на даче...

Да чо уж, понятная попоболь - всю жизнь посвятить FoxPro, а тут вдруг
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964841
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
"Tier" это часть системы, которая может быть запущена на отдельном хосте

Это всё Ваше определение, или же таки добавите к нему какие-нибудь уточнения?

fkthat
Клиентское приложение при этом напрямую взаимодействует с сервером/серверами БД.

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

fkthat
Я лучше дам ссылку

Ну то есть бла-бла-бла. Определения Вы дать не можете, а просто прячетесь за груду сомнительного текста.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964849
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Вы вообще в состоянии представить себе что-то кроме БД? Какая-то неимоверная узколобость. Представьте себе задачу, где БД нет в принципе. Http-сервер, например.


https://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture

авторData tier
The data tier includes the data persistence mechanisms (database servers, file shares, etc.) and the data access layer that encapsulates the persistence mechanisms and exposes the data. The data access layer should provide an API to the application tier that exposes methods of managing the stored data without exposing or creating dependencies on the data storage mechanisms . Avoiding dependencies on the storage mechanisms allows for updates or changes without the application tier clients being affected by or even aware of the change. As with the separation of any tier, there are costs for implementation and often costs to performance in exchange for improved scalability and maintainability.


Вы можете хоть графические редакторы и медиаплееры приплести еще к своим аргументам, но когда говорят про "3-tier", то под нижним tier подразумевают именно хранилище данных в виде АПИ (SQL, REST, etc) изолирующего своих клиентов от того как это хранилище физически реализовано.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964850
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Вы можете хоть графические редакторы и медиаплееры приплести еще к своим аргументам

К каким аргументам? Я пока что аргументировать и не начинал, я просто спрашиваю с Вас вменяемое определение, которое Вы обещали дать.

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

fkthat
но когда говорят про "3-tier", то под нижним tier подразумевают именно хранилище данных

Уже "хранилище"? Не "БД", а именно хранилище? То есть Вы таки послушали голос очевидности и дезавуировали свои предыдущие слова?

Хорошо. Следующий вопрос. FTP-сервер. Вполне себе "хранилище данных". Это по-Вашему сколько-звенка? Какие там звенья? Каково таки определение "звена"?

fkthat
в виде АПИ (SQL, REST, etc) изолирующего своих клиентов от того как это хранилище физически реализовано.

Замечательно. То есть если клиент изолирован API от физической реализации хранилища - это трёхзвенка? Точно? Вы хорошо подумали? Не будете отказываться от своих слов?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964857
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Какие там звенья? Каково таки определение "звена"?

Нет никакого желания софистикой с вами заниматься - тут и так полно людей для этого, а мне просто время тратить жалко. Рассуждайте дальше что "кастрюля это тоже сковородка, а сковородка, если хорошо подумать, то это просто большой половник, а половник это тот же дуршлаг, но только без дырок", но делайте это уже без меня :))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964861
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
"Звено" ("tier") определяется как раз очень легко и однозначно

fkthat
Нет никакого желания софистикой с вами заниматься
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964863
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

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

в советские времена была такая очень правильная профессиональная квалификация - "техник-программист". От "инженеров-программистов" они отличались тем, что учились в техникумах - с соответствующей разницей в критериях приёма и учебных программах. С моей точки зрения, различия достаточно очевидны: техник-программист способен зазубрить прочитанное и делать как ему показали; инженер-программист способен осознать прочитанное, оценить его, найти ему место в картине мира и применять тогда и так, как следует.

К сожалению, в постсоветские годы это деление начисто потеряли. Из ВУЗов, большей частью вообще не имеющих отношения к программированию, хлынула толпа "якобы программистов", едва дотягивающих до техников. На глаз их легко отличить по тому, что какой-то источник (книга итп) является для них неоспоримой догмой, истиной в последней инстанции, которая в принципе не подвергается критическому осмыслению.

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

Да, согласен, читать книги, руководства и документацию, это удел "техников". А настоящий программист, это, в первую очередь, Творец. Разве Микелланджело читал документацию, когда творил свои щедевры. :- D
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964880
MikeDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Да, согласен, читать книги, руководства и документацию, это удел "техников". А настоящий программист, это, в первую очередь, Творец. Разве Микелланджело читал документацию, когда творил свои щедевры. :- D

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

это у них называется - фаулер головного мозга
потерянное поколение


Если хочешь завалить кандидата на собеседовании, спроси хоть что-нибудь из Фаулера.
98% нынешних кандидатов не ответит.

Поэтому это ещё у кого там фаулер головного мозга
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964890
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
То есть если клиент изолирован API от физической реализации хранилища


Как это "изолирован"? :) Это в смысле, клиент шлёт некий абстрактный SQL запрос по API, а тот шлёт правильный SQL в физическое хранилище?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964891
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

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

И ваще, когда уже будет веб интерфейс с твоей двух-звенкой? )))

Послушай, ВИПРОС и все прикладные системы на ней - собственность ААУК.
ААУК внедряет всю эту байду в концерне ВКО Алмаз - Антей.
Никаких запросов по части веб ни у кого нет, мои инициативы по этой части жестко пресеклись (да, в принципе, я прекрасно знаю, что это нафиг не нужно, но больше думал о себе).
Дело другое, что можно было бы более четко структурировать ВИПРОС (я тебе показывал укрупненный план тут где то), но это тоже никем не поддержан.
А так я номинально - директор по разработке ПО ААУК, но, в основном на удаленке разрабатываю ВИП.Производство, уже года 3 ВИПРОС стабилизирована и живет без изменений. Остальные системы на ВИПРОС разрабатывают без меня, у них есть и свои трехзвенные версии ВИПРОС и т.д. (мне не показывают).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964899
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

Да это понятно, ты уже рассказывал. Не по орг. фактуре вопрос.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964900
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
И ваще, когда уже будет веб интерфейс с твоей двух-звенкой? )))

Ему некогда в веб - у него логин пользователя невозможен без присутсвия него и еще пары админов
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964903
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
И ваще, когда уже будет веб интерфейс с твоей двух-звенкой? )))

Ему некогда в веб - у него логин пользователя невозможен без присутсвия него и еще пары админов

окстись, мальчик
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964904
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
ViPRos,

Да это понятно, ты уже рассказывал. Не по орг. фактуре вопрос.

Ну, ты готов бесплатно переделать ВИПРОС?
Это воще то большая фигня (тем более, что при переделке по любому захочется улучшить и т.д. - миллион хотелок).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964912
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
softwarer
Только книга-то в этом не виновата.

Да, согласен, читать книги, руководства и документацию, это удел "техников". А настоящий программист, это, в первую очередь, Творец. Разве Микелланджело читал документацию, когда творил свои щедевры. :- D

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

hVostt
Как это "изолирован"? :)

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

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

да я как то пытаюсь уже не обращать внимание, это братия уже до инфаркта довела
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39964924
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Как это "изолирован"? :) Это в смысле, клиент шлёт некий абстрактный SQL запрос по API, а тот шлёт правильный SQL в физическое хранилище?

Изолирован, это значит, что приложение-клиент не работает сам, непосредственно с файловой/дисковой системой в которой хранятся данные (и вообще про неё нничего не знает), а делает это только через взаимодействие с приложением-сервером.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965468
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
hVostt
ViPRos,

Да это понятно, ты уже рассказывал. Не по орг. фактуре вопрос.

Ну, ты готов бесплатно переделать ВИПРОС?
Это воще то большая фигня (тем более, что при переделке по любому захочется улучшить и т.д. - миллион хотелок).


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

При правильной трёх-звенке как минимум, ты делаешь ещё одного лёгкого клиента. Не важно какой это -- веб, мобильное приложение, десктоп под iOS, или прошивка для холодильника.

В твоём же случае, в двух-звенке, так просто не получается, получается дорого. Либо вообще переписывать.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965469
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
hVostt
Как это "изолирован"? :)

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


Да, выяснить нужно. Но слово "изолирован" нельзя трактовать как-то иначе, чем это определено в русском языке.

Вы лежите в палате на карантине, изолированы от общества. Но вот кто-то из общества кто-то хочет вам что-то передать. Он это делает через мед. персонал. Т.е. делает тоже самое, что хотел сделать из рук в руки, только через третьи руки.

А если через мед. персонал передают кусок мяса, а вам приносят приготовленный из этого мяса суп, то это уже не изоляция интерфейса, а совершенно что-то другое :)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965470
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
Как это "изолирован"? :) Это в смысле, клиент шлёт некий абстрактный SQL запрос по API, а тот шлёт правильный SQL в физическое хранилище?

Изолирован, это значит, что приложение-клиент не работает сам, непосредственно с файловой/дисковой системой в которой хранятся данные (и вообще про неё нничего не знает), а делает это только через взаимодействие с приложением-сервером.


Ну вот это не совсем корректный термин. Вы скорее всего абстрагирование путаете с изолированием. Понятно, что хотели сказать, но лучше применять наиболее подходящие термины )
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965473
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Вы лежите в палате на карантине, изолированы от общества. Но вот кто-то из общества кто-то хочет вам что-то передать.

С точки зрения русского языка передача - это уже нарушение изоляции :)

hVostt
А если через мед. персонал передают кусок мяса, а вам приносят приготовленный из этого мяса суп, то это уже не изоляция интерфейса, а совершенно что-то другое :)

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

Я горячо поддерживаю идею хорошей терминологии и точного употребления слов. В то же время отмечу, что для обсуждавшегося вопроса эта деталь не слишком важна.


К сожалению, очень важна, потому что:

softwarer
hVostt
Вы лежите в палате на карантине, изолированы от общества. Но вот кто-то из общества кто-то хочет вам что-то передать.

С точки зрения русского языка передача - это уже нарушение изоляции :)


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

Но вот на данном, должно быть, максимально понятном и примитивном примере, у нас уже расхождения в понимании одного и того же термина. Следовательно любой спор с использованием этого термина будет сильно искажён.

И с вероятностью 99% может оказаться так, что оба оппонента будут говорить об одном и том же, но разными словами, и на самом деле отстаивается одинаковая точка зрения
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965528
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
При правильной трёх-звенке.

Местный Комитет после обсуждения решил, что трехзвенка это антипаттерн и говнокод. Также, Комитет настоятельно рекомендовал к применению подход "BCDD" - "Button-click Driven Design". Для каждого кейса на форму в дизайнере тащится кнопка и в её событие Click помещается вся работа с UI, BL, и DB. В качестве референс-имплементации BCDD советуют использовать проект "Запускач" (tm).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965563
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Уже вот тут вы считаете, что передача предметов -- нарушение изоляции, а я так не считаю. Так как карантин это ...

Вы же говорили о смысле слова "изоляция", а не о смысле слова "карантин", не так ли?

hVostt
И с вероятностью 99% может оказаться так

Это довольно странный оборот речи ;)

Такой расклад, конечно, возможен, хотя вероятность Вы сильно переоцениваете. Но у нас с коллегой fkthat другой расклад: "Ему со мной уже непонятно, а мне с ним уже скучно". Как, собственно, с любым клоуном.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965584
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>fkthat, сегодня, 08:31 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22144673][22144673]
>… Для каждого кейса на форму в дизайнере тащится кнопка и в её событие Click помещается вся работа с UI, BL, и DB...
<
И что в этом плохого.
1. Декомпозиция физического функционала КИС разбивает его на части.
2. Каждая часть работает с несколькими сущностями и реализуется функциональным приложением.
3. Функциональное приложение состоит из нескольких UserControl, каждый из которых работает со своей сущностью.
На слайде показан UserControl, работающий с сущностью Отделы.
UserControl-Отделы содержит всю нужную информацию для работы пользователя с сущностями Отделы:
1. Локальный класс, определяющий локальное представление атрибутов сущности
Код: c#
1.
public class row_Entity {...}


2. Переменные, уровня UserControl, для хранения информации по сущностям:
Код: c#
1.
2.
3.
    ObservableCollection<row_Entity> oc_Entity = new ObservableCollection<row_Entity>();  //-- Показываем в DataGrid 
    List<row_Entity> lst_Entity; //-- Временное хранение выборки
    public row_Entity xrow;


3.DataGrid работы с сущностью
Код: xml
1.
    <DataGrid Grid.Column="1" Grid.Row="1" x:Name="dgv_Entity"  MouseDoubleClick="dgv_Entity_MouseDoubleClick" HorizontalAlignment="Left" VerticalAlignment="Top" Height="302"  Width="253" CanUserAddRows="False"  VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Visible" RowHeaderWidth="10" >


4. Описание кнопки UPDATE
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
    <Button Grid.Column="0" Grid.Row="1" x:Name="btc_Сохранить" Content="Button" HorizontalAlignment="Center"  VerticalAlignment="Top" Width="26" Height="25" Click="btc_Сохранить_Click" Margin="2,101,2,0" ToolTip="Сохранить">
      <Button.ContentTemplate>
        <DataTemplate>
          <StackPanel Orientation="Horizontal">
            <Image Source="Ресурсы\SAVE.BMP"/>
          </StackPanel>
        </DataTemplate>
      </Button.ContentTemplate>
    </Button>


5. Здесь приведен код обработчика UPDATE.

Если сможете, покажите где плохо.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965630
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
"Ему со мной уже непонятно, а мне с ним уже скучно".

Это мне с вами скучно. Не ожидал, что вам, оказывается надо разъяснять такие вещи, которые любой нормальный джун год+ знает.

softwarer
Как, собственно, с любым клоуном.

"Давай, до свидания" (с)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965651
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
hVostt
Уже вот тут вы считаете, что передача предметов -- нарушение изоляции, а я так не считаю. Так как карантин это ...

Вы же говорили о смысле слова "изоляция", а не о смысле слова "карантин", не так ли?


Из вики.

В некоторых случаях карантин подразумевает полную изоляцию эпидемического очага с вооружённой охраной по периметру[3].

Карантин берётся как наиболее близкая в текущей ситуации аналогия, и всё :)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965655
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
И что в этом плохого.


facepalm.jpg

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

Именно. Отсюда можно сделать вывод, что в некоторых случаях он полной изоляции не подразумевает - а когда подразумевает, охрана будет стрелять в "передающих" как в нарушителей изоляции. Также отсюда можно сделать вывод, что изоляция бывает полная и неполная. И так далее.

hVostt
Карантин берётся как наиболее близкая в текущей ситуации аналогия, и всё :)

Здесь важно слово "аналогия". В Вашей картине мира "карантин" есть некий аналог "неполной изоляции", допускающей одностороннюю передачу предметов. И само слово "изоляция", когда употребляется в контексте карантина, приобретает соответствующий смысл, немного отличающийся от смысла этого слова в других контекстах (например, в контексте электричества).

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

Именно. Отсюда можно сделать вывод, что в некоторых случаях он полной изоляции не подразумевает - а когда подразумевает, охрана будет стрелять в "передающих" как в нарушителей изоляции. Также отсюда можно сделать вывод, что изоляция бывает полная и неполная. И так далее.


Верно. Поэтому, важно договориться о терминологии.

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


Проблема любой аналогии в том, что иногда вносит много искажений )

И всё же. Изоля́ция (от фр. isolation — отделение, разобщение). Уменьшение или полное прекращение прямого, непосредственного взаимодействия.

Больше ничего другого нет.

softwarer
Я говорю об этом потому, что слово "изоляция", на котором Вы сфокусировались, было употреблено в конкретном контексте и таким же образом отчасти приняло особые для него оттенки смысла. Высказывание коллеги там вполне понятно и не вызывает сомнений, поэтому претензий к возможно неидеальному выбору терминологии лично у меня нет.


Но вы при этом задали довольно абсурдный вопрос, и абсурдность вопросу придало применение этого термина.

Теперь, чтобы понять как ответить на ваш вопрос, нужно получить ваше совершенно однозначное понимание термина "изоляция", иначе непонятно )
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965674
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>hVostt, сегодня, 13:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22144883][22144883]
>Пусть делает как хочет, и радует своих внутренних свиней апельсинами
<
Свиньи не понимают вкуса моих апельсинов, они хрюкают и жуют чужие желуди.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965704
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>hVostt, сегодня, 13:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22144883][22144883]
>Пусть делает как хочет, и радует своих внутренних свиней апельсинами
<
Свиньи не понимают вкуса моих апельсинов, они хрюкают и жуют чужие желуди.



Я вам одну вещь скажу, только вы не обижайтесь.
Многие "свиньи" писали код так, как вы его пишете сейчас, когда только начинали свою карьеру в разработке.
И на своём опыте познали вкус этих гнилых апельсинов.

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

Я с этого и начал. Но оказалось, что собеседник не в состоянии дать внятное определение используемым словам.

hVostt
Но вы при этом задали довольно абсурдный вопрос, и абсурдность вопросу придало применение этого термина.

Мой вопрос - очень близкий пересказ утверждения собеседника. По сути я просил его подтвердить, что он хотел сказать именно то, что сказал. Мне кажется, что никакой дополнительной абсурдности я своим вопросом не принёс.

hVostt
Теперь, чтобы понять как ответить на ваш вопрос, нужно получить ваше совершенно однозначное понимание термина "изоляция", иначе непонятно )

Вы вряд ли сможете ответить на этот вопрос - если, конечно, не является альтер эго fkthat-а. Он был обращён к нему, по поводу его утверждения и использовал его терминологию.

Если хотите ответить на мой вопрос, Вам скорее стоит дать своё определение "звена" - если, конечно, считаете нужным. У меня определение есть, но настаивать на нём было бы неверным. Я предлагаю обсудить - что же такое, собственно, "звено", и исходя из этого говорить о "звенности" тех или иных ИТ-решений.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965792
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Дмитрий Мух, сегодня, 14:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22144940][22144940]
>Я вам одну вещь скажу, только вы не обижайтесь.
<
Я вам одну вещь покажу, только вы не обижайтесь и постарайтесь понять.
Посмотрите на прилагаемый слайд.
Стараюсь по мере сил перевести свою поделку на netcor31. В качестве api доступа к MSSQL использую EF (лучшего пока ничего не нашел, но мне EF не нужен). Меня заинтересовали цифири объема приложения:
1. Объем содержимого папки приложения (без runtime) - 5,95 MB;
2. Объем EF - 5,31 MB;
3. Объем собственно функционального кода - 0,64 MB;
3. Объем содержимого папки runtime - 2,33 MB.
Я храню оригиналы криптоконтейнеров функциональных приложений на файловом сервере Хранилища и Пускач подкачивает их на комп клиента по необходимости.
Мне достаточно кода объемом всего 0,64 MB.
Вам не кажется, что накладные расходы слишком велики.
А у меня КИС не монолит и состоит из достаточно многих функциональных приложений
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965805
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
Вам не кажется, что накладные расходы слишком велики.
А у меня КИС не монолит и состоит из достаточно многих функциональных приложений

Простите, а накладные расходы на что? У вас есть какие-то требованию по объёму? У вас их нет.
Им никто не пользуется, следовательно нет и требований.

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


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

По поводу звеньев, есть как минимум определение на вики.

Трёху́ровневая архитекту́ра (трёхзве́нная архитекту́ра, англ. three-tier) — архитектурная модель программного комплекса, предполагающая наличие в нём трёх компонентов: клиента, сервера приложений (к которому подключено клиентское приложение) и сервера баз данных (с которым работает сервер приложений).

Некоторые относятся к википедии со скепсисом, тогда можно обратиться ещё к другим источникам, очень подробно описано в книге "Patterns of Enterprise Application Architecture" М. Фаулера.

Ещё вот гайд от майкрософт: https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ee658109(v=pandp.10)?redirectedfrom=MSDN
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965823
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>hVostt, сегодня, 13:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22144883][22144883]
>Пусть делает как хочет, и радует своих внутренних свиней апельсинами
<
Свиньи не понимают вкуса моих апельсинов, они хрюкают и жуют чужие желуди.


Ну оно и понятно. Если ты колхозник, то все вокруг тебя -- свиньи. Ваш хрюкометр зашкаливает ))

Короч, я уже сказал, если ваше внутреннее альтер-свин-эго довольно, делайте как вам угодно.
Хоть под себя ходите во время работы.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965838
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
я бы по возможности избегал "своих" определений

Я не настаиваю на авторстве. Вполне можно и чужое, с которым Вы согласны. Но термин-то надо как-то определить.

hVostt
По поводу звеньев, есть как минимум определение на вики.
Трёху́ровневая архитекту́ра (трёхзве́нная архитекту́ра, англ. three-tier)

Главная проблема в том, что это не определение "звена". Это определение некоей архитектуры, которой выдано некоторое кодовое название (допустим - "мясорубка") мало отражающее её суть и особенности. Что хуже, это кодовое название не бессмысленно (как была бы "мясорубка") и создаёт у изучающих ложные ассоциации, мешающие пониманию.

hVostt
архитектурная модель программного комплекса, предполагающая наличие в нём трёх компонентов: клиента, сервера приложений (к которому подключено клиентское приложение) и сервера баз данных (с которым работает сервер приложений)

В этой архитектурной модели я бы в первую очередь задал следующий вопрос. Допустим, я успешно реализовал некие "клиент" и "сервер приложений", работающие с СУБД Firebird. Согласно этому определению, такое приложение будет "мясорубкой". Теперь допустим, что я убрал СУБД Firebird и вместо неё встроил в сервер приложений Firebird Embedded. Насколько я понимаю, это можно сделать, не меняя ни байта ни в исходниках, ни даже в откомпилированном коде сервера. Программный комплекс в этом случае продолжит работать, но "мясорубкой" он - согласно определению - уже не будет. С моей точки зрения, такая ситуация бессмысленна. Определение нуждается в переработке и уточнении. Можно рассмотреть и другие ситуации, с точки зрения которых это определение неадекватно. Например, тот же FTP-сервер. До тех пор, пока он работает с файлами в файловой системе, он вроде как не "мясорубка". Но теперь я могу взять и подключить к операционке файловую систему, проецирующую как файлы блобы из БД. И бац! Снова без единого изменения в исходных или объектных файлах FTP-сервер стал "мясорубкой".

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


А вы внимательно почитайте определение, давайте разберём его на части:

Трёху́ровневая архитекту́ра (трёхзве́нная архитекту́ра, англ. three-tier) — архитектурная модель программного комплекса, предполагающая наличие в нём трёх компонентов: клиента, сервера приложений (к которому подключено клиентское приложение) и сервера баз данных (с которым работает сервер приложений).

1. Это определение модели, которой реальная архитектура может соответствовать, а может и нет.

2. Речь идёт о программном комплексе, а не о программе. Т.е. вполне конкретно говорится о том, что каждый компонент является самостоятельной программой (или комплексом).

3. Каждый компонент в модели выполняет совершенно конкретную архитектурную задачу , это описано и нарисовано на картинках.

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

Я не вижу что тут нужно уточнять, вроде всё очевидно.

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


Очень даже можно говорить в серьёз. И не только говорить, но и пользоваться этим на практике.

Можем даже обсудить тот самый пример с Firebird, где "не меняя ни строчки кода", переносим БД внутрь сервера приложений. Т.е. звучит так, как будто мы ничего не теряем, а даже приобретаем.

Я правильно вас понял, вы придерживаетесь такой точки зрения?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965852
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Это определение модели, которой реальная архитектура может соответствовать, а может и нет

Безусловно. Но задумайтесь чуть глубже. Зачем мы вообще говорим о моделях, даём определения итп.? Мы делаем это для того, чтобы оперировать абстракциями. Для того, чтобы говорить о характерных чертах, присущих определённому классу объектов (программных комплексах определённой архитектуры) в отличие от объектов других классов.

Я привёл пару примеров того, что очевидно одинаковые (ну точнее очень схожие, если придираться) по функционированию программные комплексы либо относятся, либо не относятся к этой архитектуре в зависимости от мелких деталей, внешних по отношению к самому программному комплексу. То есть, такое определение архитектуры не оставляет для неё возможности иметь какие-либо характерные черты. Мы вообще не можем ничего сказать ни о её преимуществах, ни о её недостатках. Мы просто не можем её разумно обсуждать.

При таком определении я могу взять, например, любое классическое клиент-серверное приложение - готовый к деплою дистрибутив - и не меняя в нём ни байта, продеплоить его как "мясорубку". И наоборот, могу взять любую "мясорубку" и сделать её "не мясорубкой". Ну о чём тогда вообще говорить?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39965856
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Можем даже обсудить тот самый пример с Firebird, где "не меняя ни строчки кода", переносим БД внутрь сервера приложений. Т.е. звучит так, как будто мы ничего не теряем, а даже приобретаем.

Пример - можем. Но это не даст нам ровно ничего, поскольку это будет обсуждение узкого случая, а не архитектуры.

Пожалуй, я сформулирую свой тезис так: "Архитектура программного комплекса - это то, что определяется разработчиком, глубоко влияет на реализацию программного комплекса и не может быть изменено без серьёзной переработки этого комплекса. То, что может быть без правки исходников, легко и в любой момент изменено сисадмином работающего решения - при том, что разработчик вообще не в курсе - архитектурой программного комплекса заведомо не является. Это уже конфигурация конкретной инсталляции продукта или что-нибудь в этом духе".

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


Ну почему же не можем? Ещё как можем. Может вы приведёте пример, который создаст достаточное противоречие, чтобы мы зашли в тупик?

Пример с Firebird Embedded не подходит, так как вы убрали одно звено, это совершенно очевидно. Никакого противоречия нет.

softwarer
При таком определении я могу взять, например, любое классическое клиент-серверное приложение - готовый к деплою дистрибутив - и не меняя в нём ни байта, продеплоить его как "мясорубку". И наоборот, могу взять любую "мясорубку" и сделать её "не мясорубкой". Ну о чём тогда вообще говорить?


Нет, не можете. О чём и речь. Двухзвенка и трёхзвенка отличаются не только количеством звеньев, это скорее следствие, чем самоцель.

У трех-звенки есть и свои недостатки по сравнению с двух-звенкой. Но эти недостатки полностью нивелируются преимуществами трёх-звенки в абсолютном большинстве случаев. Я бы сказал, сегодня вообще не имеет смысла делать двух-звенки, можно их спокойно хоронить и не чувствовать никаких угрызений совести по этому поводу :)

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

Этот тезис вызывает какие-либо возражения?


Конечно. Программный комплекс с трехзвенной архитектурой можно упаковать в один контейнер. Грубо говоря, можно сделать инсталлер, который установит все звенья но одной машине, вместе с БД. И будет выглядеть всё как одно приложение, цельное. Но это совершенно ничего не меняет с точки зрения архитектуры.

Более того, если именно таким образом планируется использовать ПО, то трёх-звенка будет избыточна, и двух-звенка тоже будет избыточна.

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


Конечно. Программный комплекс с трехзвенной архитектурой можно упаковать в один контейнер. Грубо говоря, можно сделать инсталлер, который установит все звенья но одной машине, вместе с БД. И будет выглядеть всё как одно приложение, цельное. Но это совершенно ничего не меняет с точки зрения архитектуры.
Так с чем же в моём тезисе Вы не согласны? Я ведь сказал ровно это же: это ничего не меняет (не должно менять) с точки зрения архитектуры. И привёл примеры, в которых меняет (если верить определению). Из чего я и делаю вывод, что это негодное определение (ну или годное, но не архитектуры, а чего-то другого).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966140
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
очень подробно описано в книге "Patterns of Enterprise Application Architecture" М. Фаулера.

Так ведь читать книжки это
авторфаулер головного мозга
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966293
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Так с чем же в моём тезисе Вы не согласны? Я ведь сказал ровно это же: это ничего не меняет (не должно менять) с точки зрения архитектуры. И привёл примеры, в которых меняет (если верить определению). Из чего я и делаю вывод, что это негодное определение (ну или годное, но не архитектуры, а чего-то другого).


Похоже мне придётся согласиться с fkthat , вы уходите в софистику.
Непонятно зачем.

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

Первая программа -- клиент, который содержит интерфейс пользователя.
Другая -- сервер приложений, который содержит логику.
Третья программа -- сервер баз данных, которая содержит данные.

В двух-звенной архитектуре у вас два звена. Т.е. две разных программы.

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

От того как вы эти приложения разместите, на одном компе, в одном контейнере, архитектура не меняется.

Но если вы из двух приложений слепите одно, то всё меняется. И про "не поменяется ни строчки кода", это из страны фантазий. Либо вы откровенно и в упор не понимаете разницу в этих архитектурах.

Что автоматически объясняет ваше негодование, когда кто-то сообщает о том, что ХП это плохо. Обыкновенное непонимание вопроса, уж извините.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966294
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
очень подробно описано в книге "Patterns of Enterprise Application Architecture" М. Фаулера.

Так ведь читать книжки это
авторфаулер головного мозга


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

Если Вы не поняли какую-то мысль, это не повод бросаться подобными словами. В приличном обществе принято ответственно относиться к своим словам.

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

Я могу сказать, как выглядит ситуация с моей стороны. В своё время некоторые умные люди выдвинули некоторые умные мысли, в том числе про многозвенку. Рассчитывая на то, что другие умные люди их поймут. К сожалению, ряд не столь умных людей отнёсся к этим мыслям как к религиозным догмам - без понимания, без критического осмысления, зато с молотком в руке. Я предлагаю таки подумать глубже, по-взрослому, всерьёз пошевелить мозгами. И когда мне в ответ снова начинают рассказывать "Бог сотворил мир за шесть дней и нуб тот, кто в этом сомневается" - мне становится скучно.

hVostt
Трех-звенная архитектура, это когда у вас три звена, под звеном в разработке программного обеспечения следует понимать программу. Три разных программы.

Вы наконец-то пробуете дать определение звена - то, что я просил у Вас, если мне не изменяет память, ещё позавчера. Ок, я согласен с тем, что звено - это программа. Однако, к этому требуются принципиальные уточнения. Если Вам интересно, могу рассказать, какие.

hVostt
Что автоматически объясняет ваше негодование, когда кто-то сообщает о том, что ХП это плохо.

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

hVostt
Обыкновенное непонимание вопроса, уж извините.

Знаете, моих сверстников в первом классе учили, что три минус пять будет ноль. И когда я намекал им, что это не совсем так, я тоже слышал про обыкновенное непонимание вопроса. И да, я отлично понимаю, что Вы даже не попытаетесь понять эту фразу, а снова повесите на неё ярлык "софистика".
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966298
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt

Да уже зла не хватает, когда кто-то начинает гнать на литературу.

Не все является научной литературой.
Ты даже не понимаешь, что твоя "трехзвенка" не является многозвенной архитектурой.
Многозвенность (цепь), как минимум, означает, что количество звеньев может варьироваться.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966299
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
hVostt
Похоже мне придётся согласиться с fkthat , вы уходите в софистику.
Непонятно зачем.

Если Вы не поняли какую-то мысль, это не повод бросаться подобными словами. В приличном обществе принято ответственно относиться к своим словам.

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


Большая просьба, конкретизируйте и дублируйте информацию. "Я выдвинул тезис". Про какой конкретно мы сейчас тезис говорим?

Я же дал чёткие общеизвестные определения архиктектур. Это не мои выдумки.

Ещё раз. 3 звена = три программы. Встраивание FireBird меняет физически количество программ, но не меняет их логически. Если вы три независимых звена запустите в одном процессе, это всё равно три разных программы .

Так что вот этим вы хотели сказать? Как типа не меняя ни строчки кода 3 звена превратить в 2? Нет, это обман. Просто используется способность FireBird работать внутри процесса приложения.


softwarer
hVostt
Трех-звенная архитектура, это когда у вас три звена, под звеном в разработке программного обеспечения следует понимать программу. Три разных программы.

Вы наконец-то пробуете дать определение звена - то, что я просил у Вас, если мне не изменяет память, ещё позавчера. Ок, я согласен с тем, что звено - это программа. Однако, к этому требуются принципиальные уточнения. Если Вам интересно, могу рассказать, какие.


Мне пока не требуется. Уже этого достаточно, чтобы сказать, что ваш пример с FireBird приятнут за уши. Может вы другой пример приведёте?

softwarer
hVostt
Что автоматически объясняет ваше негодование, когда кто-то сообщает о том, что ХП это плохо.

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


Ок, если вы согласны, что использование ХП нужно избегать, тогда значит это и правда мои фантазии, и я ну другого подумал.


softwarer
hVostt
Обыкновенное непонимание вопроса, уж извините.

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


Ох уж эти понты "я в детстве был умнее сверстников" :)
Сорри, без обид. Давайте замнём это и вернёмся к конкретике.

Я сказал, что у вас нет понимания, потому что вы растекаетесь мыслью тонким слоем по кафелю, где всё чётко и понятно. Типа а если вот под вот этим углом посмотреть в раскоряку, то слон это апельсин.

Ну и нафига оно? Понятно, что памятник Пушкину с определённой точки зрения это жопа. Какие вы хотите выводы из этого сделать? И зачем?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966300
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
hVostt

Да уже зла не хватает, когда кто-то начинает гнать на литературу.

Не все является научной литературой.
Ты даже не понимаешь, что твоя "трехзвенка" не является многозвенной архитектурой.
Многозвенность (цепь), как минимум, означает, что количество звеньев может варьироваться.


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

Я об этом еще полдюжины страниц назад писал, что "это то, что может быть развенуто на отдельном хосте", и давал ссылку на ту же самую книгу, вы же вместо того чтобы по ссылке сходить развели какую-то демагогию про уровень-неуровень и про головные мозги. А если кто-то пишет без goto, то у него, наверное, "дейкстра головного мозга", так что ли? :))
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966497
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Но если вы из двух приложений слепите одно, то всё меняется.

А насколько надо их "слепить" чтобы всё поменялось? По тому, что сказано Вами выше - поместить в одно адресное пространство недостаточно.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966521
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
hVostt
Но если вы из двух приложений слепите одно, то всё меняется.

А насколько надо их "слепить" чтобы всё поменялось? По тому, что сказано Вами выше - поместить в одно адресное пространство недостаточно.


Смысл в трех-звенки именно в разделении. Одна из основных проблем, которая решается -- горизонтальное масштабирование. Но это не единственный профит.

Как я уже говорил трёх-звенка это архетип. Часто сервер приложений сам состоит из нескольких звеньев, если угодно -- микросервисов. Также сервер приложений может использовать не одну СУБД, а несколько. Реляционку, кеш, очереди, а также быть клиентом более высокоуровневой N-звенной архитектуры (интеграции).
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966533
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

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

трехзвенка никакой не архетип - это отрыжка недоделанной веб (результат не системной развитии ИТ, когда каждый козел стандартизирует свое говно)


при чём тут веб?
я трёх-звенку делал и на десктопах много лет назад.

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

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

хотя никто ему не мешал повышать квалификацию..
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966644
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

все что сделано - тупик
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966656
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
сталкивался с разработчиком на фокс-про -- очень много желчи выливалось в курилке.
потому что он со своими ограниченными знаниями фокс-про уже нахрен никому не нужен

На форуме работа говорят , что разрабы фокспро черной икрой давятся.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966684
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
hVostt,

все что сделано - тупик


Пора было остановиться на изобретении огня, согласен :)
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966686
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
hVostt
сталкивался с разработчиком на фокс-про -- очень много желчи выливалось в курилке.
потому что он со своими ограниченными знаниями фокс-про уже нахрен никому не нужен

На форуме работа говорят , что разрабы фокспро черной икрой давятся.


Став незаменимым, тоже можно вынести из этого выгоду.

Поддержка устаревших платформ и технологий. На которые не найти спецов.
Или писать откровенно плохой и неподдерживаемый код (как у ВМоисеева).
Так тоже делают, порой даже специально.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966704
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
hVostt,

все что сделано - тупик


+
+
и быстро приведет к построению человеко-машиннй а затем полностью машинной цивилизации.
Хотя это уже будет и не цивилизация - а так - материя.

Сами себя уничтожаем - и очень быстро.
Программисты в первых рядах.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966710
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а начиналось с вопроса авторправильно ли на каждое действие клиентского приложения создавать новое подключение к БД?
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966718
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил
а начиналось с вопроса авторправильно ли на каждое действие клиентского приложения создавать новое подключение к БД?


От платформы зависит. .NET кеширует и повторно использует соединения из своего внутреннего пула, т.ч. в его случае правильно. Как с этим в случае с не-дотнет я в душе не знаю.
...
Рейтинг: 0 / 0
Взаимодействие клиентов с БД.
    #39966722
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Изопропил
а начиналось с вопроса пропущено...


От платформы зависит. .NET кеширует и повторно использует соединения из своего внутреннего пула, т.ч. в его случае правильно. Как с этим в случае с не-дотнет я в душе не знаю.
...
Рейтинг: 0 / 0
323 сообщений из 323, показаны все 13 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Взаимодействие клиентов с БД.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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