|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Доброго дня , господа. Я начинающий , но уже не молодой и вроде не эникейщик. Собственно вопрос по взаимодействию клиентов и БД следущий - правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Т.е. я могу тормознуть поток в приложении , не закрывая подключения и в этом же подключении если conn = not null сделать следующий запрос\процедуру. Готов обсудить все за и против каждого варианта. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 11:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 закрывается.(может быть что-то уже изменилось,но даже крутые порталы так работали(На мой взгляд неэффективно) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 12:57 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 закрывается.(может быть что-то уже изменилось,но даже крутые порталы так работали(На мой взгляд неэффективно) Вот и я озадачился , т.к. накатал прожку для оценки производительности БД, оказалось что нашей БД само подключение ресурсоемкое по процессору . По ораклу читал Кайта, надо освежить в память, а то отложилось что уникальный пользователь накладен , а не коннект. Ставить в очередь это сервер приложений , в клиентском приложении можно так данные терять , т.е. юзер будет искать сохранилось или нет. Вы правы, везде в обучалках открыть закрыть коннект . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 13:32 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E, Ставить в очередь это сервер приложений , Нет это делает сам класс OracleDatabasePollConnection из JDBC если мы говорим о java для node и python необходим OCI(бинарные либы оракла...они держат пул и являются шлюзом к node и т.д). Поэтому сервер приложений Вам необязателен(Можно спокойно на jetty(grizly,-любой автономный лёгкий http сервер на java) заделать..у меня так где-то было)...разве,что решаете и другие web проблемы...ну например,чтоб был https,много приложений взаимодействующих..Websocket и т.д. -тогда стоит подумать о сервере приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 13:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
irbis_al Misha_E, Ставить в очередь это сервер приложений , Нет это делает сам класс OracleDatabasePollConnection из JDBC если мы говорим о java для node и python необходим OCI(бинарные либы оракла...они держат пул и являются шлюзом к node и т.д). Поэтому сервер приложений Вам необязателен(Можно спокойно на jetty(grizly,-любой автономный лёгкий http сервер на java) заделать..у меня так где-то было)...разве,что решаете и другие web проблемы...ну например,чтоб был https,много приложений взаимодействующих..Websocket и т.д. -тогда стоит подумать о сервере приложений. В данном случае не Оракля, но большое вам спасибо. Дали верное направление. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 19:32 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Вот и я озадачился , т.к. накатал прожку для оценки производительности БД Напишите, на чём накатали, что за БД? Многие библиотеки по работе с БД реализуют в себе поддержку пула соединений и надо просто следовать рекомендациям вида: Misha_E открыть закрыть коннект ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 20:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Дмитрий Мух Misha_E Вот и я озадачился , т.к. накатал прожку для оценки производительности БД Напишите, на чём накатали, что за БД? JDBC , FireBird Дмитрий Мух Многие библиотеки по работе с БД реализуют в себе поддержку пула соединений и надо просто следовать рекомендациям вида: C FireBird все сложно, но на выбор СУБД повлиять не могу.И JDBC неудачно выбрал на питоне там драйвер и мануал повеселей и местами проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 21:05 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Обычно это совершенно неправильно. Но сильно зависит от архитектуры приложения и обстоятельств. Misha_E JDBC неудачно выбрал на питоне там драйвер и мануал повеселей А что, на нормальных языках программировать вообще вариантов нет?.. С/С++ там, Дельфи... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 14:06 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Обычно это совершенно неправильно. Но сильно зависит от архитектуры приложения и обстоятельств. Я неопытным глазом сразу заметил неладное [quot Dimitry Sibiryakov#22135787] Misha_E Misha_E JDBC неудачно выбрал на питоне там драйвер и мануал повеселей А что, на нормальных языках программировать вообще вариантов нет?.. С/С++ там, Дельфи... С++ начну в ближайшее время. Дельфи нормальный? Давно? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 15:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Дельфи нормальный? Давно? Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 06:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Zmeelov2 Misha_E Дельфи нормальный? Давно? Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший. Вот не хочу заводить холливар в этой теме можно отдельную тему создать.. Но вот я как бывший дельфист могу сказать если быстро наформошлёпать то да...дельфи равных нет...а вот если Вы делаете большую ERP И неизвестно(Компилятору) какая у Вас подгрузится логика интерфейс и т.д. Т.е мы говорим о ленивой заранее неизвестной подгрузке исполняемого объекта (в том числе с зависимостями из репозитория и по http),то круче java в этом вопросе никого нет. У Меня модуль состоит из главной формы...контейнера в который загрузится неизвестно что,и коннектор к базе данных ,который читает конфигурацию и говорит что грузить в контейнер в данный момент. Вот тут обсуждалось Идеальная платформа - из чего и как построить? И можно эту тему там и продолжать насчёт языка и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Zmeelov2 Misha_E Дельфи нормальный? Давно? Всегда был, с момента рождения. Лучший инструмент для разработки десктопных приложений работы с БД. А учитывая тесную связь с ФайрБерд (который растет из Интербейза, который в свою очередь тоже детище Борланда) - бесспорно лучший. Наверно именно поэтому мне пришлось на JDBC писать, потому что наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert. Разумеется эта хрень напрочь зависала в 70% случаев. Вот ничего не хочется иметь общего ни с такими языками , ни с такими ведущими. А теперь серьезно :делфи хорош как быстрая разработка легких графических интерфейсов , но как выясняется и тут есть VCL для решения многих проблем\задач, а в этом VCL нет диаграмм Ганта, но в этом же VCL для С++ они есть. Итог - делфи норм для узкого круга задач небольших организаций, и если есть 10к зелени на Embarcadero . Начав работать с FB я познал параллельную реальность в которой живет эта СУБД. Я узнал что существует такая вещь как "нестабильность курсора" . Был сильно удивлен что MERGE по скорости выполнения то же самое что процедурка на процедурном языке с переменными.И многое многое другое. После такого могу точно сказать - стоимость Оракли оправдана на все 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 09:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E, - стоимость Оракли оправдана на все 100% Ну возьмите Oracle XE(Он бесплатен) ...с каждой новой версией...он даёт всё больше и больше лимитов.Хотя их(лимитов) и сейчас дофига. Так же можно скачать по девелоперской лицензии большой оракле У меня в образе VM там большой оракле(его поставить непросто) http://www.cis-pos.com/apex/f?p=116:43 Поставьте образ сравните с XE ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 10:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 в нашей БД вероятно политическое решение ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:20 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Как то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Смотря как напишешь. Бывает нужно сделать n действий в одной сессии и если начать раздавать подключение направо и налево, то можно наделать себе дырок. С другой стороны поднимать соединение дорого, надо держать какой-то пул, пул закончится надо поднимать новые соединение - дорого, n соединений делать на всех страшно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:29 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster, надо держать какой-то пул, пул закончится Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает. Это экспериментальным путем вычисляется... У меня например расчёт на 25-30 пользователей 5 соединений в пуле.(у Вас может быть другая картина) При этом зависимость нелинейная (см.теорию массового обслуживания) на 60 пользователей модно дать уже 9 в пуле а на 90 -12 в пуле. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:39 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
irbis_al Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает. Так надо всё равно новое соединение поднимать. Не секурно же. Там в кешах что-то может остаться или во временных таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 11:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster irbis_al Ну когда пул заканчивается сессия просто ждет пока не освободится...т.е время отклика портала просядает. Так надо всё равно новое соединение поднимать. Не секурно же. Там в кешах что-то может остаться или во временных таблицах. А пользователь в БД один? А после авторизации как этот пользователь подтверждает что это он? Врменный файл, либо кукис если веб , либо переменная в приложении?Секурность отдельная история. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:41 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E А пользователь в БД один? Один. Авторизацию через юзеров бд делать - херовая идея. Misha_E А после авторизации как этот пользователь подтверждает что это он? Врменный файл, либо кукис если веб , либо переменная в приложении? С помощью асинхронного шифрования еще можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 12:50 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert Ненормальный процент дебилов среди использующих язык никак не соотносится с самим языком. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 13:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Misha_E наш ведущий(бесспорно в чьем то понимании лучший, если вдруг он это читает , то привет тебе) на этом лучшем языке смог сделать только программу кликер ,засунув внутрь делфи IBExpert Ненормальный процент дебилов среди использующих язык никак не соотносится с самим языком. "порог входа" обычно отсекает дебилов. Каждый дебил знает что такое плюсы и даже не суется туда. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 14:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Нет. Это самый тупой вариант, какой только можно представить. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2020, 13:39 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Нет. Это самый тупой вариант, какой только можно представить. если клиентов дофига, то иного варианта и нет ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2020, 13:58 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos то иного варианта и нет Посадить всех на n соединений, исключив атаки на общее соединение. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2020, 17:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos если клиентов дофига, то иного варианта и нет Точно нет? Ну то есть вот если хоть один другой вариант найдётся - ты посыпешь голову пеплом и впредь заречёшься писать прежде чем думать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2020, 21:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer ViPRos если клиентов дофига, то иного варианта и нет Точно нет? Ну то есть вот если хоть один другой вариант найдётся - ты посыпешь голову пеплом и впредь заречёшься писать прежде чем думать? чем лишний раз блабла, лучше бы просветил ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 01:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos чем лишний раз блабла, лучше бы просветил Чтобы просвещать, нужно хоть как-то представлять задачу. "Дофига" - это хотя бы примерно сколько? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 02:26 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Правильно держать пул соединений, на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Во многих ЯП и библиотеках это выглядит как создание и закрытие соединения, но при этом они берутся из пула. Никаких за и против тут быть не может. Вы не должны напрямую управлять соединением на уровне прикладного кода. И никакие оправдания вам тут не помогут. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 08:21 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 13:41 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hVostt на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных. дык, для каждого чиха есть свой пул ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 14:09 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer ViPRos чем лишний раз блабла, лучше бы просветил Чтобы просвещать, нужно хоть как-то представлять задачу. "Дофига" - это хотя бы примерно сколько? ну, есть же какие то ограничения на сервере на количество одновременных соединений "дофига" - близко к этим ограничениям ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 14:56 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos ну, есть же какие то ограничения на сервере на количество одновременных соединений "дофига" - близко к этим ограничениям Ну, тут вопрос - каких именно соединений. Речь может идти о сессиях в БД или о tcp/соединениях операционки. Но в любом случае в таких условиях стратегия "сразу же гробить" неэффективна по сравнению со стратегией "разделяя, эффективно использовать". На пальцах:
Давай возьмём за эталон лузерства решение "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. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 15:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hVostt на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных. Ну а ещё раньше лошадей подковывали. Как вам вообще права-то выдали, если вы не знаете о том, как подковать лошадь или перебрать мотор и промыть карбюратор, а? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 17:16 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Что бы лично я сделал вместо этого. Я бы поставил 20 промежуточных прокси - они простые и дешёвые. Клиенты соединяются на прокси по 500 штук на каждого, лимит в 1000 соединений не нарушен. Прокси соединяются с БД, тратя на это 20 * N соединений. N выбирается исходя из оптимальной работы сервера. Прокси диспетчеризует запросы так, чтобы наилучшим образом загрузить сервер (например, упаковывает разные в один батч). Лимит в 1000 соединений опять же не нарушается. Итого: сервер загружен по полной, 10'000 счастливчиков спокойно и эффективно работают, все счастливы. По цена/качество этот вариант кроет "одноразовые подключения" как бык блоху. Зачем так много слов и буков, если можно сказать -- горизонтальное масштабирование. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 17:20 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer, сам прекрасно понимаешь что про прокси и т.д. не был и речи, разговор был клиент - сервер а в режиме клиент-сервер я бы и на стороне сервера ввел бы пул соединений и присваивал бы динамические приоритеты клиентам и их запросам по заданным правилам ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 18:27 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos сам прекрасно понимаешь Не надо этими словами приписывать мне всякую фигню. Сам прекрасно понимаешь, есть некое приложение (готовое либо проектируемое), есть нарисованная тобой ситуация, стоит вопрос как сделать (или переделать) это приложение, чтобы оно хорошо работало в таком раскладе. ViPRos а в режиме клиент-сервер я бы и на стороне сервера ввел бы пул соединений Ну, есть такое в Oracle, называется shared server mode. Но это ответ для случая, если лимит по количеству соединений. Лимит по tcp соединениям это преодолеть не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 23:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer, ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок (прокладка всегда воняет) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 23:58 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Ну, есть такое в Oracle, называется shared server mode. Но это ответ для случая, если лимит по количеству соединений. Лимит по tcp соединениям это преодолеть не поможет. ну, есть слава бог люди с правильными мозгами, не все фаулеры еще засрали ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 23:59 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
irbis_al Т.е мы говорим о ленивой заранее неизвестной подгрузке исполняемого объекта (в том числе с зависимостями из репозитория и по http),то круче java в этом вопросе никого нет. Весьма спорно. Напомните: вот лежит некий плагин (ну то есть jar-ник или нечто аналогичное в любом другом формате). Java хотя бы научилась загружать его без необходимости явно перечислять стартовые классы, инициализация которых должна быть выполнена? irbis_al У Меня модуль состоит из главной формы...контейнера в который загрузится неизвестно что,и коннектор к базе данных ,который читает конфигурацию и говорит что грузить в контейнер в данный момент. Вы так говорите, будто это нечто особенное. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 00:02 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок Если у ТС есть колёса и руль, это не означает, что нет ничего кроме колёс и руля. Он задаёт архитектурный вопрос и не задал никаких ограничений на "только КС". Да и кроме того, прокси - вовсе не обязательно нарушение КС. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 00:06 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer ViPRos ничего я тебе не приписываю, просто у ТС был клиент и сервер БД, никаких прокладок Если у ТС есть колёса и руль, это не означает, что нет ничего кроме колёс и руля. Он задаёт архитектурный вопрос и не задал никаких ограничений на "только КС". Да и кроме того, прокси - вовсе не обязательно нарушение КС. ладно, тебя х переспоришь, за столько лет накачал уже навыки ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 00:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos, а смысл спорить? Ну хреновый это режим - пересоединяться на каждый чих. Всё равно что школьникам после каждого урока возвращаться домой, а потом снова топать в школу на следующий. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 01:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos ну, есть слава бог люди с правильными мозгами, не все фаулеры еще засрали Ну я же говорил! Земля плоская! А то засрали тут свои мозги всякими Галилеями галимыми. Фух, хорошо есть ещё умные люди ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 01:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Misha_E правильно ли на каждое действие клиентского приложения создавать новое подключение к БД? Правильно держать пул соединений, на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Во многих ЯП и библиотеках это выглядит как создание и закрытие соединения, но при этом они берутся из пула. Никаких за и против тут быть не может. Вы не должны напрямую управлять соединением на уровне прикладного кода. И никакие оправдания вам тут не помогут. Зависит от БД. Иногда выгоднее честное открытие/закрытие соединений. Натолкнулся на особенности MySQL. Где у меня пул соединений постоянно тихо терял соединение с БД. Соответственно из пула выдавалось "мертвое содинение" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 06:13 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hVostt на каждую операцию брать соединение из этого пула, выполнять операцию и возвращать соединение в пул. Достойный паттерн для СУБД и пользователей, которые ничего не знают о транзакциях, временных таблицах и прочих сессионных переменных. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 10:45 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E А разве все перечисленное не должно интересовать только того кто пишет ХП? Нет. Подход "всё на ХП" - это отрыжка больного на голову MSSQL, которая появилась только потому, что они не могли сделать адекватной работы СУБД в других режимах и предпочли за счёт маркетоидов прорекламировать багу как фичу. Так или иначе, контракт между БД-частью и БД-клиентом - вопрос архитектуры. Разработчик выбирает тот вариант, который соответствует задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 13:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Misha_E А разве все перечисленное не должно интересовать только того кто пишет ХП? Нет. Подход "всё на ХП" - это отрыжка больного на голову MSSQL, которая появилась только потому, что они не могли сделать адекватной работы СУБД в других режимах и предпочли за счёт маркетоидов прорекламировать багу как фичу. Так или иначе, контракт между БД-частью и БД-клиентом - вопрос архитектуры. Разработчик выбирает тот вариант, который соответствует задаче. ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API или тому от чего наследоваться , а в противном случае ORM . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:02 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API Секурность на уровне ХП - это заведомо хрупкое решение. API - хорошее слово. ХП - это существенная часть API, но они не в состоянии дать адекватное решение ряду стоящих задач, поэтому подход "всё на API" годится либо для демо-примеров в книжках, либо для производства инвалидов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:14 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Misha_E ХП снимает много вопросов с секурностью и целостностью как следствие. И лучше относится к ХП как к API Секурность на уровне ХП - это заведомо хрупкое решение. API - хорошее слово. ХП - это существенная часть API, но они не в состоянии дать адекватное решение ряду стоящих задач, поэтому подход "всё на API" годится либо для демо-примеров в книжках, либо для производства инвалидов. Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП, а обратные случаи есть. Секурность на уровне ХП замечательно работает по пользователям. Пользователь может выполнить ровно то что ему дозволено и это хорошо когда используются СУБД без РЕДО лога и нельзя сделать селект таблицы на определенную дату , ну есть логгирование и дупликаты на тригграх, но сути не меняет . В некоторые ХП в некоторых СУБД вполне можно интегрировать код языков высшего порядка , поэтому я не совсем понимаю каких задач нельзя решить на уровне СУБД.Существует огромное множесто аппликух на APEX , в которых все выполняется в СУБД и есть огромная куча очень крупных компаний инвалидов, которые это с удовольствием используют . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:31 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП, а обратные случаи есть. Секурность на уровне ХП замечательно работает по пользователям. Пользователь может выполнить ровно то что ему дозволено и это хорошо когда используются СУБД без РЕДО лога и нельзя сделать селект таблицы на определенную дату , ну есть логгирование и дупликаты на тригграх, но сути не меняет . В некоторые ХП в некоторых СУБД вполне можно интегрировать код языков высшего порядка , поэтому я не совсем понимаю каких задач нельзя решить на уровне СУБД.Существует огромное множесто аппликух на APEX , в которых все выполняется в СУБД и есть огромная куча очень крупных компаний инвалидов, которые это с удовольствием используют . Прошу прощения. Но у меня к ХП предвзятое отношение. ХП - зло! :-) И проблема не в том, что можно сделать или нельзя. Что может ХП или не может. Дело в том что 1. Использование ХП это сильный vendor lock. Для примера можете посмотреть страдания перехода с Oracle на PostgreSQL в соседнем форуме 2. ХП очень трудно завести в "систему контроля версий" и CI/CD 3. Очень трудно писать unit-тесты. Тут на обычных ЯП unit-тесты не особо пишут, хотя есть и специализированные фреймворки и IDE настроены, чтобы было удобно писать тесты. 4. Из-за того, что п.2. трудно сделать, то обычная практика "немножко поправим на prod'е". И соотвественно прямой доступ разработчиков к БД (это абсолютное ЗЛО). 5. Привет процедурное программирование. А так, да. на ХП можно сделать любую дичь и она будет работать. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 14:53 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП Зато ряд важных вещей в ХП делается только через задницу. Например, массовая обработка данных или выборка по фильтрам. Misha_E а обратные случаи есть. Даже если кто-то ухитрился наколенить СУБД, в которой такое есть - это никак не означает, что следует всё делать на ХП. Misha_E Секурность на уровне ХП замечательно работает по пользователям. До тех пор, пока не пытаться её тестировать. Если секурность размазана по 10'000 ХП - в ней наверняка найдётся полно ошибок. Просто без вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 15:16 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
mad_nazgul 1. Использование ХП это сильный vendor lock А уж какой vendor lock использование языка программирования mad_nazgul 2. ХП очень трудно завести в "систему контроля версий" и CI/CD Н-да. Собственно, на этом аргументе можно и закончить. Как говорят в таких случаях, "попробуйте нанять программиста". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 15:18 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 , а не все остальное что не так похоже на ораклю. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 15:33 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Misha_E Я туповат и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП Зато ряд важных вещей в ХП делается только через задницу. Например, массовая обработка данных или выборка по фильтрам. 3 самых крупных провайдера РФ сидят на чистой оракле со всей логикой в нем, БД террабайтные. Мобильные операторы то же , но насколько логика на ХП у них не знаю. softwarer Misha_E а обратные случаи есть. Даже если кто-то ухитрился наколенить СУБД, в которой такое есть - это никак не означает, что следует всё делать на ХП. Если не нужна скорость работы , то да - не следует. А потом искать методы ускорения вставок, апдейтов и всего остального. softwarer Misha_E Секурность на уровне ХП замечательно работает по пользователям. До тех пор, пока не пытаться её тестировать. Если секурность размазана по 10'000 ХП - в ней наверняка найдётся полно ошибок. Просто без вариантов. Ну в приложениях, которые декомпилятся на ура с безопасностью все существенно лучше с вложенным чистым SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 15:43 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Все определяется задачами. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 15:44 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E 3 самых крупных провайдера РФ сидят на чистой оракле со всей логикой в нем Подсказываю: я ещё недавно разрабатывал на Оракле для провайдеров. Надеюсь, Вы не собираетесь утверждать, что раз Оракл - значит всё на ХП? Misha_E Если не нужна скорость работы , то да - не следует. Судя по этой фразе, Вы работаете на MSSQL? Мне так помнится, у них были подобные проблемы. Misha_E А потом искать методы ускорения вставок, апдейтов и всего остального. Misha_E Ну в приложениях, которые декомпилятся на ура с безопасностью все существенно лучше с вложенным чистым SQL. Единственно разумный ответ на такой аргумент - "слив засчитан". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 15:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Misha_E "слив засчитан". Культурный и образовательный уровень понятен, в таком случае предпочитаю пользоваться хорошим советом. Да ,слился, ок. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 16:10 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E, умеешь работать с ХП - работай и никого не слушай. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 17:27 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>Misha_E, сегодня, 14:31 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139058][22139058] >...и мне не известны случаи того что можно сделать в "прямом запросе" и нельзя сделать в ХП, а обратные случаи есть. < и мне также не известны случаи по "прямому запросу", обратные есть. Все операции с базой данных (SELECT, INSERT, UPDATE, DELETE) стремлюсь реализовывать с использованием ХП. Пока получается. Мне не понятно как реализуется UPDATE без ХП в многопользовательской среде (оптимистическая блокировка). Клиент должен получить корректное значение измененной записи и признак ошибки. Подскажите как это реализуется без ХП ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 17:41 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Все операции с базой данных (SELECT, INSERT, UPDATE, DELETE) стремлюсь реализовывать с использованием ХП. Пока получается. Если вы не понимаете, зачем вы именно так делаете, значит делаете бездумно и глупо. ВМоисеев Мне не понятно как реализуется UPDATE без ХП в многопользовательской среде Ну и чем UPDATE в ХП отличается от UPDATE, вызванный со стороны клиента? Откуда же растут ноги у этой фобии? :) Судя по всему, абсолютно не имеет значения как вы что-то делаете. Одно то, что оно хоть как-то шевелится и вообще работает в принципе -- уже можно назвать однозначным успехом и радоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 23:44 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Подход "всё на ХП" Любой фанатизм является интеллектуальной импотенцией. Использование ХП должно иметь под собой вполне обоснованный профит. И да, язык SQL придуман для взаимодействия клиента с БД. Затем кто-то решает, что взаимодействовать с БД надо исключительно через ХП. Это вовсе не от большого ума, это клиника. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 23:47 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Затем кто-то решает, что взаимодействовать с БД надо исключительно через ХП. Это вовсе не от большого ума, это клиника. Придумали-то от большого ума. Просто не совсем... доброжелательного, назовём так. Примерно так же, как придумали идею каждый год покупать новый айфон. А вот бездумно следовать чужой придумке - это действительно клиника. hVostt Ну и чем UPDATE в ХП отличается от UPDATE, вызванный со стороны клиента? Насколько я помню, в те времена, когда это придумали (а может и сейчас) отличие было в том, что update-а в ХП MSSQL фиксировал план, а для update-а с клиента каждый раз считал его заново. Таким образом, dml с клиента выполнялся с лишними тормозами по сравнению с таким же в ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 00:08 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer hVostt Ну и чем UPDATE в ХП отличается от UPDATE, вызванный со стороны клиента? Насколько я помню, в те времена, когда это придумали (а может и сейчас) отличие было в том, что update-а в ХП MSSQL фиксировал план, а для update-а с клиента каждый раз считал его заново. Таким образом, dml с клиента выполнялся с лишними тормозами по сравнению с таким же в ХП. Ну это уж совсем стародавние времена )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 00:15 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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.
Покажите Ваш вариант кода клиента ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 01:08 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев, Код: c# 1. 2. 3.
Этот код выполнит следующие запросы: Код: sql 1. 2. 3.
А теперь расскажите, чем принципиально отличается ваш код? Потому что, судя по вашей ХП, она не только выполняет самую обычную команду UPDATE, которую можно совершенно таким же образом выполнить с клиента. Но и возвращает результат запроса, который мне нафиг не упал. Зачем мне эта лишняя операция? Я ведь уже запросил эти данные, прежде чем обновлять, или я знаю что обновляю на основании ранее полученной информации. Т.е. по сути ваша ХП является обманом. Вместо одной операции, она делает 2. Причём вторая будет выполнена независимо от того, нужна она мне или нет. А теперь поговорим про реальные системы. Была у меня система на поддержке с более 5000 таблиц. Если на каждую таблицу мне кто-то предложит написать по 4 ХП, то пойдёт в пешее эротическое путешествие. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 01:25 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 01:25 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139410][22139410] >… А теперь расскажите, чем принципиально отличается ваш код? < Я работаю со справочниками типа Отделы(к примеру) по другому - SELECT даёт мне список сущностей Отдел в памяти приложения. Список отображается в гриде. Здесь же могу отредактировать нужное поле Отдел и обращаюсь к хранимой процедуре UPDATE, передавая в качестве параметров <ключ, timestamp, имя_отдела>. В многопользовательской среде есть возможность что кто-то уже изменил имя сущности. UPDATE будет отклонен, пользователь получит новые параметры сущности, которые будут отражены в гриде. Если ок, то пользователь все одно получит параметры сущности с новым timestamp. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 02:05 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Покажите Ваш вариант кода клиента Вы действительно так непринуждённо удваиваете нагрузку на сервер только ради того, чтобы вернуть клиенту ровно те же данные, которые у него уже есть? Убедительный пример использования ХП Ну попробуйте хотя бы что-нибудь типа Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
это будет явно эффективнее Вашего чуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 03:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 05:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 == ХП. :-) А так сейчас предлагаются архитектурные решения, которые позволяют накладывать на системы хранения данных меньше ограничений. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 06:04 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
mad_nazgul ХП - зло! У них там церковь дельфи и они правоверные двузвенщики. В такой ситуации ХП - это просто часть реальности. В противном случае надо всё выкидывать и учиться кодить заново. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 08:42 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster mad_nazgul ХП - зло! У них там церковь дельфи и они правоверные двузвенщики. В такой ситуации ХП - это просто часть реальности. В противном случае надо всё выкидывать и учиться кодить заново. У нас нет ХП если чо, и делфя за 4 года проекта без ООП вообще, ни одного класса, одни функции процедуры. Я тут новенький и моя задача уйти со всего этого говна.Мне рассказывали что эти ребята еще до недавнего времени не знали что такое индекс и зачем он. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 09:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 тысяч рублей на ЯДРО, такие прайсы что оракля энтерпрайз позавидует. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 09:42 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
mad_nazgul softwarer пропущено... А уж какой vendor lock использование языка программирования Никак. Если брать ЯП на JVM, то Kotlin, Scala - Open Source. На не JVM, тоже куча ЯП в Open Source. Есть конечно MS, со своим C#, но они вроде тоже взяли курс на Open Source. Чем больше ветку читаю тем больше понимаю что тупой. Какая связь между vendor lock и свободным ПО? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 09:47 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Я тут новенький и моя задача уйти со всего этого говна Ууу, еретик. Misha_E Мне рассказывали что эти ребята еще до недавнего времени не знали что такое индекс и зачем он. Там всё на вынос, кмк. Перепили на вебню с трезвенкой для начала. Misha_E Какая связь между vendor lock и свободным ПО? Такая, что начав пилить вложенки на ракле ты будешь их пилить, пока проект не сыграет в ящик. И стабильно заносить бабки раклу. Вся суть "технологии" в этом и им там насрать, если это тебе где-то мешает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 10:04 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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. :-) У меня такое ощущение, что Вы ухитряетесь видеть здесь какие-то проблемы. Наверное, такие же, как в помещении пакета в контроль версий. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 10:06 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Я работаю со справочниками типа Отделы(к примеру) по другому - SELECT даёт мне список сущностей Отдел в памяти приложения. Список отображается в гриде. Здесь же могу отредактировать нужное поле Отдел и обращаюсь к хранимой процедуре UPDATE, передавая в качестве параметров <ключ, timestamp, имя_отдела>. В многопользовательской среде есть возможность что кто-то уже изменил имя сущности. UPDATE будет отклонен, пользователь получит новые параметры сущности, которые будут отражены в гриде. Если ок, то пользователь все одно получит параметры сущности с новым timestamp. Абсолютно те же запосы, которые вы выполняете внутри ХП, можно сделать со стороны клиента. В том числе проверку timestamp в условии WHERE, более того -- код проверки будет написан всего один раз, а не для каждой таблицы как у вас. В вашем случае, как мартышка, вы должны будете его дублировать. Какие преимущества у ХП вы можете наконец ответить? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 10:20 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 10:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139525][22139525] >...Абсолютно те же запосы, которые вы выполняете внутри ХП, можно сделать со стороны клиента. < Я показал свой код, покажите Ваш код. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 10:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster Misha_E Мне рассказывали что эти ребята еще до недавнего времени не знали что такое индекс и зачем он. Там всё на вынос, кмк. Перепили на вебню с трезвенкой для начала. По этому пути и идем. crutchmaster Misha_E Какая связь между vendor lock и свободным ПО? Такая, что начав пилить вложенки на ракле ты будешь их пилить, пока проект не сыграет в ящик. И стабильно заносить бабки раклу. Вся суть "технологии" в этом и им там насрать, если это тебе где-то мешает. SQL стандартизирован, юзайте чистый SQL. Сколько времени заняло добавление стандартизированного MERGE в POSTGREE? А чем там с переходом с коммерческой Java EE на сервера приложений , написанных на Питоне?JVM не опенсорс же. Вообще я крайне негативно отношусь к разговором о бабле. Большинство пишут из под поатной винды, юзают неимоверно дорогой офисный пакет от мелкософта, юзают домены с виндовыми серваками с подключением к ним по 5 баксов. Эти же люди хотят работать за еду,зарабатывать много денег программистами. Но эти же люди считают что СУБД должны быть бесплатными , а их продукты на их основе приносить много денег. Странно все это. Ах да, сейчас же никто в блокноте код не пишет, че насчет стоимостей сред разработок? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 10:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Какие преимущества у ХП вы можете наконец ответить? Как минимум Create or Replace и отсутствие разных версий клиента с разными вариантами запросов возвращающих разные чего-то там. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 10:56 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >hVostt, сегодня, 10:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139525][22139525] >...Абсолютно те же запосы, которые вы выполняете внутри ХП, можно сделать со стороны клиента. < Я показал свой код, покажите Ваш код. Я уже привёл в ответ на ваш. Или вы решили просто дурачка в очередной раз зачем-то включить? Очень простой вопрос задал. Не знаете, зачем вы ХП используете, так и скажите. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 10:58 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Но эти же люди считают что СУБД должны быть бесплатными , а их продукты на их основе приносить много денег. Странно все это. Щас каждый школьник так считает ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:00 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 03:52 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139430][22139430] >...это будет явно эффективнее Вашего чуда. < У меня нет вопросов по возврату timestamp в случае ок. Проверю код ошибки и напишу ещё один дополнительный SELECT Код: plsql 1. 2. 3. 4.
Вопрос возникает при обработке результата UPDATE клиентской программой. Надо рассматривать ситуацию ок, когда в сущности меняется только timestamp и не меняется строка грида, от ситуации ошибки, когда меняется строка грида и пользователю предлагается обработать эту ситуацию ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:04 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Ах да, сейчас же никто в блокноте код не пишет Я пишу в вим. Dbeaver - клиент субд - тоже опенсорц. Misha_E JVM не опенсорс же. Опенсорц. С чего нет? Misha_E а их продукты на их основе приносить много денег. Странно все это. Ну, какой-нибудь магазин на бесплатном LAMP, сделанный фрилансером за еду вполне может приносить тонны денег. Misha_E Но эти же люди считают что СУБД должны быть бесплатными Так они не бесплатные. Всё уже оплачено, просто не тобой, а кем-то, кто заказывал разработку. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:12 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 10:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139543][22139543] >...Или вы решили просто дурачка в очередной раз зачем-то включить? < По мне, то что Вы привели полная ахинея. Так делать нельзя. Даже простенький пример со справочником отделов, а такие ляпы - нельзя менять название отдела так, как делаете это Вы. Даже если раньше отдел назывался Зелёный и у Вас в гриде он виден как Зелёный, то нельзя менять название на Красный, как это делаете Вы - Петр Петрович уже мог поменять название на Мясной. И надо крепко подумать, перед тем как делать Вашу замену. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:19 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Вопрос возникает при обработке результата UPDATE клиентской программой. Надо рассматривать ситуацию ок, когда в сущности меняется только timestamp и не меняется строка грида, от ситуации ошибки, когда меняется строка грида и пользователю предлагается обработать эту ситуацию Провайдер на ваш запрос: Код: sql 1. 2.
вернёт количество обновлённых записей. Проверяете, если количество равно нулю, значит запись не обновилась. И реагируете на это соответствующим образом, например, показываете ошибку или делаете что-то ещё. При чём тут ХП?? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:20 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев У меня нет вопросов Угу. Этот мини-пример показывает, что Вы пишете не так, как стоило бы, а так, как получилось. Соответственно, реальный аргумент в пользу ХП в Вашем исполнении - "у меня так работает". ВМоисеев Надо рассматривать ситуацию ок, когда в сущности меняется только timestamp и не меняется строка грида, от ситуации ошибки, когда меняется строка грида и пользователю предлагается обработать эту ситуацию Сама по себе необходимость это рассматривать и обрабатывать крайне надуманна, но какие проблемы? Тот же приведённый мной update отлично справится с этой задачей, а кроме того, позволит ещё отдельно обработать ситуацию "неверный id либо запись удалена другим пользователем" (в Вашей реализации эта ситуация не обрабатываема в принципе). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster Misha_E Ах да, сейчас же никто в блокноте код не пишет Я пишу в вим. Dbeaver - клиент субд - тоже опенсорц. предпочитаю sublime или Eclipse crutchmaster Misha_E JVM не опенсорс же. Опенсорц. С чего нет? Смотря для чего используете, там чета про использовании в сервисах было и иск к Гуглу и все такое. crutchmaster Misha_E а их продукты на их основе приносить много денег. Странно все это. Ну, какой-нибудь магазин на бесплатном LAMP, сделанный фрилансером за еду вполне может приносить тонны денег. Так с чего он решил что его труд должен приносить тонны , а чужой не должен? crutchmaster Misha_E Но эти же люди считают что СУБД должны быть бесплатными Так они не бесплатные. Всё уже оплачено, просто не тобой, а кем-то, кто заказывал разработку. Ну ок, они считают что не должны платить ни за что. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев По мне, то что Вы привели полная ахинея. Так делать нельзя. Так делать нельзя, потому что вы так решили? ВМоисеев Даже простенький пример со справочником отделов, а такие ляпы - нельзя менять название отдела так, как делаете это Вы. Даже если раньше отдел назывался Зелёный и у Вас в гриде он виден как Зелёный, то нельзя менять название на Красный, как это делаете Вы - Петр Петрович уже мог поменять название на Мясной. И надо крепко подумать, перед тем как делать Вашу замену. Далеко не всегда требуется оптимистичная блокировка. Не все изменения в БД связаны непосредственно с редактированием данных пользователем. Оптимистичную блокировку можно вообще реализовать без использования timestamp и вообще без БД. Просто у вас в руках молоток и вокруг всё сразу становится гвоздями. И вы так до сих пор не можете объяснить, при чём тут ХП. И чем именно ХП тут помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:24 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer реальный аргумент в пользу ХП в Вашем исполнении - "у меня так работает" Аргументов на самом деле пока не предоставлено ) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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, то мои аргументы бы отпали. Но остались бы монолит и двухзвенка, что я тоже считаю злом. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:45 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Так с чего он решил что его труд должен приносить тонны , а чужой не должен? Так это разный труд, да и труд кодера денег уже принёс. Misha_E Ну ок, они считают что не должны платить ни за что. Так а зачем, если все уже, условно, есть и подходит под задачи? Misha_E иск к Гуглу и все такое. Иск к гуглу про использование api и там конца еще не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
mad_nazgul Если бы вендоры БД предоставили инструменты сопоставимые инфраструктурой JVM, то мои аргументы бы отпали. Но остались бы монолит и двухзвенка, что я тоже считаю злом. :-) Вы уж определитесь , вам вендор лок и инфраструктуру или БД отдельно от инфраструктуры))) Я окончательно запутался в том что тут пишут профи, JAVA хотим, а вот ораклю не хотим - https://docs.oracle.com/cd/B19306_01/java.102/b14187/chfive.htm Тока подобное использование это лютый так называемый vendor lock , но за то как удобно и функционально. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 11:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 11:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139564][22139564] >...При чём тут ХП?? < Я одним обращением к базе данных делаю UPDATE и получаю текущее состояние сущности. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:00 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster Misha_E Так с чего он решил что его труд должен приносить тонны , а чужой не должен? Так это разный труд, да и труд кодера денег уже принёс. Чета я тут совсем запутался , и этот кодер пока магазин делал еду кушал, значит дальше все бесплатно? Или как? Еще раз - мелкософт никого не напрягает, который не стесняется ядро опенбсд в винду совать , а потом 200 баков за Win10 спрашивать. crutchmaster Misha_E Ну ок, они считают что не должны платить ни за что. Так а зачем, если все уже, условно, есть и подходит под задачи? Так и пусть сидят на линуксе и пишут в блокноте. Я ж не против. Могут еще маки выкинуть у кого есть, оно же дорого и лютый вендор лок.[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:04 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 11:22 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139566][22139566] >...в Вашей реализации эта ситуация не обрабатываема в принципе < А если подумать и попытаться понять, что возвращает SELECT в приведенном выше коде? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:20 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев А если подумать и попытаться понять, что возвращает SELECT в приведенном выше коде? Ладно, аргумент снимается. По другим пунктам, видимо, возражений нет. Единственная причина использования ХП и двойной нагрузки на сервер - то, что Вы не умеете иначе. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:24 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Чета я тут совсем запутался , и этот кодер пока магазин делал еду кушал, значит дальше все бесплатно? Наняли кодера за деньги написать движок. Он движок написал, з/п получил. Что еще? Misha_E Еще раз - мелкософт никого не напрягает, который не стесняется ядро опенбсд в винду совать , а потом 200 баков за Win10 спрашивать. Не напрягает. Там bsd лицензия, кто под неё писал, знали на что идут. Вот когда заставляют покупать postgress PRO - напрягает. Misha_E Так и пусть сидят на линуксе и пишут в блокноте. Так причём тут их личные предпочтения? Хотят платить за венду с маками, пусть юзают, кого волнует. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:27 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >hVostt, сегодня, 11:20 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139564][22139564] >...При чём тут ХП?? < Я одним обращением к базе данных делаю UPDATE и получаю текущее состояние сущности. Это и без ХП реализуется. В общем, как обычно, вы просто не умеете работать с БД. Вам кто-то показал одну единственную возможность, и по-другому вы не умеете. Это очень плохо для разработчика, но не для того, кто разработчиком не является. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:32 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Единственная причина использования ХП и двойной нагрузки на сервер - то, что Вы не умеете иначе. ЧТД. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:32 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 Поместить можно - работать нельзя. Поменяйте "нельзя" на "я не умею и не способен" - и Ваши религиозные воззрения не будут вызывать никаких возражений. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:36 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Че к человеку с ХП пристали? Еще раз вам повторю что полно проектов на чистом Оракле APEX. 3 ведущих магистральныйх провайдера на чистой оракле на ХП. Да, может это потому-что 15 лет назад когда они начинали писать свои БД , то таких умников и новых фреймфорков не было .Но сейчас не переписывают потому что террабайтные базы работают и очень быстро на ХП , а еще потому что там уйма бизнеслогики.А всякие стартапы и интернет магазинчики могут спокойно делать на чем хотят.Потом когда стартап станет крупной компанией купят и они ораклю. Если у вас не "трехзвенка", то вы упираетесь в нужду обновлять тысячи клиентов ели у вас не SP . Если сервер приложений , то да можете ручками селекты править ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 12:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E, Вы вообще хотя бы примерно представляете объём данных "магистральных провайдеров"? Терабайтные базы, блин... Я бы просто ради смеха посмотрел, как Вы пытаетесь класть данные с радиуса в базу через ХП и насмерть затыкаетесь на 1/100 того потока, который вставляется без ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:01 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Еще раз вам повторю что полно проектов на чистом Оракле APEX. 3 ведущих магистральныйх провайдера на чистой оракле на ХП. И что? Как будто это что-то хорошее. Misha_E Но сейчас не переписывают потому что террабайтные базы работают и очень быстро на ХП Потому что те, у кого ХП, уже написали терабайты говнокода и переписывать его очень дорого и больно. Работает и не трогай. Первый раз в первый класс. Конечно, еще адепты старой школы будут рассказывать, что нет ничего лучше дельфи, апекса и двузвенки, потому что ничего другого они не умеют, а если выяснится, что всё это говно, и можно сделать дешевле, то насяльника наймёт хипсторов, а эти спецы пойдут мыть пол. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:10 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Misha_E, Вы вообще хотя бы примерно представляете объём данных "магистральных провайдеров"? Терабайтные базы, блин... Я бы просто ради смеха посмотрел, как Вы пытаетесь класть данные с радиуса в базу через ХП и насмерть затыкаетесь на 1/100 того потока, который вставляется без ХП. Ну , т.е. даже вашу версию принят за истину, то существуют только внешние вставки из внешних систем?А то что там встроенные шедулеры, что вставка идет в одну таблицу, а планировщики (с интервалами в 10ки секунд) с помощью различного кода в ХП это раскидывают куда надо по другим таблицам это мы в расчет не берем. Ок. Что ж, вывод по ветке: 1) Оракля говно потому что платное , винда и мак норм, потому что кто за платит его личное дело 2) ХП говно потому что можно сделать без них, обратное заключение то ж говно , смотри заключение первое. 3) Все кругом говно, тока Графы Монте Кристо молодцы. Если что упустил, дописывайте не стесняйтесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:15 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
crutchmaster Misha_E Конечно, еще адепты старой школы будут рассказывать, что нет ничего лучше дельфи, апекса и двузвенки, потому что ничего другого они не умеют, а если выяснится, что всё это говно, и можно сделать дешевле, то насяльника наймёт хипсторов, а эти спецы пойдут мыть пол. В мире энтерпрайз не важно хипстеры или нет, важно как работает. Когда аналоги будут работать быстрее ,дешевле или функциональнее ,тогда это поставят. А пока в узколобом мире есть только страх хипстеров, но нет страхов начальника что хипстеры быстро разбегутся и их поделки не будут работать. Была у меня парочка хипстерских коллег с профильным образованием, один бил в себя в грудь про то что он Жава кодер, второй про то что Шарпист. На вопрос что такое принципы ООП ответить не могли. Разумеется ничего такие хипстеры написать не могут.Писал один из них программы кликеры с помощью плагина IrfanView, второй ушел в JS. Если вы пытались перейти на личности, поленившись почитать ветку: 1) На делфи проекты не пишу, и делфи не интересует от слова совсем. 2) За двузвенку не топлю 3) Вообще ничего не умею и сливаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E ХП говно потому что можно сделать без них, обратное заключение то ж говно , смотри заключение первое. Вы сильно искажаете смысл сообщений себе в угоду. С такой позицией сложно о чём-то дискутировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:26 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Misha_E ХП говно потому что можно сделать без них, обратное заключение то ж говно , смотри заключение первое. Вы сильно искажаете смысл сообщений себе в угоду. С такой позицией сложно о чём-то дискутировать. Это выражение было не в паблик, а конкретному человеку с узколобыми взгядами. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:30 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E Ну , т.е. даже вашу версию принят за истину, то существуют только внешние вставки из внешних систем? Аргумент из области женской логики. Напомню: Ваша позиция "Всё надо делать на ХП". Моя позиция: "Всё надо делать подходящими средствами. ХП не является подходящим средством для всех случаев". И теперь Вы пытаетесь сказать "Ну ладно, допустим ХП в случае моего собственного примера неприменимы, ну так что же, вообще обходиться без ХП?" Misha_E Что ж, вывод по ветке: 1) Оракля говно .... Если что упустил, дописывайте не стесняйтесь. Конечно, упустили. Вывод по ветке очень простой: адепты подхода "всё на ХП" не имеют ни единого внятного аргумента в пользу своей точки зрения. Их аргументы можно объединить в следующие группы: - я сделал вот так и не умею иначе даже если так явно плохо - какой-то бред (это про мифические проблемы мержа итп) - бессодержательная демагогия (отсылка к авторитету провайдеров итп). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:39 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 12:32 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139641][22139641] >Это и без ХП реализуется. В общем, как обычно, вы просто не умеете работать с БД. < Покажите как надо. Приведите код пожалуйста. Но по моему мнению, пользователь должен точно знать, что он меняет. Поэтому Ваш код для меня не приемлен. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:47 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 меня устраивает. И я с ней нормально работаю. Но вот ХП для меня ЗЛО! :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 13:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 12:32 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139642][22139642] >ЧТД < <Бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:01 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Поменяйте "нельзя" на "я не умею и не способен" - и Ваши религиозные воззрения не будут вызывать никаких возражений. У меня опыт только моих наблюдений. Видел парочку проектов на Oracle c ХП "со стороны". Ни в одном из них система контроля версий не использовалась для ХП. В лучшем случае через бекапы БД. И честно, я не представляю, как все это запихнуть в пайплайн "Система контроля версий" CI/CD. Очень много ручного труда, и откат изменений так же ручной и очень сложный. Сам же для работы с изменениями в БД использую liquibase или flyway. Но это без ХП, максимум view-ки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:12 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев по моему мнению, пользователь должен точно знать, что он меняет. И Вы не знаете про существование UPDATE...RETURNING. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:14 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Потому что, судя по вашей ХП, она не только выполняет самую обычную команду UPDATE, которую можно совершенно таким же образом выполнить с клиента. Но и возвращает результат запроса, который мне нафиг не упал. Ну да. Принцип CQS. То что изменяет состояние не должно ничего возвращать, а то что что-либо возвращает не должно ничего изменять. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:26 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
mad_nazgul У меня опыт только моих наблюдений. Видел парочку проектов на Oracle c ХП "со стороны" То есть Вы даже сами не работали, не пытались сделать и не спрашивали. Но уверенно говорите "нельзя". Как можно в такой ситуации говорить хоть о каком-то уровне разговора? mad_nazgul Ни в одном из них система контроля версий не использовалась для ХП. В лучшем случае через бекапы БД. Знаете, в 1998-м году я пришёл на работу в компанию, в которой на тот момент не использовалась система контроля версий. Исходники лежали на сетевом диске, каждый разработчик их менял и компилировал, если шла попытка изменить файл, с которым в этот момент работает кто-то другой, возникала ошибка доступа. Как раз я в значительной степени побудил тех людей менять технологию разработки на более совершенную. Так вот, Ваши рассказы вызывают у меня ощущение, что от двадцатилетнего сна вдруг восстал программист тех времён. mad_nazgul И честно, я не представляю, как все это запихнуть в пайплайн "Система контроля версий" CI/CD Я не представляю, какие такие страшные проблемы Вы видите на этом пути. Я сам не особый фанат CI/CD - в том смысле, что считаю хорошим подходом для своих условий, но не серебряной пулей - но ещё лет десять назад работал в компании, где выстроили полный конвейер. mad_nazgul Очень много ручного труда, и откат изменений так же ручной и очень сложный. Ээ... Вы это про кнопочку "пересоздать контейнер" или про сервис, выполняющий ровно ту же операцию по запросу из средств автоматизации? К тому же, если я правильно помню, в модном сейчас devops, в связке с которым чаще всего и говорят про ci/cd, откат изменений вообще не предусмотрен, идеология "только вперёд, бац-бац и в продакшн, потом исправим". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 14:45 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Misha_E Ну , т.е. даже вашу версию принят за истину, то существуют только внешние вставки из внешних систем? Аргумент из области женской логики. Напомню: Ваша позиция "Всё надо делать на ХП". Моя позиция: "Всё надо делать подходящими средствами. ХП не является подходящим средством для всех случаев". И теперь Вы пытаетесь сказать "Ну ладно, допустим ХП в случае моего собственного примера неприменимы, ну так что же, вообще обходиться без ХП?" про все на ХП не помню, даже уточнял в каких случаях лучше , а в каких вариантов нет не в ХП писать.. softwarer Misha_E Что ж, вывод по ветке: 1) Оракля говно .... Если что упустил, дописывайте не стесняйтесь. Конечно, упустили. Вывод по ветке очень простой: адепты подхода "всё на ХП" не имеют ни единого внятного аргумента в пользу своей точки зрения. Их аргументы можно объединить в следующие группы: Были ,но я начинаю вас вспоминать, вам же чужие аргументы не интересны. softwarer - я сделал вот так и не умею иначе даже если так явно плохо - какой-то бред (это про мифические проблемы мержа итп) - бессодержательная демагогия (отсылка к авторитету провайдеров итп). Авторитета у провайдеров нет , у них большие БД с большой кучей данных и отчетов по этим данным. А ТЕПЕРЬ КАПСЛОКОМ - Я СЛИЛСЯ, ТОЧКА. Проблем с мержом нет, у людей есть проблемы с вендорлоком, который не связан с платностью или бесплатностью. Вtндорлок всегда решался стандартами , в субд это стандарты sql, тока вот в чем печалька, СУБД на которую переходят для избежания вендорлока мердж добавляет более 10 лет. Все бы ничего, но мердж очень удобная вещь позволяющая удобно делать вещи которые в обычной практике удобнее делались на вендорлочных расшиниях SQL. И еще раз - я слился, не надо меня убеждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 15:16 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E про все на ХП не помню 22138868 22139058 и т. п. Misha_E даже уточнял в каких случаях лучше Очень односторонне уточняли. В формулировке "я не знаю случаев, когда лучше" итп. Misha_E Были Когда были, на них легко дать ссылку. А подобное утверждение без ссылки - опять же демагогия. Равно как и ссылка на какой-либо опровергнутый аргумент. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 15:36 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Не нашел там указания что SP ONLY, первая ссылка вообще вопрос.... softwarer Misha_E даже уточнял в каких случаях лучше Очень односторонне уточняли. В формулировке "я не знаю случаев, когда лучше" итп. в 3 или 4 раз повторю. Например APEX.[/quot] softwarer Misha_E Были Когда были, на них легко дать ссылку. А подобное утверждение без ссылки - опять же демагогия. Равно как и ссылка на какой-либо опровергнутый аргумент. 22139669 Я слился, не забывайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 15:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E в 3 или 4 раз повторю. Например APEX. Что APEX? APEX - это средство разработки. С тем же успехом можно говорить "для C++ лучше всё на ХП". Если APEX выдвигает по этому поводу какие-то нелепые ограничения (не пользовался, не знаю) - это его идиотизм и ничего больше. Misha_E Я слился, не забывайте. Я даже помню, что это произошло ещё пару страниц назад. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:10 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
mad_nazgul Ни в одном из них система контроля версий не использовалась для ХП. В лучшем случае через бекапы БД. И честно, я не представляю, как все это запихнуть в пайплайн "Система контроля версий" CI/CD. Очень много ручного труда, и откат изменений так же ручной и очень сложный. У вас ХП, таблицы и проч. только мышом в дизайнере умеют рисовать, похоже? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:31 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer, APEX это когда у тебя весь код в хранимках в том числе и код web страницы.... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:31 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E в том числе и код web страницы.... Это образец эталонной архитектуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:34 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E APEX это когда у тебя весь код в хранимках в том числе и код web страницы.... Могу лишь выразить его пользователям мои глубочайшие соболезнования. Этот архитектурный антипаттерн я называю "однозвенное мышление". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:34 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Могу лишь выразить его пользователям мои глубочайшие соболезнования. Этот архитектурный антипаттерн я называю "однозвенное мышление". Живуч стереотип, что если что-то это "типа крутой этерпрайз за большие кучи денег", то на это всем равнятся надо. На самом деле таких многовековых залежей говнокода, как в энтерпрайзе нет больше, наверное, нигде. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat На самом деле таких многовековых залежей говнокода, как в энтерпрайзе нет больше, наверное, нигде. По моей практике, самые залежи говнокода в интеграторах (ну, вернее у клиентов интеграторов), в первую очередь в госструктурах и на внедрениях всяких САПов. Энтерпрайз по крайней мере пишет для себя, и в нём работают люди, которые будут много лет поддерживать и развивать именно то, что написали. А в интеграторах подход откатил - сдал - ушёл - забыл, заинтересованность в качестве решения отрицательная. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:44 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Misha_E в том числе и код web страницы.... Это образец эталонной архитектуры? Что ж тут тролли то все какие слабенькие? Это образец (в понимании одного из вендоров) того как оно называется - Application Express. Надеюсь перевод не нужен.При чем судя по гуглу , многим этого в "освободите от вендор лока"(пострессе) не хватет и люди ставят Oracle XE и из него DBLINK. Чудны дети твои,Боженька... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:47 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Кстати, про APEX я пожалуй соглашусь, что это попытка посадить на vendor lock. Ровно как и предыдущее подёргивание в этом направлении - Oracle Forms - оно не для того, чтобы удобно и хорошо разрабатывать приложения, а для того, чтобы дебилы, которые умеют только PL/SQL, всю жизнь только на нём и оставались - с соответствующим влиянием на рынок рабочей силы и, соответственно, рынок платформ. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:50 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Кстати, про APEX я пожалуй соглашусь, что это попытка посадить на vendor lock. Ровно как и предыдущее подёргивание в этом направлении - Oracle Forms - оно не для того, чтобы удобно и хорошо разрабатывать приложения, а для того, чтобы дебилы, которые умеют только PL/SQL, всю жизнь только на нём и оставались - с соответствующим влиянием на рынок рабочей силы и, соответственно, рынок платформ. Ага и существовал он до Ноды,Джанги и других. Тогда еще лочить не от кого было , тока если от мелкософта. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 16:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>Dimitry Sibiryakov, сегодня, 14:14 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139758][22139758] >И Вы не знаете про существование UPDATE...RETURNING. < Где? Здесь нет. И что сиё даёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 17:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >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 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 17:24 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E и люди ставят Oracle XE Я хорошо помню времена, когда MS SharePoint по энтерпрайзам разлетался, как пирожки в голодный год. А сказать почему? МС платила партнерам бешенный по сравнению с другими продуктами процент за его впаривания своим клиентам. А у меня после работы тогда с ним до сих пор от одного упомминания приступы тахикардии начинаются. Я тогда случайно пообщался с одним человеком из МС, который одно время участвовал в его разработке и он мне рассказывал, что этим (его разработкой) регулярно занималась куча случайных людей, т.е. если в МС какое-то время какого-нибудь девелопера было нечем занять, то его по-дефолту отправляли в команду шейрпойнта ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 17:30 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >hVostt, сегодня, 12:32 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139641][22139641] >Это и без ХП реализуется. В общем, как обычно, вы просто не умеете работать с БД. < Покажите как надо. Приведите код пожалуйста. Но по моему мнению, пользователь должен точно знать, что он меняет. Поэтому Ваш код для меня не приемлен. Вы меня совершенно не слышите, или не хотите услышать, или (что печально) не способны воспринимать информацию Возьмём ещё раз мой пример, в котором ничего не меняется с точки зрения клиента: Код: c# 1. 2. 3.
В репозиторий можно добавить поддержку оптимистичной блокировки: Этот код выполнит следующие запросы: Код: sql 1. 2. 3.
Теперь, репозиторий выбросит специальное исключение, если не удалось обновить запись из-за нарушения номер ревизии (под которым можно сохранять инкремент изменений, или штамп времени). Вот так можно ловить исключение: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Очень упрощённый пример метода Save репозитория: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 17:43 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев, А теперь, когда я уже вам кода тут понаписал. Может вы соизволите наконец объяснить, зачем вам ХП? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 17:45 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Дополню по этой части, чтоб вопросов небыло, а то я всё пытаюсь на концептуальном уровне разговаривать, но с вами не получается: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 18:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 18:39 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев btc_ Сохранить _Click "Ой, всё" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:05 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Мне нужно текущее состояние сущности после операций изменения для представления клиенту. Нет не нужно. У вас оптимистичная блокировка. ВМоисеев Привожу пример фрагмента кода приложения. Он одинаков и для MS SQL и PostgreSQL. Код есть шаблон для всех подобных операций с сущностями. Ну и посмотрите на свой код внимательно. Кроме этого кода, у вас ещё есть код в БД в виде ХП. По сути у вас очень много дублирующегося мусора. Это, извините, говнокод (даже не смотря на качество и стиль кода). ВМоисеев Клиент работает со списком сущностей в гриде. Корректирует нужную и выполняет UPDATE. В результате отображаемое состояние сущности может не изменится (в случае ок) или изменится на текущее её состояние в базе + отображение состояние не штатной ситуации. Ну и при чём тут ХП, опять же? Описанное вами поведение не правильно с точки зрения UX, но если забить на это, то никто не мешает сделать запрос актуальных данных при необходимости. Короче, я так и не услышал ответ на вопрос, зачем вам ХП. Ладно бы, у вас вся логика в ХП была сосредоточена, но тут и на клиенте логика и в БД логика, говнокод размазан по двум разным системам. Просто рай для сопровождения и развития. Зачем? Только не говорите, что это всё ради экономии на лишнем запросе? Эта экономия нафиг никому не упёрлась, она не нужна и откровенно вредна. Очередная преждевременная оптимизация . Уже, простите, блевать тошнит. Когда же вы уже научитесь... работать, а не фигнёй страдать... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:09 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 19:09 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22139994][22139994] >Это, извините, говнокод (даже не смотря на качество и стиль кода). < Что сказать, если одеть любителя желудей во фрак, мало что меняется. Не понимает он вкус моих апельсинов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 19:29 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt даже не смотря на качество и стиль кода писать вот так: Код: c# 1.
это не стиль, а говностиль. У него Enter на клавиатуре выломан там что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 21:03 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt и на клиенте логика и в БД логика, говнокод размазан по двум разным системам. Просто рай для сопровождения и развития. Надо еще для полного комплекта по паре-тройке триггеров на каждую таблицу навесить, надобавлять вычисляемых полей и во вьюхи с аггрегацией позаворачивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2020, 21:12 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Что сказать, если одеть любителя желудей во фрак, мало что меняется. Не понимает он вкус моих апельсинов. Я понял, что с вами не имеет смысла серьёзно ни о чём дискутировать. Так же не имеет смысла приводить вам какой-то код, непонятно зачем вы его просите, если вы его воспринимаете как баран, глядя на новые ворота. Вместо адекватного ответа на заданный вопрос вы несёте какую-то дичь, упражняетесь в литературной эквилибристике, видимо ошиблись форумом, вам нужно в гуманитарный. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 16:44 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat hVostt и на клиенте логика и в БД логика, говнокод размазан по двум разным системам. Просто рай для сопровождения и развития. Надо еще для полного комплекта по паре-тройке триггеров на каждую таблицу навесить, надобавлять вычисляемых полей и во вьюхи с аггрегацией позаворачивать. Я думаю, если бы ВМоисееву кто-то в своё время показал ещё и триггеры, то логика была бы ещё размазана и по триггерам ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 16:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat писать вот так: Код: c# 1.
это не стиль, а говностиль. У него Enter на клавиатуре выломан там что ли? Да, тут все печально, каждая строка кода вызвает слёзы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 16:47 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Я думаю, если бы ВМоисееву кто-то в своё время показал ещё и триггеры, то логика была бы ещё размазана и по триггерам 1. Название его хранимой процедуры вызывает ощущение, что она либо переделана из триггера, либо играет его роль. Я это ещё тогда отметил. 2. В триггерах нет ничего плохого. Разумеется, при уместном использовании. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 19:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 23:43 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Сделал так: Даже не знаю, смеяться или плакать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2020, 23:51 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer 2. В триггерах нет ничего плохого. Разумеется, при уместном использовании. Конечно, как можно сказать и про любой другой инструмент :) Но зачастую ХП и триггеры так применяют, что хочется назвать их злом... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 00:17 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer ВМоисеев Сделал так: Даже не знаю, смеяться или плакать. Если бы на ревью в моей команде попал вот такой код, это был бы скорее всего скандал. Выясняли бы, не заболел ли автор какой-нибудь серьёзной болезнью, а если нет, то кто его такого нанял... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 00:21 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Но зачастую ХП и триггеры так применяют, что хочется назвать их злом... Хотел бы я увидеть инструмент, который нельзя так применить и который при этом способен на что-то полезное. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 02:19 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Выясняли бы, не заболел ли автор какой-нибудь серьёзной болезнью, а если нет, то кто его такого нанял... Коллега присутствует на форуме уже лет пятнадцать, и если бы я захотел дать ему характеристику по тому, что видел за это время, то употребил бы слова "энтузиаст" и "самоучка". Насколько я помню, он работает в каком-то достаточно удалённом месте над стабильной учётной задачей, и здорово похоже, что в одиночку. Как человек он довольно симпатичен, и поэтому мне неприятны такие высказывания, но как специалист... действуя с наилучшими намерениями, часто не обращает внимания на те моменты, которые я полагаю базовыми и очевидно необходимыми. Например, насколько я помню, в одной из наших первых бесед я безуспешно пытался объяснить ему важность согласованности данных в запросе. Приводил следующий пример: допустим, нам нужен отчёт по какой-то ТМЦ: сколько её единиц на каждом из складов и сколько на всех складах вместе. Так вот, мне так и не удалось объяснить, чем плох результат Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Коллега считал, что если во время формирования отчёта произошло движение ТМЦ, то в таком документе нет ничего криминального. Впрочем, справедливости ради, за эти годы он заметно вырос и в здравости суждений, и в техническом плане. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 02:31 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Коллега присутствует на форуме уже лет пятнадцать, и если бы я захотел дать ему характеристику по тому, что видел за это время, то употребил бы слова "энтузиаст" и "самоучка". Я стараюсь не давать характеристику людям. Оценке и суждению подвергаются комментарии, сказанные слова и выполненные действия. Понятно, что большинство людей склонны моментально всё воспринимать на личный счёт, конвертировать в обиду и вставать в защитную позу: не доросли вы ещё до моей музыки! (с) :) softwarer Коллега считал, что если во время формирования отчёта произошло движение ТМЦ, то в таком документе нет ничего криминального. Впрочем, справедливости ради, за эти годы он заметно вырос и в здравости суждений, и в техническом плане. Да вот здесь и проблема. Уже довольно с давних пор, больше года точно, коллега периодически появляется в тредах с одним и тем же своим кодом. С одними и теми же суждениями, без какого-либо прогресса, без каких-либо изменений. Такое ощущение, что он как художник, ищущий своего призвания, гоняет на разные выставки и пихает людям свои картины. Получает отлуб, не унывает и едет дальше. Достойно ли подобное уважения? Нет. Ни в коем случае. Программирование, разработка -- это не художество и не поэзия. Здесь нет и не может быть фломастерной красоты. Типа мне нравится так, а вам эдак. Это унылый, бесперспективный, детский и наивный подход. Нужно с этим бороться. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 02:42 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Коллега присутствует на форуме уже лет пятнадцать, и если бы я захотел дать ему характеристику по тому, что видел за это время, то употребил бы слова "энтузиаст" и "самоучка" В моем представлении, 15 лет энтузиазма и самоучения - это как-то многовато. :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 07:21 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer 2. В триггерах нет ничего плохого. Разумеется, при уместном использовании. И триггера и хп, функции и все подобное на сегодняшний день это адское легаси, оставшееся в СУБД со времен двузвенок. При нынешнем выборе платформ для создания апп-серверов про все это лучше уже напрочь забыть - пускай БД хорошо занимается только своим основным делом, т.е. эффективно и надежно хранит данные, а что-либо другое в ней это полный хлам. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 07:32 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Для начала не плохо бы в платформах для APP разбираться, а не лить ведро помоев не разобравшись что такое APEX))) А так то каждая лягуха за свое болото топит. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 08:30 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat И триггера и хп, функции и все подобное на сегодняшний день это адское легаси, оставшееся в СУБД со времен двузвенок. При нынешнем выборе платформ для создания апп-серверов про все это лучше уже напрочь забыть - пускай БД хорошо занимается только своим основным делом, т.е. эффективно и надежно хранит данные, а что-либо другое в ней это полный хлам. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 08:50 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
L_argo Бред какой-то. Школу сначала закончи. Уважаемый, я школу закончил еще до того, как СССР распался. А вот тебе следовало бы сходить в ту школу, где учат аргуменировать свое мнение чем-то, кроме "бред какой-то". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 09:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, вчера, 23:51 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22140912][22140912] >Даже не знаю, смеяться или плакать. < Думаю Вам следует обратится к психиатру. Забывчивость + не адекватная реакция. Здесь Вы писали - "Вы действительно так непринуждённо удваиваете нагрузку на сервер только ради того, чтобы вернуть клиенту ровно те же данные, которые у него уже есть?" Найдите смелость признать, что клиенту возвращаются не совсем те же данные, которые у него уже есть. См. параметр ts_Entity. Согласен - в случае ок, возвращалась избыточная информация. Сейчас скорректировано. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 10:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Думаю Не стоит называть процессы, происходящие в Вашей голове, этим словом. ВМоисеев Здесь Вы писали - "Вы действительно так непринуждённо удваиваете нагрузку на сервер Безусловно, писал. И показал, как сделать ровно то же самое, что написано в Вашем коде, без лишних операций. После чего Вы радостно "переделали" так, что опять же подаёте на сервер двойную нагрузку, только ещё вдобавок бессмысленно скопипастили запрос, сделав код ещё хуже чем был. И выдаёте по этому поводу кучу нелепого пафоса, присыпанного хамством, а сейчас уже готовитесь выдать очередную порцию бреда по поводу того, что я якобы не заметил разные списки полей в этих запросах. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 10:58 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 10:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141084][22141084] >Безусловно, писал… < Да нет, не об этом - "вернуть клиенту ровно те же данные, которые у него уже есть". После UPDATE у клиента и сервера разные ts_Entity. Уточните, о каком удвоении нагрузки Вы пишите? И право, не Вам говорить о хамстве. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 12:33 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat softwarer 2. В триггерах нет ничего плохого. Разумеется, при уместном использовании. И триггера и хп, функции и все подобное на сегодняшний день это адское легаси, оставшееся в СУБД со времен двузвенок. При нынешнем выборе платформ для создания апп-серверов про все это лучше уже напрочь забыть - пускай БД хорошо занимается только своим основным делом, т.е. эффективно и надежно хранит данные, а что-либо другое в ней это полный хлам. Ну зачем вы так?! А как же говнокод? А как же "фигак, фигак и в продакшен" без тестирования? А как же "удалит прод-базу без бекапа"? Вы предлагаете заменить романтику и адреналин правок в продуктовой базе, на унылую прозу пайплайна разработки (обложенную кучей тестов в три слоя)? Зачем так? <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 14:14 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat L_argo Бред какой-то. Школу сначала закончи. Уважаемый, я школу закончил еще до того, как СССР распался. А вот тебе следовало бы сходить в ту школу, где учат аргуменировать свое мнение чем-то, кроме "бред какой-то". Надоело уже аргументировать с 2001 г. И не надо смотреть на дату моего ника. Он второй. Хранить абсолютно всю SQL логику на стороне апп-сервера это еще более дичайшее легаси, т.к. мода на тот или иной апп-сервер быстро проходит. И все надо переписывать. А БД-сервера почти вечные. И SQL гораздо более стабильный и стандартный язык чем очередной хайпо-гик-сервер на новомодном хайпо-гик-фреймворке. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 14:19 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
L_argo fkthat И триггера и хп, функции и все подобное на сегодняшний день это адское легаси, оставшееся в СУБД со времен двузвенок. При нынешнем выборе платформ для создания апп-серверов про все это лучше уже напрочь забыть - пускай БД хорошо занимается только своим основным делом, т.е. эффективно и надежно хранит данные, а что-либо другое в ней это полный хлам. ды в школах именно этому и учат что бы написать калькулятор надо - фронтенды на 3 фреймворках + нативные, аппсерверы-агрегаторы- кэшеры (где надо обязательно иметь какой нить NOSQL СУБД и т.д. фигню) управляемые какой нить системой балансировки и т.д., микросервисы с собственными СУБД) обернутые в докеры и загнанные в кубернеты ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 14:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Дело, по моему, обстоит еще хуже - они не пишут никаких калькуляторов! Я за эти годы видел всего около 10 калькуляторов в разделе "Информационные системы" или как там. Такое впечатление, что вся их работа - это читать и писать (это у них не всегда удается, как я понимаю - т.е. что там получилось после этого им пофиг). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 14:30 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >softwarer, сегодня, 10:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141084][22141084] >Безусловно, писал… < softwarer, Самому себе и вам советую забить :) Это опять 25, человек вместо того, чтобы чему-то научиться, углубить свой опыт и знания, откровенно тупит и занимается оправданием своего говнокода, своего невежества и своей лени. Это литературный цербер, дурака не переспоришь. Зря теряете время (и я в очередной раз). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:02 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
L_argo Хранить абсолютно всю SQL логику на стороне апп-сервера это еще более дичайшее легаси, т.к. мода на тот или иной апп-сервер быстро проходит. И все надо переписывать. А БД-сервера почти вечные. И SQL гораздо более стабильный и стандартный язык чем очередной хайпо-гик-сервер на новомодном хайпо-гик-фреймворке. Нет, надо размазать логику тонким слоем по БД и апликухам. Вот он, совет настоящего джедая. Ну и какой-то набор ярлыков и клише, "хайпогик", бла-бла. Это лишь показатель того, что у вас ни гроша из адекватных аргументов нет и не предвидится. Просто скажите правду, ей богу. Вы убили много времени на познание дао разработки в БД и вам очень жаль потерянного времени. Вы будете биться за свой опыт до конца. И вам много таких. Мне вас жаль. L_argo Срач на подобную тему тут регулярно возникает неск. раз в год. К сожалению срач на ваших религиозных началах не приносит никакой пользы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:07 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos ды в школах именно этому и учат что бы написать калькулятор надо - фронтенды на 3 фреймворках + нативные, аппсерверы-агрегаторы- кэшеры (где надо обязательно иметь какой нить NOSQL СУБД и т.д. фигню) управляемые какой нить системой балансировки и т.д., микросервисы с собственными СУБД) обернутые в докеры и загнанные в кубернеты Странное у тебя мировоззрение. Первое. Никто не знает что будет завтра. И что от этого калькулятора потребуется. Второе. Людям нужно учиться писать и делать серьёзные системы. Да, на калькуляторах. Чтобы потом вот таких феноменов как ВМоисеев не случалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:10 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt, Я не вижу "калькуляторов" совсем!!! Только все больше и больше растущий инфраструктурный удав, который стремится включить в себя все и вся, но никак не найдет - а куда ж воткнуть ПОЛЕЗНЫЙ ФУНКЦИОНАЛ - "калькулятор". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:25 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 15:02 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141329][22141329] >...откровенно тупит и занимается оправданием своего говнокода, своего невежества и своей лени. < Ну что сказать - перестаньте хрюкать их собственной лужи и говорите по делу, если есть что. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:30 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Ну что сказать - перестаньте хрюкать их собственной лужи и говорите по делу, если есть что. Вы по делу когда хоть что-то сказали? Каждый раз выкладываете один и тот же говнокод, вам по делу совершенно бесплатно дают критику. Но вы начинаете защищаться и оправдываться. И ничего не меняете. У вас с головой всё хорошо? Почему вы так делаете? Это что за извращённое удовольствие? Какова цель вашего присутствия здесь, если мы все видим, пользы вам это не приносит никакой. Я вам по вашим просьбам код привёл. И другие коллеги делали это тысячу раз, объясняли вам, рассказывали, аргументировали. Вы понимаете, что вы непробиваемый? Нафига вам код, который вы просили? Вы ведь ничего так и не поняли, зачем людей парите своими вопросами, если в ответ начинаете доказывать, что у вас свои вкус апельсинов или что-то там у вас ещё по свинячей теме постоянно из вас вылазит? Что за фетиш вообще такой связанный со свиньями? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:35 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos hVostt, Я не вижу "калькуляторов" совсем!!! Только все больше и больше растущий инфраструктурный удав, который стремится включить в себя все и вся, но никак не найдет - а куда ж воткнуть ПОЛЕЗНЫЙ ФУНКЦИОНАЛ - "калькулятор". Ну незнаю. Ты предлагаешь начать каждый раз разрабатывать с нуля базы данных, с нуля разрабатывать алгоритмы для работы с сетью, с изображениями и т.д. и т.п. Обязательно каждый должен втулить себе собственную реализацию теории расписаний? Чтобы была вычислительная сложность у ребят, так? :) А то, что поколение работало, чтобы создать огромных стек технологий для того, чтобы сосредоточиться на бизнесе, тебя это в итоге расстраивает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:37 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt А то, что поколение работало, чтобы создать огромных стек технологий для того, чтобы сосредоточиться на бизнесе, тебя это в итоге расстраивает :) Да какой бизнес? Именно стек и продается бизнесу, а остальное типа он сам как то должен воткнуть туда. Зачем прикладному программисту это стек? Он должен АВТОМАТИЧЕСКИ прибиндиться к прикладному коду (или "обернуть" прикладной код), ЕСЛИ востребован. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
L_argo А БД-сервера почти вечные. И SQL гораздо более стабильный и стандартный язык чем очередной хайпо-гик-сервер на новомодном хайпо-гик-фреймворке. Да, вечные. Века пройдут, а БЛ в БД так и будут писать на языке из 1971 года. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 15:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos Да какой бизнес? Именно стек и продается бизнесу, а остальное типа он сам как то должен воткнуть туда. Зачем прикладному программисту это стек? Он должен АВТОМАТИЧЕСКИ прибиндиться к прикладному коду (или "обернуть" прикладной код), ЕСЛИ востребован. Чистый прикладной программист это утопия. Таких уже нет. Ты говоришь про интеграторов. И вот про что ты говоришь уже сотни раз реализовано, и в твоём ВИПРОСе, и в 1С и в SAP и много-много где ещё. Да, это не похоже на идеальный мир, но в целом свои задачи там интеграторами успешно решаются. Можно лучше и намного, но бизнесу не нужно лучше, ему нужно удовлетворить свои потребности за приемлемую цену. Другой спектр задач, это платформы и системы, где много программистов, ты почему-то считаешь, что можно запихнуть в коробочку и превратить их в интеграторов. Это всего лишь от того, что у тебя ограниченный опыт в конкретном контексте (где ты внедрил свой ВИПРОС), и с этой колокольни ты не видишь ни деталей, ни задач, ни каких-либо ньюансов. Поэтому с твоей точки зрения всё так уныло :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 16:09 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat L_argo А БД-сервера почти вечные. И SQL гораздо более стабильный и стандартный язык чем очередной хайпо-гик-сервер на новомодном хайпо-гик-фреймворке. Да, вечные. Века пройдут, а БЛ в БД так и будут писать на языке из 1971 года. Не.. эти динозавры рано или поздно повымрут и некому будет устраивать холивары ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 16:11 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев После UPDATE у клиента и сервера разные ts_Entity Во-первых, не ясно, каким образом. Возможно, конечно, Вы там ещё для этого триггер повесили, но не суть. В любом случае тот update, который я привёл, делает ровно то же самое и возвращает "новый" ts. ВМоисеев Уточните, о каком удвоении нагрузки Вы пишите? Ну наконец-то. Не пробовали задуматься над этим вопросом хотя бы на прошлой странице, раз уж это Вам не очевидно? Тогда очередной ликбез. Реляционные СУБД можно рассматривать как программы, оперирующие данными на диске. Дисковый ввод-вывод буферизуется блоками стандартного объёма (иногда их называют страницами или прочими подобными словами). Например, Oracle по умолчанию использует блоки размером 8Кб. В других СУБД могут быть технические отличия, но суть везде одна. Если Вам нужно прочитать один байт - будут прочитаны как минимум восемь килобайт; если Вам нужно записать один байт - будут записаны как минимум восемь килобайт (а перед этим, если потребуется, ещё и прочитаны). Но для того, чтобы добраться до этого байта, нужно ещё и узнать его адрес на диске - а для этого в случае доступа по первичному ключу, скорее всего, будет использован индекс. То есть с диска будут считаны ещё килобайт пятьдесят индексной информации, чтобы добраться до этого байта. То есть даже очень мелкое изменение оказывается довольно дорогой операцией. Ситуацию отчасти спасает кэширование. Считанные блоки данных кэшируются в оперативной памяти и позволяют следующие операции с этими данными уже без нового обращения к диску. Однако, сервер БД - высококонкурентная среда. За кэш данных борются тысячи параллельно идущих транзакций, каждая из которых пытается положить в него свои данные и вытеснить чужие. Если пустить это на самотёк - получится огромный бессмысленный бардак, который и станет узким местом системы. Стратегии и настройки кэширования - одна из стандартных "головных болей" разработчиков СУБД, и в целом эффективность кэширования - важнейший показатель качества СУБД и ожидаемой скорости её работы. В итоге разработчик не имеет реальных шансов сказать, какая страница данных в какой момент времени будет закеширована или нет, поэтому в оценках ресурсоёмкости операций используют логические чтения - по сути "обращение к диспетчеру за блоком данных", понимая, что с вероятностью X это будет чтение из памяти, а с вероятностью (1-X) - с диска, где X мало зависит от разработчика конкретного куска функциональности, а определяется железом сервера, настройками, размером базы, количеством и разнообразием других операций с этими данными и т. д. и т. п. Дальнейшее проще показать статистикой. Я приведу для Oracle, но как я уже сказал, картина плюс-минус одинакова везде. Для начала подготовим данные: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Теперь посмотрим, сколько логических чтений уходит на 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.
Добавим к этому то, что уходит на 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.
И Вам остаётся самостоятельно догадаться, откуда в Вашем замечательном решении вдруг берётся паразитное удвоение нагрузки на сервер. ВМоисеев И право, не Вам говорить о хамстве. Серьёзно? Решительно не вижу, с чего бы вдруг мне не говорить о хамстве. Кажется, Вы снова пытаетесь что-то переложить со своей головы на здоровую. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 16:36 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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 клиентский метод имеет: 1. yrow - старые параметры сущности 2. xrow - новые параметры сушности 3. wspErr - код завершения. Что здесь плохого. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 17:36 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 16:36 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141454][22141454] >Ну наконец-то … < Спасибо за ликбез. Но клиент должен получить новый ts_Entity, желательно за одно обращение к базе данных, см. здесь . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 17:50 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Спасибо за ликбез. Но клиент должен получить новый ts_Entity Какое именно слово в Код: plsql 1. 2. 3. 4.
Вам непонятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 17:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 16:36 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141454][22141454] >Дальнейшее проще показать статистикой < Давайте по-взрослому - напишите ХП и приведите данные по её работе. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 17:56 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Давайте по-взрослому - напишите ХП и приведите данные по её работе. У трассировки хранимок больше геморроя с выводом результатов в текстовом виде, а итог тот же самый. Если Вы думаете, что селект внутри хранимой процедуры вдруг перестанет запрашивать данные - подумайте ещё раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 18:02 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 17:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141517][22141517] >Какое именно слово в … < returning. Найдите его здесь . ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 18:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >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 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 19:05 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 17:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141517][22141517] >Какое именно слово в … < Меня не устраивает это - "Предложение RETURNING указывает, что команда UPDATE должна вычислить и возвратить значения для каждой фактически изменённой строки." Если UPDATE … RETURNING не изменил ни одной записи, что будет возвращено клиенту? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 19:36 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Меня не устраивает это Примите величественную позу и скажите вендору, что Вас ещё не устраивает. Бьюсь об заклад, список выйдет длинным. А он, без сомнения, прислушается. ВМоисеев Если UPDATE … RETURNING не изменил ни одной записи, что будет возвращено клиенту? Вы точно уверены, что я должен за Вас прочитать доку и доступными словами разжевать Вам ответ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 19:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 19:38 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141603][22141603] >Вы точно уверены… < Да Вы большой оригинал - на мое отвечаете этим , представления не имея, как сиё работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 20:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Я знаю как работает returning. И Вы тоже могли бы узнать, если бы открыли документацию и прочитали. Если же Вы считаете, что с Вами должны нянчиться - это объясняет, почему Вы до сих пор не достигли даже уровня junior-а, способного пройти собеседование. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 21:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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" Ваш код пустышка ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 22:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Ваш код пустышка Ох, какое же ты пустое трепло. Лучше открой документацию по returning в Postgre и прочитай там, что он делает ровно то же, что и твой селект. Вот прямо английским языком написано - возвращает те же данные, которые вернул бы селект этих полей из affected строк. Так что ты только что назвал пустышкой собственное решение, красавец ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2020, 23:01 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев По завершению ХП UPDATE клиентский метод имеет: 1. yrow - старые параметры сущности 2. xrow - новые параметры сушности 3. wspErr - код завершения. Что здесь плохого. Всё плохо. 1. Ваш код крайне тяжело сопровождать. 2. Код невозможно протестировать, так как часть логики в БД, часть логики в клиентском коде. 3. ХП на апдейт выполняет две операции: обновление и возврат данных, хотя у вас уже есть отдельная ХП на возврат данных, значит вы дублируете код -- очень велика вероятность сделать ошибку, поддерживать два разных кода возврата одних и тех же данных -- очень плохо. 4. ХП обновления выполняет две разных операций, что нарушает принцип единственной обязанности. 5. Код обновления прибит гвоздями к одному единственному способу блокировки, а это ни что иное, как костыли. 6. Ваш код представляет из себя 80% откровенного мусора и дублирования и 20% (в лучшем случае!) хоть какой-то полезной логики. С увеличением количества сущностей, такой код становится сложнее и сложнее сопровождать, абсолютно невозможно провести вменяемый рефакторинг или хоть какие-то изменения без переписывания всего, или без монотонных одних и тех же изменений. Плохой код это не проблема. Никто не способен писать идеальный код всегда. Люди развиваются, растут, умеют учиться. Не в коде проблема. Проблема в вас. Вы не желаете учиться и развиваться. Не понимаю чего вы хотите. Зачем нам вот это каждый раз впариваете. Вы там на медаль что-ли идёте по твердолобости? Может кто-то ставки принимает? Чё за фигня вообще с вами происходит?? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 04:11 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Но клиент должен получить новый ts_Entity, желательно за одно обращение к базе данных, см. здесь . Я даже боюсь спрашивать. С какого перепугу "должен" и с чего вы взяли, что это "желательно"? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 04:12 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Плохой код это не проблема. Личный опыт это если в проекте хотя бы только 50% говнокода, то это уже очень хороший проект. Есть куда более страшные вещи, чем говнокод :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 08:10 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, вчера, 23:01 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141778][22141778] >Ох, какое же ты пустое трепло... Так что ты только что назвал пустышкой собственное решение, красавец < Хамства Вам положим не занимать. Ну да ладно, перейдем к сути. Что предлагаю я - Здесь мой код UPDATE. Я работаю с оптимистической блокировкой. Поэтому есть вероятность того, что моя копия сущности на рабочем компьютере не совпадает с оригиналом. Опираясь на информацию копии, принимаю решение о её модификации с последующим изменением оригинала. Понятно что оригинал может быть кем-то изменен, но я этого не знаю. Код: Код: c# 1. 2. 3.
делает попытку изменения оригинала. Возможны ситуации: 1. операция ок, клиенту нужно передать timestamp, ибо оно показывает, что оригинал и копия клиента тождественны. 2. имеет место быть не штатная ситуация, что приведет флаг ошибки в 1. - сбойнуло железо (?) - другой клиент мог удалить оригинал сущности - другой клиент мог изменить оригинал сущности Код: Код: c# 1.
проверяет присутствие не штатной ситуации если присутствие наблюдается, то попытка чтения оригинала с передачей строки таблицы в качестве текущей копии клиенту. Клиент получает или оригинал или пусто. если не штатная ситуация отсутствует, клиент получает 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" и меня большие подозрения, что я не получу значение оригинала. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 11:05 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 04:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141942][22141942] >Я даже боюсь спрашивать. С какого перепугу "должен" и с чего вы взяли, что это "желательно"? < Я считаю, что пользователь может менять только тот оригинал базы, что совпадает с его локальной копией. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 11:15 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 04:11 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22141941][22141941] >Всё плохо < Я думаю иначе. Понятно, что Ваши измы мне по барабану. Поэтому, давайте оставим в покое философию и графоманию и будем обсуждать конкретные проблемы. В текущей ситуации - ХП и UPDATE. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 11:24 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt 2. Код невозможно протестировать, так как часть логики в БД, часть логики в клиентском коде. Н-да. До сих пор Вы оставались единственным, кроме меня, кто не говорил глупостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 12:37 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Что предлагаю я Что "предлагаешь" ты - всем было понятно ещё позавчера. Равно как и то, как это работает. Как отработает под Ораклом то, что написал я - можешь посмотреть. Как отработает аналог под Postgre - ну смотря кто и как напишет. Если задашься целью, чтобы было ещё хуже чем у тебя - без сомнения, сумеешь сделать именно так. Ну а свои подозрения по поводу того, чего ты не получишь, если кто-нибудь изменил id записи... Спасибо, смешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 13:02 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer ВМоисеев Что предлагаю я Что "предлагаешь" ты - всем было понятно ещё позавчера. Равно как и то, как это работает. Как отработает под Ораклом то, что написал я - можешь посмотреть. Как отработает аналог под Postgre - ну смотря кто и как напишет. Если задашься целью, чтобы было ещё хуже чем у тебя - без сомнения, сумеешь сделать именно так. Ну а свои подозрения по поводу того, чего ты не получишь, если кто-нибудь изменил id записи... Спасибо, смешно. по докам они работают одинаково ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 13:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos по докам они работают одинаково Думаю, пафос Владимира вызван в основном тем, что он тоже смотрит доки, не прочитав и не поняв смысл самого update-а и не задавшись вопросом "почему он отличается от моего". В прошлый раз он бросил поверхностный взгляд и даже не увидел returning, а когда я ткнул его в это носом - полез копать про returning, так и не посмотрев в написанный update, а просто решив "ну наверняка то же самое, что у меня, только с добавлением returning". У Оракла в случае апдейта нуля строк в переменной просто сохранится предыдущее значение. Ну и sql%rowcount будет равно нулю, само собой. Как будет у Postgre - не знаю. Достаточно фразы из доки про "тот же результат, что в селекте", чтобы сказать, что будет ровно как во владимировской нетленке - с точностью до того, что дока врёт, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 13:44 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer У Оракла в случае апдейта нуля строк в переменной просто сохранится предыдущее значение. Ну и sql%rowcount будет равно нулю, само собой. Как будет у Postgre - не знаю. Достаточно фразы из доки про "тот же результат, что в селекте", чтобы сказать, что будет ровно как во владимировской нетленке - с точностью до того, что дока врёт, конечно. ну, если доки не врут, то получается, что нечего было наезжать на бедного Моисеева по части нагрузки на сервер? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 14:33 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos ну, если доки не врут, то получается, что нечего было наезжать на бедного Моисеева по части нагрузки на сервер? Не получается. То, что будет такой результат, совершенно не означает, что он будет достигнут отдельным селектом с соответствующими тратами. Во всяком случае, я искренне надеюсь, что постгрес не настолько плох. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 14:35 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
В доках Оракл также написано, что поля 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 14:51 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos В доках Оракл также написано, что поля undefined На практике они просто unchanged. Что в них было до того, то и останется. Впрочем, это неважно, поскольку ключевая проверка в любом случае на sql%rowcount. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 14:56 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer, ясно, так и думал, что никто лишний раз не будет их обнулять ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 14:57 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>softwarer, сегодня, 13:02 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142172][22142172] >Как отработает под Ораклом то, что написал я - можешь посмотреть < И всё таки, что получит клиент в случае ситуации -другой клиент мог изменить оригинал сущности- Мой код дает текущий оригинал сущности + признак не штатной ситуации. Что даёт твой код? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 16:30 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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.
Я не знаю, какую работу выполняет сервер по команде command.ExecuteReader(), но её объём можно косвенно оценить по времени выполнения команды. Думаю, что это более адекватная оценка нагрузки на сервер данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2020, 17:29 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Я думаю иначе. Понятно, что Ваши измы мне по барабану. Поэтому, давайте оставим в покое философию и графоманию и будем обсуждать конкретные проблемы. В текущей ситуации - ХП и UPDATE. Вас уже просто хочеться послать на три буквы, потому что вы очень мерзко и отвратительно ведёте дискуссию. Я вам код привёл. По барабану, хотя вы настаивали и просили. Я вам расписал по пунктам проблемы в вашем коде. По барабану. Общаться с мудаками -- себя не уважать. Поэтому идите лесом и по-дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer hVostt 2. Код невозможно протестировать, так как часть логики в БД, часть логики в клиентском коде. Н-да. До сих пор Вы оставались единственным, кроме меня, кто не говорил глупостей. Собственный опыт и опыт иногочисленных коллег показывает, что тестирование логики в БД, это боль и проблемы. А если логика распределана между клиентом и БД, всё становится ещё печальнее. Я хочу сказать, что у ХП есть область применения, но как решение конкретных проблем производительности, а не штатный способ разработки. Не понимаю, почему вы говорите, что это глупости. Похоже я и большинство коллег, с которыми я работал и общался -- глупые. И весь мир глупый, так как в разработке от ХП уходят по возможности. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:41 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев, Твой код это лютый песец. Оно и вправду, лучше уж пиши всю БЛ в хранимках, чем так в клиенте или миддлетайере. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 18:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt у ХП есть область применения Для двузвенки ХП единственный выход, из соображений секьюрити. Но кому в голову придет сейчас делать двузвенку без апп-сервера. Ну и еще, возможно, всякий репортинг, где, вообще, БЛ кроме селектов никакой нет и ХП чисто для того, чтобы не громоздить сиквельные селекты прямо в коде (еще и с вытекающими проблемами их поддержки). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:01 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>fkthat, сегодня, 19:01 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142815][22142815] >...Но кому в голову придет сейчас делать двузвенку… < Мне. >Для двузвенки ХП единственный выход, из соображений секьюрити. < Не совсем так. В своё время мне пришлось написать ГИС под Венский документ. На карте Евразии отображаются метки и маркеры сущностей. ХП готовят часть параметров отображаемой сущности, другая часть формируется на компе клиента. Так удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:44 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев В своё время мне пришлось написать ГИС под Венский документ. На карте Евразии отображаются метки и маркеры сущностей. ХП готовят часть параметров отображаемой сущности, другая часть формируется на компе клиента. Так удобнее. Двузвенка? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:01 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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 выполняется в любом случае, даже тогда, когда делать его и не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:03 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>Изопропил, сегодня, 20:01 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142833][22142833] >Двузвенка? < Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:05 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Не совсем так. Совсем так. А поскольку ты этого не понимаешь, то я сейчас заподозрил, что у тебя, помимо всего прочего, любой юзер может подконнектится к БД и делать там (по крайней мере с данными) все что хочет. А видя твой код, я даже не удивился бы, что у тебя там вообще всё коннектится под sa с открытым паролем в конфигах. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
любая цепочка заканчивается двухзвенкой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Какое значение ts используется в set - до или после изменения? "ts" - это поле в таблице. ":ts" - это параметр, который приходит с клиента и содержит временную метку записи на момент считывания данных в грид. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:50 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos любая цепочка заканчивается двухзвенкой :) И даже более того. Если немного подумать, то вполне очевидно, что там, где хорошо работает однозвенка, разумно использовать однозвенку. А для каждого следующего звена - нужно разумное обоснование - N-е звено нужно для решения задач, которые не получится хорошо решить ни на одном из предыдущих N-1 звеньев. Здесь ключевое слово "разумное". Соответственно, по мере роста технологий многозвенки становятся всё менее и менее нужными. Вполне вероятно, однажды мы придём к оптимальности однозвенной схемы для тех задач, которые сегодня решаем большим количеством звеньев. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:53 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer там, где хорошо работает однозвенка, разумно использовать однозвенку. "Однозвенка" - это только если выкинуть вообще сервер БД, и данные прямо из файлов *.mdf с диска читать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:00 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>fkthat, сегодня, 20:38 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142844][22142844] > А поскольку ты этого не понимаешь… < Откуда этот апломб? Посмотри сюда . Пункт 7. Для авторизации необходимо: 1. пин-код, известный пользователю 2. криптоконтейнер с параметрами доступа пользователя к базе данных, информация пользователю не доступна 3. программа Пускач. Никакой информации по доступе к данным у пользователя нет. Есть у Пукача и функционального приложения. Формируется динамически, по результатам аутентификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:15 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев А поле ts в этом фрагменте что? Это поле в таблице. ВМоисеев совпадает его значение с полем ts этого фрагмента? Это одно и то же поле. А что происходит с его значениями - зависит от того, менялось ли значение этого поля в ходе update-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:37 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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- измененное или оригинальное? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >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". Но тебе это невдомек, потому что ты даже и двузвенную архитектуру на самом деле толком не понимаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 23:48 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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". Но тебе это невдомек, потому что ты даже и двузвенную архитектуру на самом деле толком не понимаешь. глубоко ошибаешься :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 01:37 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos глубоко ошибаешься :) Сейчас ты нам расскажешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 03:29 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat hVostt Плохой код это не проблема. Личный опыт это если в проекте хотя бы только 50% говнокода, то это уже очень хороший проект. Есть куда более страшные вещи, чем говнокод :)) Сейчас разгребаю тут, и в очередной раз убеждаюсь, что самое страшное это всевозможные долбоящеры, которые всюду обвешивают какими-то своими "гениальными" обертками, расширениями и фреймворками, то, что в этом не нуждается от слова "совсем", т.к. и без их кривых руконог уже сто лет отлично работает... :( ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 07:50 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>fkthat, вчера, 23:48 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22142915][22142915] >Слушай, ты лучше не продолжай… < На заборах многое чего пишут. Покажи как. Вызвал SSMS, имею, что на слайде. Ваш ход. И ещё, в соответствующих конторах - как Вы вообще установите, что-то своё? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 11:08 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
зачем что-то устанавливать - c# компилятор в состав дотнет фреймворка входит, а фреймворк давно в составе винды ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 12:46 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat ViPRos глубоко ошибаешься :) Сейчас ты нам расскажешь. нет, тебе это не надо ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 12:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat fkthat пропущено... Личный опыт это если в проекте хотя бы только 50% говнокода, то это уже очень хороший проект. Есть куда более страшные вещи, чем говнокод :)) Сейчас разгребаю тут, и в очередной раз убеждаюсь, что самое страшное это всевозможные долбоящеры, которые всюду обвешивают какими-то своими "гениальными" обертками, расширениями и фреймворками, то, что в этом не нуждается от слова "совсем", т.к. и без их кривых руконог уже сто лет отлично работает... :( покажи ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 12:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Покажи как. Дизасемблирую твоё чудо-приложение и вставлю в нужное место код, который мне всю твою строку соединения на блюдечке выложит. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 13:18 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Для двузвенки ХП единственный выход, из соображений секьюрити. Если в выбранной СУБД нет команды GRANT и прочего SQL ACL... То в ней и ХП скорее всего нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 13:47 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>fkthat, сегодня, 13:18 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22143047][22143047] >Дизасемблирую твоё чудо-приложение и вставлю в нужное место код, который мне всю твою строку соединения на блюдечке выложит. < Логично. Но в серьёзных конторах, если потребуется, то пин-код будет состоять из двух частей, клиента и секадмина. Так вот подобные тебе будут запускать Пускач под его контролем. Думаю, что потеряешь работу значительно быстрее, чем докопаешься до строки соединения. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 13:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat ВМоисеев Покажи как. Дизасемблирую твоё чудо-приложение и вставлю в нужное место код, который мне всю твою строку соединения на блюдечке выложит. фантазер ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 14:06 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer ViPRos любая цепочка заканчивается двухзвенкой :) И даже более того. Если немного подумать, то вполне очевидно, что там, где хорошо работает однозвенка, разумно использовать однозвенку. А для каждого следующего звена - нужно разумное обоснование - N-е звено нужно для решения задач, которые не получится хорошо решить ни на одном из предыдущих N-1 звеньев. Здесь ключевое слово "разумное". Соответственно, по мере роста технологий многозвенки становятся всё менее и менее нужными. Вполне вероятно, однажды мы придём к оптимальности однозвенной схемы для тех задач, которые сегодня решаем большим количеством звеньев. Really? "Могу лишь выразить его пользователям мои глубочайшие соболезнования. Этот архитектурный антипаттерн я называю "однозвенное мышление". " ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 14:15 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov fkthat Для двузвенки ХП единственный выход, из соображений секьюрити. Если в выбранной СУБД нет команды GRANT и прочего SQL ACL... То в ней и ХП скорее всего нет. Ну, распределение прав как-то так далеко не ограничивается грантами на таблицы или на что-то еще. Оно вообще может задаваться такой хитрой логикой: "аппрувить закупку с общей суммой больше 789 рублей имеет право только пользователь из касты браминов". А если у какого-нибудь шурда есть аккаунт в базе, а все это проверяется только на клиенте, то ему уже ничего не стоит это в обход приложения сделать. Я же писал выше - именно для этого в сиквеле реализован принцип "ownership chaining". ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 15:18 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos нет, тебе это не надо Да, от кого мне это точно не надо, так это от тебя :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 15:19 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Оно вообще может задаваться такой хитрой логикой: "аппрувить закупку с общей суммой больше 789 рублей имеет право только пользователь из касты браминов" Ну и кто не умеет сделать этого без ХП? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 15:26 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Логично. Но в серьёзных конторах, если потребуется, то пин-код будет состоять из двух частей, клиента и секадмина. Так вот подобные тебе будут запускать Пускач под его контролем. Ололо. Представил себе как в "серьезной конторе" сисадмины каждое утро обходят всех юзеров, потому что без живого присутствия систадмина в приложение зайти нельзя. Я не могу никак понять, ты прикалываешься что ли? Потому что писать такую ересь всерьез это уже даже не знаю за какими границами ВМоисеев Думаю, что потеряешь работу значительно быстрее, чем докопаешься до строки соединения. Думаю, я сбегу оттуда в ужасе в тот же момент, как впервые придется твоим "Пускачем" попользоваться - заявление на увал по почте заказным потом отошлю ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 15:45 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer fkthat Оно вообще может задаваться такой хитрой логикой: "аппрувить закупку с общей суммой больше 789 рублей имеет право только пользователь из касты браминов" Ну и кто не умеет сделать этого без ХП? Я в курсе про row-level securuty. От мысли, что кому-то в голову придет все политики безопасности на ней делать шевелятся волосы на всем теле. Даже триггерами все таблицы пообвешать, и то, наверное, не такая жесть. (Совершенно не знаю, как с этим в оракле) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 15:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E "Могу лишь выразить его пользователям мои глубочайшие соболезнования. Этот архитектурный антипаттерн я называю "однозвенное мышление". " То к чему по-настоящему надо стремиться, это архитектура нульзвенная. Когда пользователи познали такой дзен, что им уже и сама БД стала не нужна ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 15:58 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat ВМоисеев Логично. Но в серьёзных конторах, если потребуется, то пин-код будет состоять из двух частей, клиента и секадмина. Так вот подобные тебе будут запускать Пускач под его контролем. Ололо. Представил себе как в "серьезной конторе" сисадмины каждое утро обходят всех юзеров, потому что без живого присутствия систадмина в приложение зайти нельзя. Я не могу никак понять, ты прикалываешься что ли? Потому что писать такую ересь всерьез это уже даже не знаю за какими границами А такое есть, но не для юзеров ,а доступа к ИС и сервакам, первая часть пароля у админов вторая часть пароля у безопасников. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 16:07 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat От мысли, что кому-то в голову придет все политики безопасности на ней делать Опять :( 22139724 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 16:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Misha_E А такое есть, но не для юзеров ,а доступа к ИС и сервакам, первая часть пароля у админов вторая часть пароля у безопасников. А третья в яйце ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:05 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer fkthat От мысли, что кому-то в голову придет все политики безопасности на ней делать Опять :( 22139724 Ну я, вообще-то за то и топил, что бывают кейсы для которых ХП вполне подходит. Пример кейса я привел - дать аккаунту делать только определенные действия с данными, не давая прямого доступа к самим данным. Но в трехзвенке их реально мало, а двузвенка вымирает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:16 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Ну я, вообще-то за то и топил, что бывают кейсы для которых ХП вполне подходит. А что, с этим кто-то где-то спорил? fkthat Пример кейса я привел Отмечу, что "пример кейса, который можно решить молотком" и "пример кейса, для решения которого необходим молоток" - это два существенно разных примера. fkthat а двузвенка вымирает. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer fkthat а двузвенка вымирает. Что смешного-то? Что 1С как пример бессмертного кащея двузвенного приложения? У которого сиквельная база вообще без ключей, потому что её как 20 лет назад склонировали из фокспро, так она в таком фокспрошном виде до сих пор и осталась А, впрочем забыл, есть же еще двузвенная платформа "Запускачь" ™ ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:08 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Что смешного-то? Да многое, в общем-то. Для начала я на 99% уверен, что если попрошу сформулировать определение "звена" - ну чтобы взять некое приложение и посчитать, сколько же в нём звеньев - уже будет очень весело. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:21 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer fkthat Что смешного-то? Да многое, в общем-то. Для начала я на 99% уверен, что если попрошу сформулировать определение "звена" - ну чтобы взять некое приложение и посчитать, сколько же в нём звеньев - уже будет очень весело. Вы просто путаете "звено" (иногда, редко, попадался даже термин "ярус") и "слой". "Звено" ("tier") определяется как раз очень легко и однозначно, а "слой" ("layer") это действительно логическое а не физическое понятие и определить его может быть очень затруднительно. И насчет двузвенной и трехзвенной архитектуры как раз все абсолютно четко и понятно. Когда система "более распределенная", то тогда, конечно, какие-то определения дать сложно - ну, вот, распределенная она, и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer, А DBASE-like системы они так вообще однозвенные были. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Вы просто путаете "звено" и "слой" Чушь не порите. Ей же больно. fkthat "Звено" ("tier") определяется как раз очень легко и однозначно Вперёд. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:42 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Девки спорили на даче... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 21:21 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 глава как раз посвящена сравнению между распределенной архитектурой и многослойной (которая, строго говоря, вообще является не архитектурным паттерном, а просто паттерном программного дизайна). Её легко найти в сети в эл. виде. В переводе на русский тоже издавалась (на другой квартире где-то лежит в кладовке - все никак руки не дойдут перевезти вместе с остальными:)) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 21:50 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Дмитрий Мух Девки спорили на даче... Да чо уж, понятная попоболь - всю жизнь посвятить FoxPro, а тут вдруг ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 22:00 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat "Tier" это часть системы, которая может быть запущена на отдельном хосте Это всё Ваше определение, или же таки добавите к нему какие-нибудь уточнения? fkthat Клиентское приложение при этом напрямую взаимодействует с сервером/серверами БД. Вы вообще в состоянии представить себе что-то кроме БД? Какая-то неимоверная узколобость. Представьте себе задачу, где БД нет в принципе. Http-сервер, например. fkthat Я лучше дам ссылку Ну то есть бла-бла-бла. Определения Вы дать не можете, а просто прячетесь за груду сомнительного текста. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 22:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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) изолирующего своих клиентов от того как это хранилище физически реализовано. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 22:51 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Вы можете хоть графические редакторы и медиаплееры приплести еще к своим аргументам К каким аргументам? Я пока что аргументировать и не начинал, я просто спрашиваю с Вас вменяемое определение, которое Вы обещали дать. Да, я уверен, что задаю вопросы, над которыми Вы в жизни не задумывались, просто как попугай повторяли за другими слова, которых толком не понимаете. Именно поэтому у Вас проблемы с определением. Но я не аргументирую эту уверенность, Вы её лучше меня аргументируете fkthat но когда говорят про "3-tier", то под нижним tier подразумевают именно хранилище данных Уже "хранилище"? Не "БД", а именно хранилище? То есть Вы таки послушали голос очевидности и дезавуировали свои предыдущие слова? Хорошо. Следующий вопрос. FTP-сервер. Вполне себе "хранилище данных". Это по-Вашему сколько-звенка? Какие там звенья? Каково таки определение "звена"? fkthat в виде АПИ (SQL, REST, etc) изолирующего своих клиентов от того как это хранилище физически реализовано. Замечательно. То есть если клиент изолирован API от физической реализации хранилища - это трёхзвенка? Точно? Вы хорошо подумали? Не будете отказываться от своих слов? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 23:00 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Какие там звенья? Каково таки определение "звена"? Нет никакого желания софистикой с вами заниматься - тут и так полно людей для этого, а мне просто время тратить жалко. Рассуждайте дальше что "кастрюля это тоже сковородка, а сковородка, если хорошо подумать, то это просто большой половник, а половник это тот же дуршлаг, но только без дырок", но делайте это уже без меня :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 23:51 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat "Звено" ("tier") определяется как раз очень легко и однозначно fkthat Нет никакого желания софистикой с вами заниматься ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 00:29 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer, это у них называется - фаулер головного мозга потерянное поколение ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 01:30 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos, в советские времена была такая очень правильная профессиональная квалификация - "техник-программист". От "инженеров-программистов" они отличались тем, что учились в техникумах - с соответствующей разницей в критериях приёма и учебных программах. С моей точки зрения, различия достаточно очевидны: техник-программист способен зазубрить прочитанное и делать как ему показали; инженер-программист способен осознать прочитанное, оценить его, найти ему место в картине мира и применять тогда и так, как следует. К сожалению, в постсоветские годы это деление начисто потеряли. Из ВУЗов, большей частью вообще не имеющих отношения к программированию, хлынула толпа "якобы программистов", едва дотягивающих до техников. На глаз их легко отличить по тому, что какой-то источник (книга итп) является для них неоспоримой догмой, истиной в последней инстанции, которая в принципе не подвергается критическому осмыслению. Только книга-то в этом не виновата. Та же Библия, в принципе, не такая плохая книга, но вот что творили её некритические читатели... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 01:47 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Только книга-то в этом не виновата. Да, согласен, читать книги, руководства и документацию, это удел "техников". А настоящий программист, это, в первую очередь, Творец. Разве Микелланджело читал документацию, когда творил свои щедевры. :- D ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 06:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Да, согласен, читать книги, руководства и документацию, это удел "техников". А настоящий программист, это, в первую очередь, Творец. Разве Микелланджело читал документацию, когда творил свои щедевры. :- D Про Микеланджело это ты зря, он был мегакрутым хакером от искусства, занимался реверс-инжинирингом. Вскрывал трупы, изучал анатомию на практике. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 07:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos softwarer, это у них называется - фаулер головного мозга потерянное поколение Если хочешь завалить кандидата на собеседовании, спроси хоть что-нибудь из Фаулера. 98% нынешних кандидатов не ответит. Поэтому это ещё у кого там фаулер головного мозга ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 08:33 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer То есть если клиент изолирован API от физической реализации хранилища Как это "изолирован"? :) Это в смысле, клиент шлёт некий абстрактный SQL запрос по API, а тот шлёт правильный SQL в физическое хранилище? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 08:37 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos, И ваще, когда уже будет веб интерфейс с твоей двух-звенкой? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 08:38 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt ViPRos, И ваще, когда уже будет веб интерфейс с твоей двух-звенкой? ))) Послушай, ВИПРОС и все прикладные системы на ней - собственность ААУК. ААУК внедряет всю эту байду в концерне ВКО Алмаз - Антей. Никаких запросов по части веб ни у кого нет, мои инициативы по этой части жестко пресеклись (да, в принципе, я прекрасно знаю, что это нафиг не нужно, но больше думал о себе). Дело другое, что можно было бы более четко структурировать ВИПРОС (я тебе показывал укрупненный план тут где то), но это тоже никем не поддержан. А так я номинально - директор по разработке ПО ААУК, но, в основном на удаленке разрабатываю ВИП.Производство, уже года 3 ВИПРОС стабилизирована и живет без изменений. Остальные системы на ВИПРОС разрабатывают без меня, у них есть и свои трехзвенные версии ВИПРОС и т.д. (мне не показывают). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 09:02 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos, Да это понятно, ты уже рассказывал. Не по орг. фактуре вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 09:19 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt И ваще, когда уже будет веб интерфейс с твоей двух-звенкой? ))) Ему некогда в веб - у него логин пользователя невозможен без присутсвия него и еще пары админов ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 09:19 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat hVostt И ваще, когда уже будет веб интерфейс с твоей двух-звенкой? ))) Ему некогда в веб - у него логин пользователя невозможен без присутсвия него и еще пары админов окстись, мальчик ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 09:31 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt ViPRos, Да это понятно, ты уже рассказывал. Не по орг. фактуре вопрос. Ну, ты готов бесплатно переделать ВИПРОС? Это воще то большая фигня (тем более, что при переделке по любому захочется улучшить и т.д. - миллион хотелок). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 09:33 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat softwarer Только книга-то в этом не виновата. Да, согласен, читать книги, руководства и документацию, это удел "техников". А настоящий программист, это, в первую очередь, Творец. Разве Микелланджело читал документацию, когда творил свои щедевры. :- D Сахават, вот, собственно, пример того, о чём я говорю в действии. Человек когда-то у кого-то подсмотрел фразу про "творцов" и теперь как прилежный зубрила вставляет её в любую ругань, даже не пытаясь включить мозги и понять, к чему она относится если вообще хоть к чему-нибудь относится. hVostt Как это "изолирован"? :) Думаю, стоит адресовать подобные вопросы автору идеи и употребления термина. Когда я попытался выяснить, что же он имел в виду, он отказался заниматься софистикой. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 09:57 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Сахават, вот, собственно, пример того, о чём я говорю в действии. Человек когда-то у кого-то подсмотрел фразу про "творцов" и теперь как прилежный зубрила вставляет её в любую ругань, даже не пытаясь включить мозги и понять, к чему она относится если вообще хоть к чему-нибудь относится. да я как то пытаюсь уже не обращать внимание, это братия уже до инфаркта довела ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 10:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Как это "изолирован"? :) Это в смысле, клиент шлёт некий абстрактный SQL запрос по API, а тот шлёт правильный SQL в физическое хранилище? Изолирован, это значит, что приложение-клиент не работает сам, непосредственно с файловой/дисковой системой в которой хранятся данные (и вообще про неё нничего не знает), а делает это только через взаимодействие с приложением-сервером. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 10:31 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos hVostt ViPRos, Да это понятно, ты уже рассказывал. Не по орг. фактуре вопрос. Ну, ты готов бесплатно переделать ВИПРОС? Это воще то большая фигня (тем более, что при переделке по любому захочется улучшить и т.д. - миллион хотелок). Ну вот ты же сам задаёшь вопрос, на который я тебе и намекаю. Если у тебя изначально архитектура хорошая, то переделывать ничего не нужно. При правильной трёх-звенке как минимум, ты делаешь ещё одного лёгкого клиента. Не важно какой это -- веб, мобильное приложение, десктоп под iOS, или прошивка для холодильника. В твоём же случае, в двух-звенке, так просто не получается, получается дорого. Либо вообще переписывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2020, 23:29 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer hVostt Как это "изолирован"? :) Думаю, стоит адресовать подобные вопросы автору идеи и употребления термина. Когда я попытался выяснить, что же он имел в виду, он отказался заниматься софистикой. Да, выяснить нужно. Но слово "изолирован" нельзя трактовать как-то иначе, чем это определено в русском языке. Вы лежите в палате на карантине, изолированы от общества. Но вот кто-то из общества кто-то хочет вам что-то передать. Он это делает через мед. персонал. Т.е. делает тоже самое, что хотел сделать из рук в руки, только через третьи руки. А если через мед. персонал передают кусок мяса, а вам приносят приготовленный из этого мяса суп, то это уже не изоляция интерфейса, а совершенно что-то другое :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2020, 23:33 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat hVostt Как это "изолирован"? :) Это в смысле, клиент шлёт некий абстрактный SQL запрос по API, а тот шлёт правильный SQL в физическое хранилище? Изолирован, это значит, что приложение-клиент не работает сам, непосредственно с файловой/дисковой системой в которой хранятся данные (и вообще про неё нничего не знает), а делает это только через взаимодействие с приложением-сервером. Ну вот это не совсем корректный термин. Вы скорее всего абстрагирование путаете с изолированием. Понятно, что хотели сказать, но лучше применять наиболее подходящие термины ) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2020, 23:34 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Вы лежите в палате на карантине, изолированы от общества. Но вот кто-то из общества кто-то хочет вам что-то передать. С точки зрения русского языка передача - это уже нарушение изоляции :) hVostt А если через мед. персонал передают кусок мяса, а вам приносят приготовленный из этого мяса суп, то это уже не изоляция интерфейса, а совершенно что-то другое :) Я горячо поддерживаю идею хорошей терминологии и точного употребления слов. В то же время отмечу, что для обсуждавшегося вопроса эта деталь не слишком важна. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2020, 23:45 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer hVostt А если через мед. персонал передают кусок мяса, а вам приносят приготовленный из этого мяса суп, то это уже не изоляция интерфейса, а совершенно что-то другое :) Я горячо поддерживаю идею хорошей терминологии и точного употребления слов. В то же время отмечу, что для обсуждавшегося вопроса эта деталь не слишком важна. К сожалению, очень важна, потому что: softwarer hVostt Вы лежите в палате на карантине, изолированы от общества. Но вот кто-то из общества кто-то хочет вам что-то передать. С точки зрения русского языка передача - это уже нарушение изоляции :) Уже вот тут вы считаете, что передача предметов -- нарушение изоляции, а я так не считаю. Так как карантин это исключение физического контакта с целью остановить распространение заболевания. Если вам передают предмет через медиков, которые соответствующим образом упакованы, то никакого нарушения нет. Но вот на данном, должно быть, максимально понятном и примитивном примере, у нас уже расхождения в понимании одного и того же термина. Следовательно любой спор с использованием этого термина будет сильно искажён. И с вероятностью 99% может оказаться так, что оба оппонента будут говорить об одном и том же, но разными словами, и на самом деле отстаивается одинаковая точка зрения ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 03:51 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt При правильной трёх-звенке. Местный Комитет после обсуждения решил, что трехзвенка это антипаттерн и говнокод. Также, Комитет настоятельно рекомендовал к применению подход "BCDD" - "Button-click Driven Design". Для каждого кейса на форму в дизайнере тащится кнопка и в её событие Click помещается вся работа с UI, BL, и DB. В качестве референс-имплементации BCDD советуют использовать проект "Запускач" (tm). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 08:31 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Уже вот тут вы считаете, что передача предметов -- нарушение изоляции, а я так не считаю. Так как карантин это ... Вы же говорили о смысле слова "изоляция", а не о смысле слова "карантин", не так ли? hVostt И с вероятностью 99% может оказаться так Это довольно странный оборот речи ;) Такой расклад, конечно, возможен, хотя вероятность Вы сильно переоцениваете. Но у нас с коллегой fkthat другой расклад: "Ему со мной уже непонятно, а мне с ним уже скучно". Как, собственно, с любым клоуном. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 10:36 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>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.
2. Переменные, уровня UserControl, для хранения информации по сущностям: Код: c# 1. 2. 3.
3.DataGrid работы с сущностью Код: xml 1.
4. Описание кнопки UPDATE Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
5. Здесь приведен код обработчика UPDATE. Если сможете, покажите где плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 11:28 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer "Ему со мной уже непонятно, а мне с ним уже скучно". Это мне с вами скучно. Не ожидал, что вам, оказывается надо разъяснять такие вещи, которые любой нормальный джун год+ знает. softwarer Как, собственно, с любым клоуном. "Давай, до свидания" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 13:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer hVostt Уже вот тут вы считаете, что передача предметов -- нарушение изоляции, а я так не считаю. Так как карантин это ... Вы же говорили о смысле слова "изоляция", а не о смысле слова "карантин", не так ли? Из вики. В некоторых случаях карантин подразумевает полную изоляцию эпидемического очага с вооружённой охраной по периметру[3]. Карантин берётся как наиболее близкая в текущей ситуации аналогия, и всё :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 13:53 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев И что в этом плохого. facepalm.jpg Ох да оставьте вы уже его в покое. Пусть делает как хочет, и радует своих внутренних свиней апельсинами. Всем все равно плевать на его поделку. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 13:58 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt В некоторых случаях карантин подразумевает полную изоляцию эпидемического очага с вооружённой охраной по периметру Именно. Отсюда можно сделать вывод, что в некоторых случаях он полной изоляции не подразумевает - а когда подразумевает, охрана будет стрелять в "передающих" как в нарушителей изоляции. Также отсюда можно сделать вывод, что изоляция бывает полная и неполная. И так далее. hVostt Карантин берётся как наиболее близкая в текущей ситуации аналогия, и всё :) Здесь важно слово "аналогия". В Вашей картине мира "карантин" есть некий аналог "неполной изоляции", допускающей одностороннюю передачу предметов. И само слово "изоляция", когда употребляется в контексте карантина, приобретает соответствующий смысл, немного отличающийся от смысла этого слова в других контекстах (например, в контексте электричества). Я говорю об этом потому, что слово "изоляция", на котором Вы сфокусировались, было употреблено в конкретном контексте и таким же образом отчасти приняло особые для него оттенки смысла. Высказывание коллеги там вполне понятно и не вызывает сомнений, поэтому претензий к возможно неидеальному выбору терминологии лично у меня нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 14:02 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer hVostt В некоторых случаях карантин подразумевает полную изоляцию эпидемического очага с вооружённой охраной по периметру Именно. Отсюда можно сделать вывод, что в некоторых случаях он полной изоляции не подразумевает - а когда подразумевает, охрана будет стрелять в "передающих" как в нарушителей изоляции. Также отсюда можно сделать вывод, что изоляция бывает полная и неполная. И так далее. Верно. Поэтому, важно договориться о терминологии. softwarer Здесь важно слово "аналогия". В Вашей картине мира "карантин" есть некий аналог "неполной изоляции", допускающей одностороннюю передачу предметов. И само слово "изоляция", когда употребляется в контексте карантина, приобретает соответствующий смысл, немного отличающийся от смысла этого слова в других контекстах (например, в контексте электричества). Проблема любой аналогии в том, что иногда вносит много искажений ) И всё же. Изоля́ция (от фр. isolation — отделение, разобщение). Уменьшение или полное прекращение прямого, непосредственного взаимодействия. Больше ничего другого нет. softwarer Я говорю об этом потому, что слово "изоляция", на котором Вы сфокусировались, было употреблено в конкретном контексте и таким же образом отчасти приняло особые для него оттенки смысла. Высказывание коллеги там вполне понятно и не вызывает сомнений, поэтому претензий к возможно неидеальному выбору терминологии лично у меня нет. Но вы при этом задали довольно абсурдный вопрос, и абсурдность вопросу придало применение этого термина. Теперь, чтобы понять как ответить на ваш вопрос, нужно получить ваше совершенно однозначное понимание термина "изоляция", иначе непонятно ) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 14:16 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>hVostt, сегодня, 13:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22144883][22144883] >Пусть делает как хочет, и радует своих внутренних свиней апельсинами < Свиньи не понимают вкуса моих апельсинов, они хрюкают и жуют чужие желуди. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 14:26 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >hVostt, сегодня, 13:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22144883][22144883] >Пусть делает как хочет, и радует своих внутренних свиней апельсинами < Свиньи не понимают вкуса моих апельсинов, они хрюкают и жуют чужие желуди. Я вам одну вещь скажу, только вы не обижайтесь. Многие "свиньи" писали код так, как вы его пишете сейчас, когда только начинали свою карьеру в разработке. И на своём опыте познали вкус этих гнилых апельсинов. А вот вы как раз этого вкуса и не знаете, потому что программой вашей никто не пользуется, она не развивается, в неё не вносятся доработки и исправления. И соответсвенно вы не знаете тех сложностей, что неизбежно бы возникли при вашем подходе. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 14:55 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Верно. Поэтому, важно договориться о терминологии Я с этого и начал. Но оказалось, что собеседник не в состоянии дать внятное определение используемым словам. hVostt Но вы при этом задали довольно абсурдный вопрос, и абсурдность вопросу придало применение этого термина. Мой вопрос - очень близкий пересказ утверждения собеседника. По сути я просил его подтвердить, что он хотел сказать именно то, что сказал. Мне кажется, что никакой дополнительной абсурдности я своим вопросом не принёс. hVostt Теперь, чтобы понять как ответить на ваш вопрос, нужно получить ваше совершенно однозначное понимание термина "изоляция", иначе непонятно ) Вы вряд ли сможете ответить на этот вопрос - если, конечно, не является альтер эго fkthat-а. Он был обращён к нему, по поводу его утверждения и использовал его терминологию. Если хотите ответить на мой вопрос, Вам скорее стоит дать своё определение "звена" - если, конечно, считаете нужным. У меня определение есть, но настаивать на нём было бы неверным. Я предлагаю обсудить - что же такое, собственно, "звено", и исходя из этого говорить о "звенности" тех или иных ИТ-решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 14:59 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
>Дмитрий Мух, сегодня, 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. Вам не кажется, что накладные расходы слишком велики. А у меня КИС не монолит и состоит из достаточно многих функциональных приложений ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 16:26 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев Вам не кажется, что накладные расходы слишком велики. А у меня КИС не монолит и состоит из достаточно многих функциональных приложений Простите, а накладные расходы на что? У вас есть какие-то требованию по объёму? У вас их нет. Им никто не пользуется, следовательно нет и требований. И два приложения слабо тянет на "из достаточно многих функциональных приложений". ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 16:49 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 17:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ВМоисеев >hVostt, сегодня, 13:58 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1325462&msg=22144883][22144883] >Пусть делает как хочет, и радует своих внутренних свиней апельсинами < Свиньи не понимают вкуса моих апельсинов, они хрюкают и жуют чужие желуди. Ну оно и понятно. Если ты колхозник, то все вокруг тебя -- свиньи. Ваш хрюкометр зашкаливает )) Короч, я уже сказал, если ваше внутреннее альтер-свин-эго довольно, делайте как вам угодно. Хоть под себя ходите во время работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 17:26 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt я бы по возможности избегал "своих" определений Я не настаиваю на авторстве. Вполне можно и чужое, с которым Вы согласны. Но термин-то надо как-то определить. hVostt По поводу звеньев, есть как минимум определение на вики. Трёху́ровневая архитекту́ра (трёхзве́нная архитекту́ра, англ. three-tier) Главная проблема в том, что это не определение "звена". Это определение некоей архитектуры, которой выдано некоторое кодовое название (допустим - "мясорубка") мало отражающее её суть и особенности. Что хуже, это кодовое название не бессмысленно (как была бы "мясорубка") и создаёт у изучающих ложные ассоциации, мешающие пониманию. hVostt архитектурная модель программного комплекса, предполагающая наличие в нём трёх компонентов: клиента, сервера приложений (к которому подключено клиентское приложение) и сервера баз данных (с которым работает сервер приложений) В этой архитектурной модели я бы в первую очередь задал следующий вопрос. Допустим, я успешно реализовал некие "клиент" и "сервер приложений", работающие с СУБД Firebird. Согласно этому определению, такое приложение будет "мясорубкой". Теперь допустим, что я убрал СУБД Firebird и вместо неё встроил в сервер приложений Firebird Embedded. Насколько я понимаю, это можно сделать, не меняя ни байта ни в исходниках, ни даже в откомпилированном коде сервера. Программный комплекс в этом случае продолжит работать, но "мясорубкой" он - согласно определению - уже не будет. С моей точки зрения, такая ситуация бессмысленна. Определение нуждается в переработке и уточнении. Можно рассмотреть и другие ситуации, с точки зрения которых это определение неадекватно. Например, тот же FTP-сервер. До тех пор, пока он работает с файлами в файловой системе, он вроде как не "мясорубка". Но теперь я могу взять и подключить к операционке файловую систему, проецирующую как файлы блобы из БД. И бац! Снова без единого изменения в исходных или объектных файлах FTP-сервер стал "мясорубкой". В общем, при таком определении всерьёз говорить об этой архитектуре практически бессмысленно. Можно только на уровне "техника", заучить её как религиозный догмат, даже не пытаясь понимать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:00 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer В этой архитектурной модели я бы в первую очередь задал следующий вопрос. Допустим, я успешно реализовал некие "клиент" и "сервер приложений", работающие с СУБД Firebird. Согласно этому определению, такое приложение будет "мясорубкой". Теперь допустим, что я убрал СУБД Firebird и вместо неё встроил в сервер приложений Firebird Embedded. Насколько я понимаю, это можно сделать, не меняя ни байта ни в исходниках, ни даже в откомпилированном коде сервера. Программный комплекс в этом случае продолжит работать, но "мясорубкой" он - согласно определению - уже не будет. С моей точки зрения, такая ситуация бессмысленна. Определение нуждается в переработке и уточнении. А вы внимательно почитайте определение, давайте разберём его на части: Трёху́ровневая архитекту́ра (трёхзве́нная архитекту́ра, англ. three-tier) — архитектурная модель программного комплекса, предполагающая наличие в нём трёх компонентов: клиента, сервера приложений (к которому подключено клиентское приложение) и сервера баз данных (с которым работает сервер приложений). 1. Это определение модели, которой реальная архитектура может соответствовать, а может и нет. 2. Речь идёт о программном комплексе, а не о программе. Т.е. вполне конкретно говорится о том, что каждый компонент является самостоятельной программой (или комплексом). 3. Каждый компонент в модели выполняет совершенно конкретную архитектурную задачу , это описано и нарисовано на картинках. Следовательно, перенесение приложения сервера баз данных внутрь сервера приложений нарушает модель, и такая архитектура уже не является трёх-звенной. Я не вижу что тут нужно уточнять, вроде всё очевидно. Согласно этой модели ни про какую изоляцию речи не идёт. Клиент не изолируется от БД, так как он не работает больше в концепциях БД. Он не отправляет SQL запросы, не работает с транзакциями БД и никакими другими концепциями БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:11 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer В общем, при таком определении всерьёз говорить об этой архитектуре практически бессмысленно. Можно только на уровне "техника", заучить её как религиозный догмат, даже не пытаясь понимать. Очень даже можно говорить в серьёз. И не только говорить, но и пользоваться этим на практике. Можем даже обсудить тот самый пример с Firebird, где "не меняя ни строчки кода", переносим БД внутрь сервера приложений. Т.е. звучит так, как будто мы ничего не теряем, а даже приобретаем. Я правильно вас понял, вы придерживаетесь такой точки зрения? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:15 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Это определение модели, которой реальная архитектура может соответствовать, а может и нет Безусловно. Но задумайтесь чуть глубже. Зачем мы вообще говорим о моделях, даём определения итп.? Мы делаем это для того, чтобы оперировать абстракциями. Для того, чтобы говорить о характерных чертах, присущих определённому классу объектов (программных комплексах определённой архитектуры) в отличие от объектов других классов. Я привёл пару примеров того, что очевидно одинаковые (ну точнее очень схожие, если придираться) по функционированию программные комплексы либо относятся, либо не относятся к этой архитектуре в зависимости от мелких деталей, внешних по отношению к самому программному комплексу. То есть, такое определение архитектуры не оставляет для неё возможности иметь какие-либо характерные черты. Мы вообще не можем ничего сказать ни о её преимуществах, ни о её недостатках. Мы просто не можем её разумно обсуждать. При таком определении я могу взять, например, любое классическое клиент-серверное приложение - готовый к деплою дистрибутив - и не меняя в нём ни байта, продеплоить его как "мясорубку". И наоборот, могу взять любую "мясорубку" и сделать её "не мясорубкой". Ну о чём тогда вообще говорить? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:20 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Можем даже обсудить тот самый пример с Firebird, где "не меняя ни строчки кода", переносим БД внутрь сервера приложений. Т.е. звучит так, как будто мы ничего не теряем, а даже приобретаем. Пример - можем. Но это не даст нам ровно ничего, поскольку это будет обсуждение узкого случая, а не архитектуры. Пожалуй, я сформулирую свой тезис так: "Архитектура программного комплекса - это то, что определяется разработчиком, глубоко влияет на реализацию программного комплекса и не может быть изменено без серьёзной переработки этого комплекса. То, что может быть без правки исходников, легко и в любой момент изменено сисадмином работающего решения - при том, что разработчик вообще не в курсе - архитектурой программного комплекса заведомо не является. Это уже конфигурация конкретной инсталляции продукта или что-нибудь в этом духе". Этот тезис вызывает какие-либо возражения? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:31 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Я привёл пару примеров того, что очевидно одинаковые (ну точнее очень схожие, если придираться) по функционированию программные комплексы либо относятся, либо не относятся к этой архитектуре в зависимости от мелких деталей, внешних по отношению к самому программному комплексу. То есть, такое определение архитектуры не оставляет для неё возможности иметь какие-либо характерные черты. Мы вообще не можем ничего сказать ни о её преимуществах, ни о её недостатках. Мы просто не можем её разумно обсуждать. Ну почему же не можем? Ещё как можем. Может вы приведёте пример, который создаст достаточное противоречие, чтобы мы зашли в тупик? Пример с Firebird Embedded не подходит, так как вы убрали одно звено, это совершенно очевидно. Никакого противоречия нет. softwarer При таком определении я могу взять, например, любое классическое клиент-серверное приложение - готовый к деплою дистрибутив - и не меняя в нём ни байта, продеплоить его как "мясорубку". И наоборот, могу взять любую "мясорубку" и сделать её "не мясорубкой". Ну о чём тогда вообще говорить? Нет, не можете. О чём и речь. Двухзвенка и трёхзвенка отличаются не только количеством звеньев, это скорее следствие, чем самоцель. У трех-звенки есть и свои недостатки по сравнению с двух-звенкой. Но эти недостатки полностью нивелируются преимуществами трёх-звенки в абсолютном большинстве случаев. Я бы сказал, сегодня вообще не имеет смысла делать двух-звенки, можно их спокойно хоронить и не чувствовать никаких угрызений совести по этому поводу :) Вообще трех-звенка это уже архетип. Под которым подразумевается N-звенная архитектура с количеством звеньев >=3. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:35 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Пожалуй, я сформулирую свой тезис так: "Архитектура программного комплекса - это то, что определяется разработчиком, глубоко влияет на реализацию программного комплекса и не может быть изменено без серьёзной переработки этого комплекса. То, что может быть легко и в любой момент изменено сисадмином работающего решения - при том, что разработчик вообще не в курсе - архитектурой программного комплекса заведомо не является". Этот тезис вызывает какие-либо возражения? Конечно. Программный комплекс с трехзвенной архитектурой можно упаковать в один контейнер. Грубо говоря, можно сделать инсталлер, который установит все звенья но одной машине, вместе с БД. И будет выглядеть всё как одно приложение, цельное. Но это совершенно ничего не меняет с точки зрения архитектуры. Более того, если именно таким образом планируется использовать ПО, то трёх-звенка будет избыточна, и двух-звенка тоже будет избыточна. Вот скажите вы мне, что нужно сделать ПО, которое будет устанавливать на компах юзера и работать полностью локально, и в этом отношении гарантировано ничего не изменится, то я бы не предлагал N-звенную архитектуру. Это будет одно единственное приложение со встраиваемой БД, если она требуется. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:39 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt softwarerЭтот тезис вызывает какие-либо возражения? Конечно. Программный комплекс с трехзвенной архитектурой можно упаковать в один контейнер. Грубо говоря, можно сделать инсталлер, который установит все звенья но одной машине, вместе с БД. И будет выглядеть всё как одно приложение, цельное. Но это совершенно ничего не меняет с точки зрения архитектуры. Так с чем же в моём тезисе Вы не согласны? Я ведь сказал ровно это же: это ничего не меняет (не должно менять) с точки зрения архитектуры. И привёл примеры, в которых меняет (если верить определению). Из чего я и делаю вывод, что это негодное определение (ну или годное, но не архитектуры, а чего-то другого). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt очень подробно описано в книге "Patterns of Enterprise Application Architecture" М. Фаулера. Так ведь читать книжки это авторфаулер головного мозга ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 14:01 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Так с чем же в моём тезисе Вы не согласны? Я ведь сказал ровно это же: это ничего не меняет (не должно менять) с точки зрения архитектуры. И привёл примеры, в которых меняет (если верить определению). Из чего я и делаю вывод, что это негодное определение (ну или годное, но не архитектуры, а чего-то другого). Похоже мне придётся согласиться с fkthat , вы уходите в софистику. Непонятно зачем. Давайте на пальцах. Трех-звенная архитектура, это когда у вас три звена, под звеном в разработке программного обеспечения следует понимать программу. Три разных программы. Первая программа -- клиент, который содержит интерфейс пользователя. Другая -- сервер приложений, который содержит логику. Третья программа -- сервер баз данных, которая содержит данные. В двух-звенной архитектуре у вас два звена. Т.е. две разных программы. Первая -- клиент, который содержит интерфейс пользователя + программную логику. Вторая -- сервер баз данных, который содержит данные. От того как вы эти приложения разместите, на одном компе, в одном контейнере, архитектура не меняется. Но если вы из двух приложений слепите одно, то всё меняется. И про "не поменяется ни строчки кода", это из страны фантазий. Либо вы откровенно и в упор не понимаете разницу в этих архитектурах. Что автоматически объясняет ваше негодование, когда кто-то сообщает о том, что ХП это плохо. Обыкновенное непонимание вопроса, уж извините. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 01:23 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat hVostt очень подробно описано в книге "Patterns of Enterprise Application Architecture" М. Фаулера. Так ведь читать книжки это авторфаулер головного мозга Да уже зла не хватает, когда кто-то начинает гнать на литературу. Прям откровенное дежавю, как будто в школе сопляки начитают гундеть на тему, да нафига мне эта ваша математика, русский, химия, бла-бла, всё равно буду бандюком зашибать бабло на улицах гоп-стопом ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 01:27 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Похоже мне придётся согласиться с fkthat , вы уходите в софистику. Непонятно зачем. Если Вы не поняли какую-то мысль, это не повод бросаться подобными словами. В приличном обществе принято ответственно относиться к своим словам. Я выдвинул тезис, с моей точки зрения разумный и верный. Вы сказали, что не согласны с ним, и одновременно сказали по сути то же самое. Когда я указал на это, Вы брякнули про софистику. При этом Вы не удосужились хотя бы выделить смутившее Вас место и объяснить, что в нём Вам не нравится. Просто походя повесили ярлык. Честно говоря, по мне это возмутительно. Вы претендовали на серьёзный разговор, с договорённостью об одинаковом смысле слов итп. - так соответствуйте ему, чёрт возьми. Я могу сказать, как выглядит ситуация с моей стороны. В своё время некоторые умные люди выдвинули некоторые умные мысли, в том числе про многозвенку. Рассчитывая на то, что другие умные люди их поймут. К сожалению, ряд не столь умных людей отнёсся к этим мыслям как к религиозным догмам - без понимания, без критического осмысления, зато с молотком в руке. Я предлагаю таки подумать глубже, по-взрослому, всерьёз пошевелить мозгами. И когда мне в ответ снова начинают рассказывать "Бог сотворил мир за шесть дней и нуб тот, кто в этом сомневается" - мне становится скучно. hVostt Трех-звенная архитектура, это когда у вас три звена, под звеном в разработке программного обеспечения следует понимать программу. Три разных программы. Вы наконец-то пробуете дать определение звена - то, что я просил у Вас, если мне не изменяет память, ещё позавчера. Ок, я согласен с тем, что звено - это программа. Однако, к этому требуются принципиальные уточнения. Если Вам интересно, могу рассказать, какие. hVostt Что автоматически объясняет ваше негодование, когда кто-то сообщает о том, что ХП это плохо. Вы ушли в мир своих догматических фантазий. Дальше я попрошу дать ссылку, где я негодовал по этому поводу, Вы дадите какую-нибудь формальную отписку, где, конечно, ни следа негодования итп. hVostt Обыкновенное непонимание вопроса, уж извините. Знаете, моих сверстников в первом классе учили, что три минус пять будет ноль. И когда я намекал им, что это не совсем так, я тоже слышал про обыкновенное непонимание вопроса. И да, я отлично понимаю, что Вы даже не попытаетесь понять эту фразу, а снова повесите на неё ярлык "софистика". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 01:52 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Да уже зла не хватает, когда кто-то начинает гнать на литературу. Не все является научной литературой. Ты даже не понимаешь, что твоя "трехзвенка" не является многозвенной архитектурой. Многозвенность (цепь), как минимум, означает, что количество звеньев может варьироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 02:16 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer hVostt Похоже мне придётся согласиться с fkthat , вы уходите в софистику. Непонятно зачем. Если Вы не поняли какую-то мысль, это не повод бросаться подобными словами. В приличном обществе принято ответственно относиться к своим словам. Я выдвинул тезис, с моей точки зрения разумный и верный. Вы сказали, что не согласны с ним, и одновременно сказали по сути то же самое. Когда я указал на это, Вы брякнули про софистику. При этом Вы не удосужились хотя бы выделить смутившее Вас место и объяснить, что в нём Вам не нравится. Просто походя повесили ярлык. Честно говоря, по мне это возмутительно. Вы претендовали на серьёзный разговор, с договорённостью об одинаковом смысле слов итп. - так соответствуйте ему, чёрт возьми. Большая просьба, конкретизируйте и дублируйте информацию. "Я выдвинул тезис". Про какой конкретно мы сейчас тезис говорим? Я же дал чёткие общеизвестные определения архиктектур. Это не мои выдумки. Ещё раз. 3 звена = три программы. Встраивание FireBird меняет физически количество программ, но не меняет их логически. Если вы три независимых звена запустите в одном процессе, это всё равно три разных программы . Так что вот этим вы хотели сказать? Как типа не меняя ни строчки кода 3 звена превратить в 2? Нет, это обман. Просто используется способность FireBird работать внутри процесса приложения. softwarer hVostt Трех-звенная архитектура, это когда у вас три звена, под звеном в разработке программного обеспечения следует понимать программу. Три разных программы. Вы наконец-то пробуете дать определение звена - то, что я просил у Вас, если мне не изменяет память, ещё позавчера. Ок, я согласен с тем, что звено - это программа. Однако, к этому требуются принципиальные уточнения. Если Вам интересно, могу рассказать, какие. Мне пока не требуется. Уже этого достаточно, чтобы сказать, что ваш пример с FireBird приятнут за уши. Может вы другой пример приведёте? softwarer hVostt Что автоматически объясняет ваше негодование, когда кто-то сообщает о том, что ХП это плохо. Вы ушли в мир своих догматических фантазий. Дальше я попрошу дать ссылку, где я негодовал по этому поводу, Вы дадите какую-нибудь формальную отписку, где, конечно, ни следа негодования итп. Ок, если вы согласны, что использование ХП нужно избегать, тогда значит это и правда мои фантазии, и я ну другого подумал. softwarer hVostt Обыкновенное непонимание вопроса, уж извините. Знаете, моих сверстников в первом классе учили, что три минус пять будет ноль. И когда я намекал им, что это не совсем так, я тоже слышал про обыкновенное непонимание вопроса. И да, я отлично понимаю, что Вы даже не попытаетесь понять эту фразу, а снова повесите на неё ярлык "софистика". Ох уж эти понты "я в детстве был умнее сверстников" :) Сорри, без обид. Давайте замнём это и вернёмся к конкретике. Я сказал, что у вас нет понимания, потому что вы растекаетесь мыслью тонким слоем по кафелю, где всё чётко и понятно. Типа а если вот под вот этим углом посмотреть в раскоряку, то слон это апельсин. Ну и нафига оно? Понятно, что памятник Пушкину с определённой точки зрения это жопа. Какие вы хотите выводы из этого сделать? И зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 02:35 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos hVostt Да уже зла не хватает, когда кто-то начинает гнать на литературу. Не все является научной литературой. Ты даже не понимаешь, что твоя "трехзвенка" не является многозвенной архитектурой. Многозвенность (цепь), как минимум, означает, что количество звеньев может варьироваться. Я понимаю и об этом уже сказал. Тебе просто было лень читать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 02:37 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
softwarer Ок, я согласен с тем, что звено - это программа. Я об этом еще полдюжины страниц назад писал, что "это то, что может быть развенуто на отдельном хосте", и давал ссылку на ту же самую книгу, вы же вместо того чтобы по ссылке сходить развели какую-то демагогию про уровень-неуровень и про головные мозги. А если кто-то пишет без goto, то у него, наверное, "дейкстра головного мозга", так что ли? :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 05:56 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt Но если вы из двух приложений слепите одно, то всё меняется. А насколько надо их "слепить" чтобы всё поменялось? По тому, что сказано Вами выше - поместить в одно адресное пространство недостаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 13:30 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov hVostt Но если вы из двух приложений слепите одно, то всё меняется. А насколько надо их "слепить" чтобы всё поменялось? По тому, что сказано Вами выше - поместить в одно адресное пространство недостаточно. Смысл в трех-звенки именно в разделении. Одна из основных проблем, которая решается -- горизонтальное масштабирование. Но это не единственный профит. Как я уже говорил трёх-звенка это архетип. Часто сервер приложений сам состоит из нескольких звеньев, если угодно -- микросервисов. Также сервер приложений может использовать не одну СУБД, а несколько. Реляционку, кеш, очереди, а также быть клиентом более высокоуровневой N-звенной архитектуры (интеграции). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 14:35 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt, трехзвенка никакой не архетип - это отрыжка недоделанной веб (результат не системной развитии ИТ, когда каждый козел стандартизирует свое говно) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 15:03 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos hVostt, трехзвенка никакой не архетип - это отрыжка недоделанной веб (результат не системной развитии ИТ, когда каждый козел стандартизирует свое говно) при чём тут веб? я трёх-звенку делал и на десктопах много лет назад. чёт тебя послушать, так всё говно. фаулер и еже с ним гавно. архитектуры гавно. понаделали своих вебов, технологий, сволочи. я чёт подобное видел когда начинал только работать очень давно. сталкивался с разработчиком на фокс-про -- очень много желчи выливалось в курилке. потому что он со своими ограниченными знаниями фокс-про уже нахрен никому не нужен, а технологии ушли вперёд. вот он и сетовал, что просрал кучу времени зазря. хотя никто ему не мешал повышать квалификацию.. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 16:59 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt, все что сделано - тупик ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 19:43 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
hVostt сталкивался с разработчиком на фокс-про -- очень много желчи выливалось в курилке. потому что он со своими ограниченными знаниями фокс-про уже нахрен никому не нужен На форуме работа говорят , что разрабы фокспро черной икрой давятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2020, 21:17 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos hVostt, все что сделано - тупик Пора было остановиться на изобретении огня, согласен :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2020, 01:40 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat hVostt сталкивался с разработчиком на фокс-про -- очень много желчи выливалось в курилке. потому что он со своими ограниченными знаниями фокс-про уже нахрен никому не нужен На форуме работа говорят , что разрабы фокспро черной икрой давятся. Став незаменимым, тоже можно вынести из этого выгоду. Поддержка устаревших платформ и технологий. На которые не найти спецов. Или писать откровенно плохой и неподдерживаемый код (как у ВМоисеева). Так тоже делают, порой даже специально. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2020, 01:54 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
ViPRos hVostt, все что сделано - тупик + + и быстро приведет к построению человеко-машиннй а затем полностью машинной цивилизации. Хотя это уже будет и не цивилизация - а так - материя. Сами себя уничтожаем - и очень быстро. Программисты в первых рядах. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2020, 08:36 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
а начиналось с вопроса авторправильно ли на каждое действие клиентского приложения создавать новое подключение к БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2020, 09:35 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
Изопропил а начиналось с вопроса авторправильно ли на каждое действие клиентского приложения создавать новое подключение к БД? От платформы зависит. .NET кеширует и повторно использует соединения из своего внутреннего пула, т.ч. в его случае правильно. Как с этим в случае с не-дотнет я в душе не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2020, 12:22 |
|
Взаимодействие клиентов с БД.
|
|||
---|---|---|---|
#18+
fkthat Изопропил а начиналось с вопроса пропущено... От платформы зависит. .NET кеширует и повторно использует соединения из своего внутреннего пула, т.ч. в его случае правильно. Как с этим в случае с не-дотнет я в душе не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2020, 13:04 |
|
|
start [/forum/topic.php?all=1&fid=33&tid=1547103]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
467ms |
get tp. blocked users: |
1ms |
others: | 406ms |
total: | 962ms |
0 / 0 |