powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Взаимодействие клиентов с БД.
25 сообщений из 323, страница 9 из 13
Взаимодействие клиентов с БД.
    #39964094
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
ну, если доки не врут, то получается, что нечего было наезжать на бедного Моисеева по части нагрузки на сервер?

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

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

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

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


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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

глубоко ошибаешься :)
...
Рейтинг: 0 / 0
25 сообщений из 323, страница 9 из 13
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Взаимодействие клиентов с БД.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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