Re[39]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 17:35
Оценка: -1
Здравствуйте, adontz, Вы писали:


kuj>>Сценарий, приведенный вами, как-раз элементарно решается средствами NHibernate — открыв транзакцию БД в начале, и закоммитив ее после добавления автомобиля.


A>Hibernate это уровень DAL и поддерживать бизнес транзакции он не в состоянии. То что ты указал это не решение средствами Hibernate, потому что ты открываешь транзакцию БД. Если у тебя бизнес-транзакция CreateUser+CreateCar+SendSmsToAdmin, то Hibernate тут ничем не поможет, потому что бизнес-транзакции вне компетенции Hibernate.


CreateUser+CreateCar+CommitTransaction+SendSmsToAdmin. CommitTransaction все накопленные в сессии данные сбрасывает внутри одной транзакции в базу.

Вы все еще не понимаете?

kuj>>Более того, для такого простого сценария нет никакой необходимости держать транзакцию открытой все это время:

kuj>>Создается объект User, в коллекцию Cars добавляется автомобиль, а по окончании делается пакетный Flush в БД внутри транзакции (с гораздо меньшим временем жизни). Все.

A>Время жизни не имеет абсолютно никакого принципиального значения в данном случае.

A>Суть претензии в том, что в задачи ORM не вхоит организация бизнес транзакций.
В задачи хранимых процедур организация бизнес-транзакций тоже не входит. Все еще не понимаете?
A>Либо эта задача решается в лоб, что приводит к написания большого объёма достаточно сложного кода, либо сваливается на БД в которых транзакции уже есть.
(вздыхая) почитайте чтоли на досуге про BTP и как бизнес-транзакции могут существовать без помощи транзакций БД...
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[40]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 17:39
Оценка: -1
Здравствуйте, kuj, Вы писали:

kuj>CreateUser+CreateCar+CommitTransaction+SendSmsToAdmin. CommitTransaction все накопленные в сессии данные сбрасывает внутри одной транзакции в базу.

kuj>Вы все еще не понимаете?

Это ты не понимаешь, что если SMS не отослался, то создание юзера надо откатить.
CreateUser+CreateCar+SendSmsToAdmin+CommitTransaction

БД не пуп земли.

A>>Время жизни не имеет абсолютно никакого принципиального значения в данном случае.

A>>Суть претензии в том, что в задачи ORM не вхоит организация бизнес транзакций.
kuj>В задачи хранимых процедур организация бизнес-транзакций тоже не входит. Все еще не понимаете?

В задачи БД входят транзакции которые используют для транзакционирования логики не имеющей к БД прямого отношения. Это факт, ты сам только что так предлагал.

A>>Либо эта задача решается в лоб, что приводит к написания большого объёма достаточно сложного кода, либо сваливается на БД в которых транзакции уже есть.

kuj>(вздыхая) почитайте чтоли на досуге про BTP и как бизнес-транзакции могут существовать без помощи транзакций БД...

А я и не отрицаю что могут. просто это не дёшео. А ты кстати сам давно читал? А то весь дня два как про бизнес-транзакции знаешь. И когда только успел? Молодец!
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[39]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 17:40
Оценка: -1
Здравствуйте, adontz, Вы писали:


C>>В конце регистрации — коммит всей накопленой информации в базу в одной транзакции. Тогда у нас гарантировано система всегда будет в целостном состоянии — если у нас во время коммита в сервер приложений попадет метеорит, то транзакция в базе данных потом спокойно откатится по таймауту. С точки зрения остальных клиентов все изменения тоже атомарны.


A>вот об том и речь., что ты не в состоянии дёшево отганизовать транзакции вне БД и делаешь две операции CreateUserWithCar и CreateCar имеющие много общего кода (копи-паст, если по простому).


Я Вам уже говорил. И еще раз повторю. Ликбез: все транзакции БД выполняются ТОЛЬКО в БД. Понятие бизнес-транзакция высокоуровневое и оно никоим образом не завязано на конкретной БД с т.з. бизнес-логики.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[41]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 17:40
Оценка: -1
Здравствуйте, adontz, Вы писали:


A>>>Объясни как и не хами. Я привёл несколько сценариев когда обеспечивает. Аргументированно опровергни.

kuj>>Что опровергнуть? Что NHibernate уступает ХП в плане управления транзакциями БД? Вам разные люди твердят, что ничем не уступает, и напротив предоставляет дополнительный инструментарий, а Вы продолжаете упорствовать?
kuj>>Читайте документацию по NHibernate (Hibernate), ADO.NET (JDBC) пока не поймете этого. Заниматься восполнением пробелов в вашем образовании я не собираюсь.

A>Опять нет ответа, одно хамство. Это уже закономерность какая-то...


Вам уже сто раз ответили при чем совершенно разные люди. Разуйте глаза и закройте рот.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[40]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 17:45
Оценка: -1
Здравствуйте, kuj, Вы писали:

kuj>Я Вам уже говорил. И еще раз повторю. Ликбез: все транзакции БД выполняются ТОЛЬКО в БД. Понятие бизнес-транзакция высокоуровневое и оно никоим образом не завязано на конкретной БД с т.з. бизнес-логики.


Вот именно. Только организовать эти транзакции вне БД тебе слишком сложно и проще засунуть в БД всё что туда вообще можно засунуть.
Ты сам сказал

Сценарий, приведенный вами, как-раз элементарно решается средствами NHibernate — открыв транзакцию БД в начале, и закоммитив ее после добавления автомобиля.

Теперь давай тоже самое, но без "открыв транзакцию БД в начале", потому что, как ты правильно заметил, "бизнес-транзакция высокоуровневое и оно никоим образом не завязано на конкретной БД".
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[42]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 17:46
Оценка:
Здравствуйте, kuj, Вы писали:

kuj> Разуйте глаза и закройте рот.


То есть ответа ты не знаешь, да?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[41]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 18:04
Оценка: -1
Здравствуйте, adontz, Вы писали:

kuj>>CreateUser+CreateCar+CommitTransaction+SendSmsToAdmin. CommitTransaction все накопленные в сессии данные сбрасывает внутри одной транзакции в базу.

kuj>>Вы все еще не понимаете?

A>Это ты не понимаешь, что если SMS не отослался, то создание юзера надо откатить.

A>CreateUser+CreateCar+SendSmsToAdmin+CommitTransaction

A>БД не пуп земли.

В таком случае Вам никто и ни что не поможет, т.к. нельзя сделать rollback уже отправленной SMS. Единственное, что приходит на ум добавить это добавить информацию по SMS в специальную таблицу в БД, с которой работает отдельный сервис в режиме чтения, рассылая эти SMS.

A>>>Время жизни не имеет абсолютно никакого принципиального значения в данном случае.

A>>>Суть претензии в том, что в задачи ORM не вхоит организация бизнес транзакций.
------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
kuj>>В задачи хранимых процедур организация бизнес-транзакций тоже не входит. Все еще не понимаете?
A>В задачи БД входят транзакции которые используют для транзакционирования логики не имеющей к БД прямого отношения. Это факт, ты сам только что так предлагал.
---^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Мда... клиника. Вы сами себе противоречите. Определитесь уж: входит или не входит. А заодно разберитесь с понятием бизнес-транзакция и поднапрягите извилину и ответьте на вопрос: должен ли DAL знать что-то о бизнес-логике или не должен.

Намек: транзакции СУБД != бизнес-транзакции. Это понятия совершенно разные и их даже сравнивать нельзя.

A>>>Либо эта задача решается в лоб, что приводит к написания большого объёма достаточно сложного кода, либо сваливается на БД в которых транзакции уже есть.

kuj>>(вздыхая) почитайте чтоли на досуге про BTP и как бизнес-транзакции могут существовать без помощи транзакций БД...

A>А я и не отрицаю что могут. просто это не дёшео. А ты кстати сам давно читал? А то весь дня два как про бизнес-транзакции знаешь. И когда только успел? Молодец!

Н-да, смешную вы там травку курите. Поделитесь?
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[41]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 18:06
Оценка: -1
Здравствуйте, adontz, Вы писали:

kuj>>Я Вам уже говорил. И еще раз повторю. Ликбез: все транзакции БД выполняются ТОЛЬКО в БД. Понятие бизнес-транзакция высокоуровневое и оно никоим образом не завязано на конкретной БД с т.з. бизнес-логики.


A>Вот именно. Только организовать эти транзакции вне БД тебе слишком сложно и проще засунуть в БД всё что туда вообще можно засунуть.

A>Ты сам сказал
A>

A>Сценарий, приведенный вами, как-раз элементарно решается средствами NHibernate — открыв транзакцию БД в начале, и закоммитив ее после добавления автомобиля.

A>Теперь давай тоже самое, но без "открыв транзакцию БД в начале", потому что, как ты правильно заметил, "бизнес-транзакция высокоуровневое и оно никоим образом не завязано на конкретной БД".

Речь о транзакциях С У Б Д. Читаем по буквам медленно и вслух, и повторяем до просветления.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[42]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 18:48
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>В таком случае Вам никто и ни что не поможет, т.к. нельзя сделать rollback уже отправленной SMS. Единственное, что приходит на ум добавить это добавить информацию по SMS в специальную таблицу в БД, с которой работает отдельный сервис в режиме чтения, рассылая эти SMS.


Речь о другом. Если мне не удалось отослать SMS, то надо откатить создание пользователя. Понятно, что SMS это просто пример out-of-database action.

A>>>>Время жизни не имеет абсолютно никакого принципиального значения в данном случае.

A>>>>Суть претензии в том, что в задачи ORM не вхоит организация бизнес транзакций.
kuj>------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
kuj>>>В задачи хранимых процедур организация бизнес-транзакций тоже не входит. Все еще не понимаете?
A>>В задачи БД входят транзакции которые используют для транзакционирования логики не имеющей к БД прямого отношения. Это факт, ты сам только что так предлагал.
kuj>---^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

kuj>Мда... клиника. Вы сами себе противоречите. Определитесь уж: входит или не входит. А заодно разберитесь с понятием бизнес-транзакция и поднапрягите извилину и ответьте на вопрос: должен ли DAL знать что-то о бизнес-логике или не должен.


Не хами.

kuj>Намек: транзакции СУБД != бизнес-транзакции. Это понятия совершенно разные и их даже сравнивать нельзя.


Я с этим согласен, но ты потом приводишь решения, которые противоречат твоим же словам. Решение основывающиеся именно на транзакциях БД.

Кстати ты почему-то всё время акцентируешь на возможности откатить. В то же время уровень изоляции не менее важен. Вот пример задачи на котрой это отчётливее проявляется.
Есть табличка Users. После добавления туда пользователя с заданным логином (добавляем для резервации логина, например) распечатывается контракт. После подписывания контракта лист сканируется и загружается в БД. Теперь, внимание, условие: пользователи, не подписавшие контракт, не должны светится в списке пользователей нигде. Подобная бизнес-транзакция может занимать минут 30, а то и пару суток. Решать эту задачу методом "открыв транзакцию БД в начале" не выйдет.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[42]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 19:20
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Речь о транзакциях С У Б Д. Читаем по буквам медленно и вслух, и повторяем до просветления.


Это не так, речь как раз о бизнес-транзакциях. Я описал сценарий бизнес-транзакции в этом сообщении
http://www.rsdn.ru/forum/message/2674922.1.aspx
Автор: adontz
Дата: 29.09.07

его то мы и обсуждали в дальнейшем.

Cyberax свёл всё к БД-транзакциям
http://www.rsdn.ru/forum/message/2674954.1.aspx
Автор: Cyberax
Дата: 29.09.07


Я на это указал
http://www.rsdn.ru/forum/message/2674961.1.aspx
Автор: adontz
Дата: 29.09.07


Ты зачем-то заявил, что бизнес-транзакция и бд-транзакция разные вещи. Ну да ладно, сказал и чёрт с ним.
http://www.rsdn.ru/forum/message/2674965.1.aspx
Автор: kuj
Дата: 29.09.07


Я попросил предоставить реализацию бизнес-транзакции без использования БД-транзакции
http://www.rsdn.ru/forum/message/2674968.1.aspx
Автор: adontz
Дата: 29.09.07


И тут ты вдруг заявляешь что мы не обсуждаем бизнес-транзакции. И где логика в твоих собщениях?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[43]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 19:28
Оценка:
Здравствуйте, adontz, Вы писали:

kuj>>В таком случае Вам никто и ни что не поможет, т.к. нельзя сделать rollback уже отправленной SMS. Единственное, что приходит на ум добавить это добавить информацию по SMS в специальную таблицу в БД, с которой работает отдельный сервис в режиме чтения, рассылая эти SMS.


A>Речь о другом. Если мне не удалось отослать SMS, то надо откатить создание пользователя. Понятно, что SMS это просто пример out-of-database action.

В таком случае (когда Вам НЕ надо откатывать SendSMS) как раз все очень просто — коммит делается после SendSMS в том случае, если она вернула true (или еще как-то уведомила).


kuj>>Намек: транзакции СУБД != бизнес-транзакции. Это понятия совершенно разные и их даже сравнивать нельзя.


A>Я с этим согласен, но ты потом приводишь решения, которые противоречат твоим же словам. Решение основывающиеся именно на транзакциях БД.

Еще раз повторяю: бизнес-транзакция понятие высокоуровневое и физически в программе их можно оформлять разными способами — транзакции БД это лишь один из способов. С этим способом ORM справляются как минимум не хуже ХП, а скорее даже лучше благодаря более высокоуровневому инструментарию (как-то структурированная обработка исключений или уже упомянутый механизм автоматической оптимистичной блокировки).

A>Кстати ты почему-то всё время акцентируешь на возможности откатить. В то же время уровень изоляции не менее важен. Вот пример задачи на котрой это отчётливее проявляется.

A>Есть табличка Users. После добавления туда пользователя с заданным логином (добавляем для резервации логина, например) распечатывается контракт. После подписывания контракта лист сканируется и загружается в БД. Теперь, внимание, условие: пользователи, не подписавшие контракт, не должны светится в списке пользователей нигде. Подобная бизнес-транзакция может занимать минут 30, а то и пару суток. Решать эту задачу методом "открыв транзакцию БД в начале" не выйдет.
Как же до вас туго доходит... А ведь про этот механизм в Hibernate уже даааааавно Вам говорили. Чем Вы слушали?

http://www.hibernate.org/hib_docs/v3/reference/en/html/transactions.html#transactions-basics-apptx

Читаем до просветления и завязываем этот спор на ровном месте.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[43]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 19:30
Оценка: :)
Здравствуйте, adontz, Вы писали:

A>Я попросил предоставить реализацию бизнес-транзакции без использования БД-транзакции

A>http://www.rsdn.ru/forum/message/2674968.1.aspx
Автор: adontz
Дата: 29.09.07


A>И тут ты вдруг заявляешь что мы не обсуждаем бизнес-транзакции. И где логика в твоих собщениях?


Логика в теме топика.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[44]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 20:07
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>В таком случае (когда Вам НЕ надо откатывать SendSMS) как раз все очень просто — коммит делается после SendSMS в том случае, если она вернула true (или еще как-то уведомила).


Всё не так просто, потому что ты забываешь об изоляции транзакции. Пока не пришло подтверждение доставки SMS, недавно соданные User и Car не должны где-либо фигурировать.

kuj>Еще раз повторяю: бизнес-транзакция понятие высокоуровневое и физически в программе их можно оформлять разными способами — транзакции БД это лишь один из способов.


Да, но других ты не привёл.

kuj>http://www.hibernate.org/hib_docs/v3/reference/en/html/transactions.html#transactions-basics-apptx

kuj>Читаем до просветления и завязываем этот спор на ровном месте.

Там только try/catch решения. Они не предоставляют изоляции и не защищают от аппаратных сбоев.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[44]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 20:08
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Логика в теме топика.


То есть по существу вопроса тебе ответить нечего, так и запишем.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[45]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 20:35
Оценка:
Здравствуйте, adontz, Вы писали:

kuj>>В таком случае (когда Вам НЕ надо откатывать SendSMS) как раз все очень просто — коммит делается после SendSMS в том случае, если она вернула true (или еще как-то уведомила).

A>Всё не так просто, потому что ты забываешь об изоляции транзакции. Пока не пришло подтверждение доставки SMS, недавно соданные User и Car не должны где-либо фигурировать.
Я ничего не забываю. Где они по-вашему будут фигурировать, если мы еще не выполняли flush сессии в БД.

kuj>>Еще раз повторяю: бизнес-транзакция понятие высокоуровневое и физически в программе их можно оформлять разными способами — транзакции БД это лишь один из способов.


A>Да, но других ты не привёл.

Привел. Читайте внимательнее.

kuj>>http://www.hibernate.org/hib_docs/v3/reference/en/html/transactions.html#transactions-basics-apptx

kuj>>Читаем до просветления и завязываем этот спор на ровном месте.

A>Там только try/catch решения. Они не предоставляют изоляции и не защищают от аппаратных сбоев.

Сдаюсь... это клиника. Вы даже не удосуживаетесь почитать, а сразу начинаете какую-то ахинею нести. Клиника.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[45]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 20:35
Оценка: -1
Здравствуйте, adontz, Вы писали:

kuj>>Логика в теме топика.


A>То есть по существу вопроса тебе ответить нечего, так и запишем.


Я уже ответил по теме топика при чем в нескольких разных ветках. Если Вы не можете открыть гугл и найти информацию по BTP, то я Вам ничем помочь не могу. Клиника.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[46]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 21:03
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Я ничего не забываю. Где они по-вашему будут фигурировать, если мы еще не выполняли flush сессии в БД.


ОК пришло подтверждение и тут же вырубилась сеть. Получается SMS есть, а юзера нет. Как ни крути, а целостность ты не обеспечишь.

A>>Да, но других ты не привёл.

kuj>Привел. Читайте внимательнее.

Дай ссылку.

A>>Там только try/catch решения. Они не предоставляют изоляции и не защищают от аппаратных сбоев.

kuj>Сдаюсь... это клиника. Вы даже не удосуживаетесь почитать, а сразу начинаете какую-то ахинею нести. Клиника.

Прочитал и не нашёл. Если это там есть, то процитируй. Не будь голословным и не хами.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[46]: Оформление работы с БД в корпоративных приложениях -
От: adontz Грузия http://adontz.wordpress.com/
Дата: 29.09.07 21:04
Оценка:
Здравствуйте, kuj, Вы писали:

kuj>Я уже ответил по теме топика при чем в нескольких разных ветках. Если Вы не можете открыть гугл и найти информацию по BTP, то я Вам ничем помочь не могу. Клиника.


Я то думал ты что-то действительно знаешь. В гугл послать можно будучи полным дилетантом. Ты сам что-то можешь сказать или только охать будешь?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[47]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 21:42
Оценка:
Здравствуйте, adontz, Вы писали:


kuj>>Я уже ответил по теме топика при чем в нескольких разных ветках. Если Вы не можете открыть гугл и найти информацию по BTP, то я Вам ничем помочь не могу. Клиника.


A>Я то думал ты что-то действительно знаешь. В гугл послать можно будучи полным дилетантом. Ты сам что-то можешь сказать или только охать будешь?


То есть Вы не можете открыть гугл и найти описание BTP (расшифровка аббревиатуры фигурирует как минимум в двух моих сообщения за сегодня) ? м-даа....
... << RSDN@Home 1.2.0 alpha rev. 746>>
Re[47]: Оформление работы с БД в корпоративных приложениях -
От: kuj  
Дата: 29.09.07 21:45
Оценка:
Здравствуйте, adontz, Вы писали:

kuj>>Я ничего не забываю. Где они по-вашему будут фигурировать, если мы еще не выполняли flush сессии в БД.


A>ОК пришло подтверждение и тут же вырубилась сеть. Получается SMS есть, а юзера нет. Как ни крути, а целостность ты не обеспечишь.


Н-дааа..... Может Вы бот? Такой непроходимой тупости я еще не встречал... — про SMS я уже говорил и давал пример решения этой проблемы пару сообщений тому назад.
... << RSDN@Home 1.2.0 alpha rev. 746>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.