|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Bogdanov Andrey Вот зашел я в карточку - одно окошко открыл, другое, третье, потом чайку пошел выпить, вернулся, еще что-то посмотрел. Теперь пытаюсь формочку закрыть - а мне тут "вы хотите сохранить сделанные изменения?". Вот ведь блин - а что я менял-то. Вдруг я что-то важное поменял, да сохранить забыл. Или это просто я случайно мышкой по комбо-боксику щелкнул... - вы забыли, что есть кнопка "Редактировать". Если вы в Excell нажали F2 и пошли чай пить, то это как? Не принимается. Кроме того, я часто встречаю заказчиков, которые говорят именно про кнопку: "Добавь здесь кнопку "Дети", кнопку "Долги" и кнопку "Недвижимость"". Вы ему скажете: "Из за длинных транзакций или забывчивости это надо по другому"? Bogdanov Andrey Один из минусов (невозможность открыть какую-то другую форму приложения и поработать там, а потом вернуться к незаконченной работе) я уже упоминал. Вы решили это проигнорировать. - можно :) Две карточки - 2 экземпляра формы карточка. Надеюсь про MDI/SDI говорить не будем здесь? Что удобнее первое или второе. Заблудится везде можно. На то и архитектор. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 16:25 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Вопрос в том, что с короткими транзакциями можно только простой ВИ организовать (всё на одной форме и всё грузится на клиента при открытии формы карточки). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 16:29 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Совершенно верно!Они не будут видеть изменений друг друга, но с одним существенным замечанием - они не будут видеть ничего ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 16:32 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
> Вопрос в том, что с короткими транзакциями можно только простой ВИ > организовать > (всё на одной форме и всё грузится на клиента при открытии формы > карточки). Да, но какие в этом минусы? Кроме довода "больше кода", который мы не считаем существенным. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 16:33 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Petro123Кроме того, я часто встречаю заказчиков, которые говорят именно про кнопку: "Добавь здесь кнопку "Дети", кнопку "Долги" и кнопку "Недвижимость"". Вы ему скажете: "Из за длинных транзакций или забывчивости это надо по другому"? Я легко добавлю в форму люьбое количество кнопок безо всяких длинных транзакций. И не уверяйте меня, что изменения сделанные при нажатии кнопки "Дети" оябзаны быть в одной транзакции с изменениями, которые по кнопке "Долги" делаются :) Это ваше замечания о разных кнопочках как раз и доказывает несостоятельность вашего ВИ. С какого-то перепугу вы совершенно разные логические действия упорно пытаетесь в одну транзакцию запихнуть, а потом удивляетесь, что без длинной транзакции это неудобно делать. Petro123Bogdanov Andrey Один из минусов (невозможность открыть какую-то другую форму приложения и поработать там, а потом вернуться к незаконченной работе) я уже упоминал. Вы решили это проигнорировать. - можно :) Две карточки - 2 экземпляра формы карточка. То есть не завершив первую транзакцию вы откроете вторую? И сколько у вас соединений с БД будет на одного пользователя? Под каждое открытое окошко по соединению? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 16:41 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
> Совершенно верно!Они не будут видеть изменений друг друга, но с одним > существенным > замечанием - они не будут видеть ничего Бред. Они смогут получить данные из любой таблицы. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 16:48 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Но только не из той, где был UPDATE без COMMIT'a.Это должны знать даже твои студенты. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 16:56 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
автор Один из минусов (невозможность открыть какую-то другую форму приложения и поработать там, а потом вернуться к незаконченной работе) я уже упоминал. Вы решили это проигнорировать. Здесь как раз проблем нет, Алексей выше об этом писал, открывается в новом потоке новое соединение с базой и все работаем себе и горя не знаем автор Ну и основной минус - необходимость в уме отслеживать ве выполняемые действия. Вот зашел я в карточку - одно окошко открыл, другое, третье, потом чайку пошел выпить, вернулся, еще что-то посмотрел. Теперь пытаюсь формочку закрыть - а мне тут "вы хотите сохранить сделанные изменения?". Вот ведь блин - а что я менял-то. Вдруг я что-то важное поменял, да сохранить забыл. Или это просто я случайно мышкой по комбо-боксику щелкнул... Насколько я понимаю то что пишет Petro123 имеется ввиду объект который я является неделимым для пользователя т.к. пользователь запутаться не может все изменения относятся к одному объекту предметной области их нужно все дружно либо сохранить либо нет. То как реализована работа с транзакциями на то что делает пользователь вообще ни как влиять не должно. Это вопрос чисто технический. Навскидку я бы назвал следующие минусы у длинных транзакций 1) Большая нагрузка на сервер 2) Предположительно большая нагрузка на сеть 3) Если СУБД оракал и архитектура 2-х звенная то с MTS мы обламываемся, а это означает ограничение на масштабируемость по количеству пользователей 4) Нет возможности сделать такую фишку как сделал Алексей у себя в среде с отключением через 10 минут от сервера из этого следуют определенные требования к качеству связи до сервера 5) Наверное если подумать можно еще минусов придумать :) Зато писать клиента легче и лучше вписывается в подход вся логика на сервере ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:02 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
SeVaНо только не из той, где был UPDATE без COMMIT'a.Это должны знать даже твои студенты. Бред. Данные будут получены, но без изменений произведенных в незавершенной транзакции. Mysql1> START TRANSACTION; Mysql1> UPDATE Contragents SET Name='1' WHERE Code=1; Mysql2> SELECT * FROM Contragents ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:03 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
авторВопрос в том, что с короткими транзакциями можно только простой ВИ организовать (всё на одной форме и всё грузится на клиента при открытии формы карточки). Категорически не согласен в рамках любого подхода можно реализовать практически любой ВИ. Формы тут вообще ни причем. Форма это только представление. А у нас еще есть и модель которая может быть сколь угодно сложной и уметь себя сохранять на сервер раскладывая на произвольное кол-во таблиц. Просто для коротких транзакций написать больше кода придется и некоторые вещи возможно придется писать дважды один раз на сервере и один раз на клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:11 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
ln123 4) Нет возможности сделать такую фишку как сделал Алексей у себя в среде с отключением через 10 минут от сервера из этого следуют определенные требования к качеству связи до сервера +1 тока не понял что за фишка. Меня жутко Word раздаражает со своим автосохранением когда его не просят :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:13 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
ln123автор Один из минусов (невозможность открыть какую-то другую форму приложения и поработать там, а потом вернуться к незаконченной работе) я уже упоминал. Вы решили это проигнорировать. Здесь как раз проблем нет, Алексей выше об этом писал, открывается в новом потоке новое соединение с базой и все работаем себе и горя не знаем Это как раз и есть проблема. У вас каждая формочка свое соединение с БД окрывает? На мой взгляд - абсурд. ln123Насколько я понимаю то что пишет Petro123 имеется ввиду объект который я является неделимым для пользователя т.к. пользователь запутаться не может все изменения относятся к одному объекту предметной области их нужно все дружно либо сохранить либо нет. Ну так если объект такой простой, что пользователь в нем запутаться не может, то неужели программист запутается и не сможет все данные за один раз на сервере сохранить? Ну а вообще практика показывает, что если объект отображается в более, чем одном экране, то пользователь вполне успешно в нем "запутывается". ln123То как реализована работа с транзакциями на то что делает пользователь вообще ни как влиять не должно. Это вопрос чисто технический.Несомненно. Но у меня перед глазами как раз обратный пример - сделано с использованием вами любимых длинных транзакций. И именно из-за них мне приходится пять экземпляров приложения запускать. И постоянно на блокировки нарываться. Зато писать кому-то было легче. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:16 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Двоечник,ты забыл поставить REPEATABLE READ, о котором ты говорил выше.По default'у стоит READ COMMITED. С МySql не знаком(там до недавних пор транзакций не было совсем). Вот тебе пример для MS SQL Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
для другого соединения Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:18 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
x Это как раз и есть проблема. У вас каждая формочка свое соединение с БД окрывает? На мой взгляд - абсурд. Главное: 1) Решение поставленной задачи. 2) Удобство пользователя. 3) Удобство программиста. 4) Приемлимые требования к ресурсам. Исходя из этого, куча соединений не бред. Оговрюсь, что у меня потоки получают соединение из "пулла". Кол-во открытых соединений равно кол-ву одновременно выполняющихся запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:22 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Bogdanov Andrey Это как раз и есть проблема. У вас каждая формочка свое соединение с БД окрывает? На мой взгляд - абсурд. да не абсурд это. Мелкомягкие рекомендуют. Для ваших же коротких транзакций. :) А что бы не долго открывались в СУБД пул есть (который Морозов сам написал) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:31 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Bogdanov Andrey И именно из-за них мне приходится пять экземпляров приложения запускать. И постоянно на блокировки нарываться. Зато писать кому-то было легче. не приложения , а ФОРМЫ с компонентом коннекта на ней или Формы с пристёгнутым ДатаМодулем с оным. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:33 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
[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 И может хватит показывать свою глупость? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:35 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
_Петро123(который Морозов сам написал) Это намек на изобретение велосипеда? Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:39 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
_Петро123 не приложения , а ФОРМЫ с компонентом коннекта на ней или Формы с пристёгнутым ДатаМодулем с оным.У вас может быть и формы. А вот у того с чем мне приходится работать надо именно пяток экземпляров приложения запускать. И это потому-что программистам так писать было легче :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 17:46 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Если MySql версионник, то локов не будет. Однако: 1. Перед этим неоднократно утверждалось, что будет одинаковое поведение, как для версионников, так и для блокировочников.Выяснили, что это не так. 2.Код, который приводился для увеличения счетчиков через MAX из-за кастрации автоинкриментов в угоду переносимости, тоже работать не будет для версионников. Теперь понятно такое горячее желание иметь REPEATABLE READ автор Только смею скромно заметить, что принципиальной разницы "READ COMMITED" и "REPEATABLE READ" относительно возникающих блокировок нет. Еще один перл.А зачем тогда нужно такое кол-во умных слов, если нет никакой разницы? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 19:03 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
SeVa1. Перед этим неоднократно утверждалось, что будет одинаковое поведение, как для версионников, так и для блокировочников. Выяснили, что это не так. Бред. Мы сейчас обсуждаем, блокировку базы при длинных транзакциях (что на MSSQL будут блокировки) В моей среде "длинных транзакций" нет, поэтому результат будет идентичный для блокировочников и версионников. SeVa2.Код, который приводился для увеличения счетчиков через MAX из-за кастрации автоинкриментов в угоду переносимости, тоже работать не будет для версионников. Бред. Этот код работать будет всегда. Что значит "кастрация автоинкрементов"? Автоинкремены поддерживаются. Где вы прочитали про "такое горячее желание иметь REPEATABLE READ" ? Несколько сообщений назад я написал "REPEATABLE READ", что бы опровергнуть ваше выражение "Если выше, то один работает, а остальные отдыхают". SeVaАлексейТолько смею скромно заметить, что принципиальной разницы "READ COMMITED" и "REPEATABLE READ" относительно возникающих блокировок нет. Еще один перл.А зачем тогда нужно такое кол-во умных слов, если нет никакой разницы? относительно возникающих блокировок В любом из этих 2х режимов SELECT в другом из соединений будет остановлен до завершения транзакции. Еще раз прошу, хватит писать ерунду. Каждый человек может быть не прав, дальше будет только хуже всем. Я пишу и читаю сообщения для того, что бы понять - где я не прав?. Был бы на 100% уверен в своих знаниях и выборе, молча бы делал свое дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 19:33 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Petro123 пишет: > Для этого нужна длинная транзакция на кнопку "Редактировать", чтобы > потом работать с остальными данными в БД не заботясь о чтении сырых > данных другими пользователями - коннектами. А это вопрос или утверждение ? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 19:38 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
И с таким человеком я общаюсь? 4594521 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 19:41 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
Алексей МорозовSeVa1. Перед этим неоднократно утверждалось, что будет одинаковое поведение, как для версионников, так и для блокировочников. Выяснили, что это не так. Бред. Мы сейчас обсуждаем, блокировку базы при длинных транзакциях (что на MSSQL будут блокировки) В моей среде "длинных транзакций" нет, поэтому результат будет идентичный для блокировочников и версионников. SeVa2.Код, который приводился для увеличения счетчиков через MAX из-за кастрации автоинкриментов в угоду переносимости, тоже работать не будет для версионников. Бред. Этот код работать будет всегда. Что значит "кастрация автоинкрементов"? Автоинкремены поддерживаются. этот топик показывает: - что ваше Демо пока неготово для демонстрации Универсальной среды разработки с БД FireBird - что длинные транзакции нужны в случаях правки сложных объектов - что Ваша среда не сможет изменять код старта транзакции внутри блока BEGIN END по каким то своим соображениям - что в СУБД FireBird ваш код с MAX вставит одинаковый код накладной и получит ошибку. авторЭтот код работать будет всегда. работать он будет, учитывая вашу энергию. Только неправильно. ЗЫ. И не переходите на личности плз. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 20:55 |
|
Новая Среда разработки. Зачем длинные транзакции?
|
|||
---|---|---|---|
#18+
авторВ моей среде "длинных транзакций" нет,поэтому результаты будут одинаковы Сколько открыта транзация совершенно неважно,результы будут разные в силу коренного отличия механизмов работы.Блокировочник и версионник отличаются так же,как SeVa c SQL.ru и SeVa AspNetMania.com. авторЧтоб тебе всю жизнь изучать С++ для написания калькулятора Дальнейших и продолжительных успехов в написании своей среды для домашней бухгалтерии. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2008, 21:27 |
|
|
start [/forum/topic.php?fid=33&startmsg=35654923&tid=1548667]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 321ms |
total: | 573ms |
0 / 0 |