powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Новая Среда разработки. Зачем длинные транзакции?
25 сообщений из 109, страница 3 из 5
Новая Среда разработки. Зачем длинные транзакции?
    #35654923
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey
Вот зашел я в карточку - одно окошко открыл, другое, третье, потом чайку пошел выпить, вернулся, еще что-то посмотрел. Теперь пытаюсь формочку закрыть - а мне тут "вы хотите сохранить сделанные изменения?". Вот ведь блин - а что я менял-то. Вдруг я что-то важное поменял, да сохранить забыл. Или это просто я случайно мышкой по комбо-боксику щелкнул...
- вы забыли, что есть кнопка "Редактировать". Если вы в Excell нажали F2 и пошли чай пить, то это как?
Не принимается.

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


Bogdanov Andrey
Один из минусов (невозможность открыть какую-то другую форму приложения и поработать там, а потом вернуться к незаконченной работе) я уже упоминал. Вы решили это проигнорировать.

- можно :)
Две карточки - 2 экземпляра формы карточка. Надеюсь про MDI/SDI говорить не будем здесь?
Что удобнее первое или второе. Заблудится везде можно. На то и архитектор.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35654936
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в том, что с короткими транзакциями можно только простой ВИ организовать (всё на одной форме и всё грузится на клиента при открытии формы карточки).
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35654953
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно верно!Они не будут видеть изменений друг друга, но с одним существенным замечанием - они не будут видеть ничего
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35654956
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Вопрос в том, что с короткими транзакциями можно только простой ВИ
> организовать
> (всё на одной форме и всё грузится на клиента при открытии формы
> карточки).

Да, но какие в этом минусы?

Кроме довода "больше кода", который мы не считаем существенным.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35654985
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Кроме того, я часто встречаю заказчиков, которые говорят именно про кнопку:
"Добавь здесь кнопку "Дети", кнопку "Долги" и кнопку "Недвижимость"".
Вы ему скажете: "Из за длинных транзакций или забывчивости это надо по другому"?
Я легко добавлю в форму люьбое количество кнопок безо всяких длинных транзакций.
И не уверяйте меня, что изменения сделанные при нажатии кнопки "Дети" оябзаны быть в одной транзакции с изменениями, которые по кнопке "Долги" делаются :)
Это ваше замечания о разных кнопочках как раз и доказывает несостоятельность вашего ВИ. С какого-то перепугу вы совершенно разные логические действия упорно пытаетесь в одну транзакцию запихнуть, а потом удивляетесь, что без длинной транзакции это неудобно делать.

Petro123Bogdanov Andrey
Один из минусов (невозможность открыть какую-то другую форму приложения и поработать там, а потом вернуться к незаконченной работе) я уже упоминал. Вы решили это проигнорировать.

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

Бред. Они смогут получить данные из любой таблицы.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655037
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но только не из той, где был UPDATE без COMMIT'a.Это должны знать даже твои студенты.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655051
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Один из минусов (невозможность открыть какую-то другую форму приложения и поработать там, а потом вернуться к незаконченной работе) я уже упоминал. Вы решили это проигнорировать.

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

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

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

То как реализована работа с транзакциями на то что делает пользователь вообще ни как влиять не должно. Это вопрос чисто технический.

Навскидку я бы назвал следующие минусы у длинных транзакций
1) Большая нагрузка на сервер
2) Предположительно большая нагрузка на сеть
3) Если СУБД оракал и архитектура 2-х звенная то с MTS мы обламываемся, а это означает ограничение на масштабируемость по количеству пользователей
4) Нет возможности сделать такую фишку как сделал Алексей у себя в среде с отключением через 10 минут от сервера из этого следуют определенные требования к качеству связи до сервера
5) Наверное если подумать можно еще минусов придумать :)

Зато писать клиента легче и лучше вписывается в подход вся логика на сервере
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655052
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaНо только не из той, где был UPDATE без COMMIT'a.Это должны знать даже твои студенты.

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

Mysql1> START TRANSACTION;
Mysql1> UPDATE Contragents SET Name='1' WHERE Code=1;

Mysql2> SELECT * FROM Contragents
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655082
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВопрос в том, что с короткими транзакциями можно только простой ВИ организовать (всё на одной форме и всё грузится на клиента при открытии формы карточки).

Категорически не согласен в рамках любого подхода можно реализовать практически любой ВИ.
Формы тут вообще ни причем. Форма это только представление. А у нас еще есть и модель которая может быть сколь угодно сложной и уметь себя сохранять на сервер раскладывая на произвольное кол-во таблиц. Просто для коротких транзакций написать больше кода придется и некоторые вещи возможно придется писать дважды один раз на сервере и один раз на клиенте
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655089
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ln123
4) Нет возможности сделать такую фишку как сделал Алексей у себя в среде с отключением через 10 минут от сервера из этого следуют определенные требования к качеству связи до сервера
+1
тока не понял что за фишка.
Меня жутко Word раздаражает со своим автосохранением когда его не просят :)
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655096
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ln123автор
Один из минусов (невозможность открыть какую-то другую форму приложения и поработать там, а потом вернуться к незаконченной работе) я уже упоминал. Вы решили это проигнорировать.

Здесь как раз проблем нет, Алексей выше об этом писал, открывается в новом потоке новое соединение с базой и все работаем себе и горя не знаем
Это как раз и есть проблема. У вас каждая формочка свое соединение с БД окрывает? На мой взгляд - абсурд.

ln123Насколько я понимаю то что пишет Petro123 имеется ввиду объект который я является неделимым для пользователя т.к. пользователь запутаться не может все изменения относятся к одному объекту предметной области их нужно все дружно либо сохранить либо нет.
Ну так если объект такой простой, что пользователь в нем запутаться не может, то неужели программист запутается и не сможет все данные за один раз на сервере сохранить? Ну а вообще практика показывает, что если объект отображается в более, чем одном экране, то пользователь вполне успешно в нем "запутывается".

ln123То как реализована работа с транзакциями на то что делает пользователь вообще ни как влиять не должно. Это вопрос чисто технический.Несомненно. Но у меня перед глазами как раз обратный пример - сделано с использованием вами любимых длинных транзакций. И именно из-за них мне приходится пять экземпляров приложения запускать. И постоянно на блокировки нарываться. Зато писать кому-то было легче.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655106
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Двоечник,ты забыл поставить REPEATABLE READ, о котором ты говорил выше.По default'у стоит READ COMMITED.
С МySql не знаком(там до недавних пор транзакций не было совсем).
Вот тебе пример для MS SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN TRANSACTION;

SELECT * FROM MyTable;

update MyTable
set Field = 'учи матчасть'
where Field = 'Морозов'

для другого соединения
Код: plaintext
1.
2.
3.
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN TRANSACTION;
SELECT * FROM MyTable;
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655112
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x
Это как раз и есть проблема. У вас каждая формочка свое соединение с БД окрывает? На мой взгляд - абсурд.


Главное:
1) Решение поставленной задачи.
2) Удобство пользователя.
3) Удобство программиста.
4) Приемлимые требования к ресурсам.

Исходя из этого, куча соединений не бред.

Оговрюсь, что у меня потоки получают соединение из "пулла". Кол-во
открытых соединений равно кол-ву одновременно выполняющихся
запросов.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655131
_Петро123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bogdanov Andrey
Это как раз и есть проблема. У вас каждая формочка свое соединение с БД окрывает? На мой взгляд - абсурд.

да не абсурд это. Мелкомягкие рекомендуют. Для ваших же коротких транзакций. :) А что бы не долго открывались в СУБД пул есть (который Морозов сам написал)
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655135
_Петро123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bogdanov Andrey
И именно из-за них мне приходится пять экземпляров приложения запускать. И постоянно на блокировки нарываться. Зато писать кому-то было легче.
не приложения , а ФОРМЫ с компонентом коннекта на ней или Формы с пристёгнутым ДатаМодулем с оным.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655145
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot SeVa]Двоечник,ты забыл поставить REPEATABLE READ, о котором ты говорил выше.По default'у стоит READ COMMITED. С МySql не знаком(там до недавних пор транзакций не было совсем).[/SeVa]

Глупое обвинение.
Я с таким же успехом могу сказать:

"Двоечник,ты забыл поставить READ COMMITED, о котором ты говорил выше.
По default'у стоит REPEATABLE READ. С МS Sql не знаком (там до недавних
пор версионности не было совсем)."

Только смею скромно заметить, что принципиальной разницы
"READ COMMITED" и "REPEATABLE READ" относительно возникающих
блокировок нет. А механизм блокировки в MSSQL 2005 отключается опцией READ_COMMITTED_SNAPSHOT (со своими особенностями).

http://www.sql.ru/articles/mssql/2005/021501SnapshotIsolation.shtml

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

Это намек на изобретение велосипеда?

Код: plaintext
1.
2.
3.
4.
5.
Mutex poolMutex;
vector<DbConnection*> connectionPool;

void getConnection() { poolMutex.lock(); return pop(connectionPool); }
void DbConnection::release() { poolMutex.lock(); connectionPool.push_back(this); }
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655174
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Петро123 не приложения , а ФОРМЫ с компонентом коннекта на ней или Формы с пристёгнутым ДатаМодулем с оным.У вас может быть и формы. А вот у того с чем мне приходится работать надо именно пяток экземпляров приложения запускать. И это потому-что программистам так писать было легче :)
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655342
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если MySql версионник, то локов не будет.
Однако:
1. Перед этим неоднократно утверждалось, что будет одинаковое поведение, как для версионников, так и для блокировочников.Выяснили, что это не так.
2.Код, который приводился для увеличения счетчиков через MAX из-за кастрации автоинкриментов в угоду переносимости, тоже работать не будет для версионников.
Теперь понятно такое горячее желание иметь REPEATABLE READ

автор
Только смею скромно заметить, что принципиальной разницы
"READ COMMITED" и "REPEATABLE READ" относительно возникающих
блокировок нет.

Еще один перл.А зачем тогда нужно такое кол-во умных слов, если нет никакой разницы?
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655373
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa1. Перед этим неоднократно утверждалось, что будет одинаковое поведение, как для версионников, так и для блокировочников. Выяснили, что это не так.
Бред.
Мы сейчас обсуждаем, блокировку базы при длинных транзакциях (что на MSSQL будут блокировки)
В моей среде "длинных транзакций" нет, поэтому результат будет идентичный для блокировочников и версионников.
SeVa2.Код, который приводился для увеличения счетчиков через MAX из-за кастрации автоинкриментов в угоду переносимости, тоже работать не будет для версионников.
Бред.
Этот код работать будет всегда.
Что значит "кастрация автоинкрементов"? Автоинкремены поддерживаются.
Где вы прочитали про "такое горячее желание иметь REPEATABLE READ" ?
Несколько сообщений назад я написал "REPEATABLE READ", что бы опровергнуть ваше выражение "Если выше, то один работает, а остальные отдыхают".
SeVaАлексейТолько смею скромно заметить, что принципиальной разницы
"READ COMMITED" и "REPEATABLE READ" относительно возникающих
блокировок нет.
Еще один перл.А зачем тогда нужно такое кол-во умных слов, если нет никакой разницы?

относительно возникающих блокировок
В любом из этих 2х режимов SELECT в другом из соединений будет остановлен до завершения транзакции.
Еще раз прошу, хватит писать ерунду. Каждый человек может быть не прав, дальше будет только хуже всем. Я пишу и читаю сообщения для того, что бы понять - где я не прав?. Был бы на 100% уверен в своих знаниях и выборе, молча бы делал свое дело.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655381
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 пишет:


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

А это вопрос или утверждение ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655387
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И с таким человеком я общаюсь?
4594521
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655459
_Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей МорозовSeVa1. Перед этим неоднократно утверждалось, что будет одинаковое поведение, как для версионников, так и для блокировочников. Выяснили, что это не так.
Бред.
Мы сейчас обсуждаем, блокировку базы при длинных транзакциях (что на MSSQL будут блокировки)
В моей среде "длинных транзакций" нет, поэтому результат будет идентичный для блокировочников и версионников.
SeVa2.Код, который приводился для увеличения счетчиков через MAX из-за кастрации автоинкриментов в угоду переносимости, тоже работать не будет для версионников.
Бред.
Этот код работать будет всегда.
Что значит "кастрация автоинкрементов"? Автоинкремены поддерживаются.

этот топик показывает:
- что ваше Демо пока неготово для демонстрации Универсальной среды разработки с БД FireBird
- что длинные транзакции нужны в случаях правки сложных объектов
- что Ваша среда не сможет изменять код старта транзакции внутри блока BEGIN END по каким то своим соображениям
- что в СУБД FireBird ваш код с MAX вставит одинаковый код накладной и получит ошибку.

авторЭтот код работать будет всегда.
работать он будет, учитывая вашу энергию. Только неправильно.
ЗЫ. И не переходите на личности плз.
...
Рейтинг: 0 / 0
Новая Среда разработки. Зачем длинные транзакции?
    #35655486
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ моей среде "длинных транзакций" нет,поэтому результаты будут одинаковы
Сколько открыта транзация совершенно неважно,результы будут разные в силу коренного отличия механизмов работы.Блокировочник и версионник отличаются так же,как SeVa c SQL.ru и SeVa AspNetMania.com.
авторЧтоб тебе всю жизнь изучать С++ для написания калькулятора
Дальнейших и продолжительных успехов в написании своей среды для домашней бухгалтерии.
...
Рейтинг: 0 / 0
25 сообщений из 109, страница 3 из 5
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Новая Среда разработки. Зачем длинные транзакции?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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