powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Новая Среда разработки. Зачем длинные транзакции?
25 сообщений из 109, страница 1 из 5
Новая Среда разработки. Зачем длинные транзакции?
    #35652223
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начало:
/topic/603465&pg=1

ln123Алексей МорозовВы не ответили на вопрос.
Зачем держать транзакцию открытой, пока редатировается документ?



Хотя вопрос и не мне попробую написать свои мысли на этот счет.

Довольно часто при работе с версиониками работу с документами организуют с длинных транзакциях т.е. когда нужно открыть документ на редактирование делают select ... from ... for update т.е. блокируют в базе запись представляющую собой документ, а затем по мере редактирования сразу отправляют изменения на сервер, а при нажатии кнопки сохранить посылают commit.

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

У обоих подходов есть свои плюсы и минусы.
В случае вашего подхода для сложных объектов ИМХО труднее писать код, если же среда скроет все сложности от разработчика то тогда ваш подход будет явно лучше.
Есть такая ВИ:
- Главная форма - карточка. На ней кнопка "Редактировать" с гланой табличкой свойств.
А также много подсвойств в кнопках - дочках (один - ко многим в БД).
- При открытии подкнопок - форм, там присутствуют кнопки "ОК" и "Отмена"
- На главной форме "Сохранить" и "Отменить".

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

Понятно изложил?
Т.к. ЭТО в той теме OFFTOP
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652320
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123
Есть такая ВИ:
- Главная форма - карточка. На ней кнопка "Редактировать" с главной табличкой свойств.
А также много подсвойств в кнопках - дочках (один - ко многим в БД).
- При открытии подкнопок - форм, там присутствуют кнопки "ОК" и "Отмена"
- На главной форме "Сохранить" и "Отменить".

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

Понятно изложил?

Нет.

На форме есть грид содержащий несколько записей из второй таблицы, а пользователь выбрирает какую строку редактировать. Потом нажимает Изменить строку?

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

Либо свойство грида/датасета - Grid.ModalForm(Row, Mode) выполнит аналогичное действие.

Либо c помощью метода CreateModalForm(Name, CallbackFunctionName)
- создать форму, и скопировать нужные данные (NewForm.City = Data[y].City).
А в функции указанной в CallbackFunctionName выполнить обратное
копирование.

Все данные хранятся в одной записи таблицы?

В этом случае все данные находятся на клиенте, программисту надо
лишь написать CreateCommonModalForm('Form10'). Этот метод скопирует
данные из этой формы в создаваемую форму. А при вызове метода
Apply новой формы скопирует все обратно. Главная форма будет
заблокирована до завершения работы текущей.

Либо c помощью метода CreateModalForm(Name, CallbackFunctionName)
- создать форму, и скопировать нужные данные (NewForm.City = City).
А в функции указанной в CallbackFunctionName выполнить обратное
копирование.

Либо разместить все даные на вкладках - более стандартный подход
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652465
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай договоримся.
В этой теме желательно сначала по вариантам использования ( ВИ ), потом программирование.

Итак:
авторНа форме есть грид содержащий несколько записей из второй таблицы, а пользователь выбрирает какую строку редактировать. Потом нажимает Изменить строку?
Нет.
Главная форма - Карточка клиента и они любят нетабличную форму (одна запись из контролов).
А в неё мы входим хоть по поиску, хоть по 2 клику на общем списке.

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


Ок.
Только я не понял, как в базе данных хранится информация о клиенте.

Все данные по сущности "Клиент" храняться в нормализованном виде в массе
таблиц СУБД.


Значит существует таблицы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Таблица - Клиенты
  Код клиента (первичный ключ)
  ФИО
  Адрес
  Дата рождения

Таблица - Дополнительные свойства клиетнов
  Код клиента (первичный ключ)
  Номер паспорта
  Номер страховки

Так что ли?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652630
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Морозов,

конечно. У меня, например, таких штук 15, включая FK на другие таблицы (код ДачериСына к примеру).
Короче делать это всё на клиенте - каменный век.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652634
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не "Номер паспорта", а "код документа удостоверяющего личность" из справочника
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652658
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем хуже хранить эти данные вместе?

Таблица - Клиенты
Код клиента (первичный ключ)
ФИО
Адрес
Дата рождения
Код документа удостоверяющего личность (FK на другую таблицу)
Номер страховки
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652670
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у одного клиента может быть несколько документов, несколько детей, несколько телефонов, несколько офисов, несколько ... - улавливаете?
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652676
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей МорозовА чем хуже хранить эти данные вместе?

нда...

- один ко многим в одной?
- даже если .... это тебе не поможет. Длинные транзакции нужны.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652724
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Алексей МорозовА чем хуже хранить эти данные вместе?

нда...
- один ко многим в одной?
- даже если .... это тебе не поможет. Длинные транзакции нужны.


нда...
Вопрос был задан специально, потому что вы не поняли меня в первый раз.

авторавторНа форме есть грид содержащий несколько записей из второй таблицы, а пользователь выбрирает какую строку редактировать. Потом нажимает Изменить строку?
Нет.
Главная форма - Карточка клиента и они любят нетабличную форму (одна запись из контролов).

Но и я вас не понял, я спросил у 25 человек, что значит:
"Главная форма - Карточка клиента и они любят нетабличную форму (одна запись из контролов)."
никто не понял, ну ладно...

Этот грид (о котором я писал), находится на форме вместе с полями - ФИО, ДАТА РОЖДЕНИЯ.
И содержит все записи таблицы - "один ко многим" (например - несколько документов, несколько детей, несколько телефонов, несколько офисов, несколько ...)

Вы хотите, что бы все эти гриды редактировались не в ячейках (как в 1С)?
А с использованием отдельной формы?
Что бы на форме присутствовала кнопка ОК и ОТМЕНА. Что бы
при нажатии на ОТМЕНА, изменения внесенные на суб-форме
были отменены (отчачены) ??
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652748
trdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Морозов
А чем хуже хранить эти данные вместе?

Нормализация.
Адрес составной компонент, например, индекс, страна, город, улица, дом и т.п.
К тому же адресов у клиента масса: юридический, почтовый.
Если подумать об удаленных складах и т.п. становится совсем плохо...
и т.д. и т.п.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652783
edges7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Морозов
Но и я вас не понял, я спросил у 25 человек, что значит:
"Главная форма - Карточка клиента и они любят нетабличную форму (одна запись из контролов)."
никто не понял, ну ладно...

Видимо, я не был из числа этих 25 человек. :) Хотя, конечно, можно было бы сформулировать мысль и по точнее.

Алексей МорозовЭтот грид (о котором я писал), находится на форме вместе с полями - ФИО, ДАТА РОЖДЕНИЯ.И содержит все записи таблицы - "один ко многим" (например - несколько документов, несколько детей, несколько телефонов, несколько офисов, несколько ...)

Это я тоже понял.

Алексей МорозовВы хотите, что бы все эти гриды редактировались не в ячейках (как в 1С)?
А с использованием отдельной формы?

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

P.S. Sorry, конечно, что вмешиваюсь в вашу дуэль. Считайте меня просто секундантом. :))
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652792
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЛично я так и делаю. Редактирование в гриде не всегда удобно для пользователя. Да и в гриде, как правило, отображаю не всю вытаскиваемую информацию, а лишь ее часть. Все остальное - в отдельной форме, которая предназначена для просмотра и/или редактирования данных.

Тут именно так и есть.

автор
P.S. Sorry, конечно, что вмешиваюсь в вашу дуэль. Считайте меня просто секундантом. :))


Да я все хочу точку поставить в этой странной бесседе.

Теперь когда все разобрались, как организованы данные, обсудим зачем тут длинные транзакции.
(кстати применять длинные транзакции можно и в этой среде, только переносимость пострадает. И кода придется немного руками написать.)
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652805
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по сообщениям Petro123 дельфист еще тот.

Помог бы сделать среду более удобной для дельфистов, а
не пытался (часто необоснованно) искать возможность
аргументировать своё пренебрежение.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35652819
edges7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей МорозовТеперь когда все разобрались, как организованы данные, обсудим зачем тут длинные транзакции.

Вообще стараюсь избегать длинных транзакций. Хотя и не всегда получается.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35653638
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Довольно часто при работе с версиониками работу с документами организуют с длинных транзакциях т.е. когда нужно открыть документ на редактирование делают select ... from ... for update т.е. блокируют в базе запись представляющую собой документ, а затем по мере редактирования сразу отправляют изменения на сервер, а при нажатии кнопки сохранить посылают commit. Всю жизнь работал с версионниками (Oracle), но ни разу не использовал длинных транзакций в пользовательских приложениях. Вот сейчас приходится самом работать в приложении, которое такие транзакции использует и ничего кроме нецензурных слов по этому поводу найти не могу :) Крайне неудобно работать. Хотя, возможно, что тут не длинные транзакции виноваты, а чьи-то руки...
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35653769
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey,

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

Если ты сервер, не суетись под клиентом (с)
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35653854
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123дык, давай обсудим как это сделать. Я друго пути для данного ВИ не нашёл.
Ну как всегда, сначала надо с ВИ разобраться - правильно ли он описан. Что мы имеем - нажимая кнопку "Сохранить" пользователь практически не представляет того, что именно он будет "сохранять". Он понаоткрывал десяток экранчиков в каких-то что-то правил, в каких-то нет. А пользователь выполняя необратимое действие (commit таковым как раз и является) должен достаточно внятно представлять, что именно он делает. А здесь, он практически говорит, я - не помню чего делал, но пусть будет так. То есть я, как архитектор системы, предлагаемый ВИ забраковал бы. В качестве альтернативы я бы предложил все изменения, выполняемые в дочерних формах отражать на основной и, соответственно, хранить в данных формы вплоть до момента сохранения в бд. Либо разбивать транзакцию на более мелкие части.

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

Petro123 Если ты сервер, не суетись под клиентом (с)
К счастью, я не сервер :)
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35653918
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем длинные транзакции?
Отвечу так: это такой же бред, как и заставлять натурщицу не покидать свое место до полного завершения картины. Такой же бред, как и запускать в супермеркет по одному человеку. И т.д. и т.п.
Обычно "длинными транзакциями" страдают те, кто не понимает разницы между данными сохраненными в БД и информацией. А это две разных сущности.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35653943
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> запускать в супермеркет по одному человеку

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

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


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35653955
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей МорозовВы хотите сказать, что в некоторых случаях без длинных транзакций
для выполнения работы придется заблокировать всю БД?Мне показалось, что iscrafm как раз против длинных транзакций. И своей фразой он хотел сказать, что с длинными транзакциями придется блокировать всю базу :)
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35653975
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Морозов

Вы читаете как-то по спирали что-ли или, каким-то непонятным пока мне способом.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35654016
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyМне показалось, что iscrafm как раз против длинных транзакций.
я не отношусь к подвиду людей, которые могут сесть и не отвелакаясь и не выполняя промежуточные сохранения набросать, допустим, большой документ. В процессе работы постоянно жму на кнопку сохранить. До тех пор, пока я не сказал себе или другим (допустим опубликовал) что все готово - это просто данные, черновик. После - информация. Те, кто этого не понимают начинают придумывать и пытаются обосновать необходимость каких-то "длинных транзакций". Транзакция к счастью коротка. В приведенном примере - опубликовать (готово).
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35654082
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xВы читаете как-то по спирали что-ли или, каким-то непонятным пока
мне способом.



Просто я нахожу все возможные ответы на вопрос.



Ваша фраза:

"запускать в супермеркет по одному человеку"

значит

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




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

у них же разные соединения. А если программа использует многопоточность

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

по одному" вообще нет.



Если вы пришли к такому выводу, я могу предположить - что многопоточность
для вас

новое слово.



А длинные транзакции - это не плохо. Просто аналогичного результата можно

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

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

перед сохранением на клиенте?




Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35654125
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я привел пример длинных транзакций как один из примеров взаимодействия с базой который мне встречался. Лично мне длинные транзакции не нравятся у них на мой взгляд есть только один плюс это то что хранение изолированного состояния состояния сложного объекта перекладывается на сервер несколько легче писать клиентскую часть (о части вещей можно не думать так как их разрешит сервер). Собственно меня и интересовало насколько среда разработки Алексея позволит изолировать прикладного разработчика от размышлений типа: пользователь при редактирование накладной создал товар, а другой пользователь этот товар удалил что произойдет при сохранение накладной? Есть сложный объект как в нем реализовать отмену сделанных операций или их части? Какую структуру хранения нужно создать для хранения объекта и как реализовать что бы на сервер отсылались только изменения? Я редактируют накладную строки которой созданы на основе счета в это время другой пользователь удаляет из счета строку, что будет с моей накладной? ну и так далее.

А так честно говоря среда Алексея напоминает Power Builder + framework. Причем Power Builder в чем-то (по любому в части DataWindow) и по круче будет
...
Рейтинг: 0 / 0
25 сообщений из 109, страница 1 из 5
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Новая Среда разработки. Зачем длинные транзакции?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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