MySQL & distributed Transactions

29 отговора 987 прегледа
#1

MySQL & distributed Transactions

Prawia malko prouchwane i ot kratko preglejdane na dokumentaciata na MySQL ne mojaha da razbera dali MySQL poddyrja niakakyw protokol za Distributed Transactions. Naprimer Oracle i DB2 poddryjat XA Transactions Protocol a MSSQL poddryja OLE Transactions Protocol. Ta mi e intersno dali MySQL iam takiwa wyzmojnosti?
Mersi predwaritelno!

Отговор
в отговор на RepeatableRead #2

Re: MySQL & distributed Transactions

MySQL Server supports transactions with the InnoDB and BDB Transactional table handlers. See section 7 MySQL Table Types. InnoDB provides ACID compliancy.

за още....

Отговор
в отговор на RepeatableRead #3

Re: MySQL & distributed Transactions

Moje bi ne e za tova koeto pitash, no ako imash J2EE app server (koito poddarja transakcii), i polzvash nego za pravene na transakcii s MySQL i kakvoto tam oshte ti triabva, ne se li reshava vaprosa? Ili bazata danni sashto triabva da poddarja distributed transactions vutreshno?

НЕ МЕ ЕБЕ КАК Е ВУТЕ, АЗ ГЛЕДАМ ДА СЪМ ДОБРЕ
Отговор
в отговор на Topбaлaн #4

Re: MySQL & distributed Transactions

Towa sa localni tranzakcii. Stawa duma za tranzakcia koito da se commit-ne ili rollback-ne w poweche ot edin server. Naprimer w realna situacia me se e sluchwalo w edna tranzakcia da se insert-nat i update-nat zapisi w MSSql i Oracle ednowremenno.
Taka ili inache az prouchih i se okaza che niama. JBoss imat niakawi nesta pisani ama maj ne sa sywsem stabilni. Pone taka pisheshe.

Отговор
в отговор на RepeatableRead #5

Re: MySQL & distributed Transactions

абе май не се среща distributed transaction на сървъра с документацията им...

как мислиш, ако няма "локални" дали ще има "глобални"

Отговор
в отговор на Topбaлaн #6

Re: MySQL & distributed Transactions

Има локални но няма distributed или глобални.
виж тук [линк] и по специално точка 15 и 16

Отговор
в отговор на RepeatableRead #7

Re: MySQL & distributed Transactions

Доколкото знам, разпределени транзакции се поддържат само от Oracle и от MS SQL Server. Вярно, че това беше вярно за времето преди повече от година.

Отговор
в отговор на OracleDBA #8

абе той този пазар е сравнително устойчив...

така че, и да се е променило....едва ли ще е много променено
аз си мислех и за информикс ама те май залязват напоследък...

Отговор
в отговор на RepeatableRead #9

Re: MySQL & distributed Transactions

Нарочно изчаках за да видя накъде ще се развие тази тема

Ако обобщим нещата - за да се подържат (а и въобще за да се дефинират) Разпределени Транзакции е необходимо едно нещо - Cluster.

MySQL няма такава поддържка на никакво ниво и поне преди 5.0 не се планира.

Засега MySQL поддържа Master->Slave репликация (която може да се завърти в кръгче) но това е друга работа.

salle.online.bg/sig
Отговор
в отговор на salle #10

Re: MySQL & distributed Transactions

Distributed транзакциите нямат нищо общо с клъстерите. Те дават възможност на различни ресурсни менаджери (разбирай бази от данни, message queue и др.) да участват в една транзакция която е може да се синхрнонизира между тях.

Отговор
в отговор на RepeatableRead #11

Re: MySQL & distributed Transactions

Както вече сме коментирали и преди Cluster е адски размито понятие.



Много често се определя като "Среда за разпределена обработка (между много сървъри)"

А в случая номерът е, че и дефиницията на Транзакция може да се размие

Кой точно очакваш да поддържа транзакцията? SQL сървъра ли или MId-tier приложение което работи "над" SQL сървър(и).

И какво следва от това? Ако очакваш SQL сървъра да поддържа разпределени транзакции това означава, че трябва да има някакъв тип клъстеризация защото ти е необходима двупосочна комуникация Сървър <-> Сървър (най-малкото)

Ако за транзакциите "отговаря" друго приложение нещата са малко по-различни нали?

Е да има случаи когато с гръмкото име Клъстер се кръщава Master+HotBackup сървър където целта е същата като на RAID контролерите ама това пак е встрани от темата.

Въпросът ти беше поддържа ли MySQL разпределени транзакции и аз ти отговорих вече.

salle.online.bg/sig
Отговор
в отговор на salle #12

Re: MySQL &amp; distributed Transactions

Мисля, че първо базата данни трябва да е разпределена. Това просто е мрежа от няколко бази данни (възли на базата), разположени на една или повече машини. Едно приложение може да има достъп до няколко от тези бази и да update-ва данните им.

Разпределената транзакция включва оператори, които влияят на данните върху повече от един възел на разпределената база (може да включва и оператори, които действат само върху локалната база).

Базата трябва да гарантира, че всички оператори, разпределени и неразпределени, едновременно се commit-ват или се rollback-ват (езикът ми е ужасен, но...). И това трябва да е невидимо за всички други транзакции на всички възли. Oracle (а вероятно и всеки, който иска да реализира разпределена база) въвеждат тук механизма на двуфазния commit. Т.е. commit се разделя на две: commit по възлите и след това синхронизиране на възлите помежду им.

Изобщо нищо в релационните бази не е тривиално. А за разпределените бази и, съответно, разпределените транзакции - да не говорим. Направо не ми го побира умът.

Така че си мисля, че ако някъде бъдат реализирани разпределени транзакции, това ще бъде събитие, за което ще се говори много.

И накрая. Наскоро един приятел ми каза какво е възражението на IBM срещу разпределената обработка: Ако Господ искаше разпределена обработка, казват те, щеше да постави мозъка ни в пръстите.

Отговор
в отговор на salle #13

ако клъстър е размито то транзакция не е.....

обикновено отговаряш много точно, но този път оставам с впечатление че се измъкваш....

Distributed transactions can span heterogeneous transaction-aware data resources and may include a wide range of activities such as retrieving data from a SQL Server database, reading messages from a Message Queue Server, and writing to other databases. Programming of distributed transactions is simplified by software that coordinates commit and abort behavior and recovery across several data resources

ясно е, че идвам от MS Sql Server но съм убеден, че и за оракала има подобни определения....

идеята е транзакцията да се поддържа от SQL сървъра с цел осигуряване целостта на данните....
не бих искал да се впускаме отново в обсъждане на недостатъците и предимствата на MySql, но мисля, че отговора е еднозначен - не не поддържа Distributed Transactions.

Отговор
в отговор на Topбaлaн #14

Re: ако клъстър е размито то транзакция не е.....

добре - уточнявам.

За транзакция съм съгласен, че дефиницията е стриктна.

Имах предвид "Поддръжка на транзакции" - кой всъщност се очаква да поддържа транзакциите? Или още по точно - на кое ниво от приложението? Тук е размиването.

Извадка от текста, който ти цитираш:

"Programming of distributed transactions is simplified by software that coordinates .... across several data resources"

Преведено:
Програмирането на разпределените транзакции се опростява от софтуер който координира .... върху много ресурси от данни"

Така. Хайде сега ти ми обясни кое нещо какво е във този текст?
Само две неща са достатъчни да се дефинират мъничко по-различно за да направиш десетки различни интерпретации:

"софтуер който" -> кой е този софтуер?
"ресурси от данни" -> весело нали?
променлива, масив, файл, База Данни - всяко едно от тези неща мажеш да ги приемеш като "ресурс от данни"

По тази логика използването на mutex-и при pthreads осигурява "транзакции" - ядрото на операционната система (софтуер) с тяхна помощ осугирява "цялостност" на промелнивите (ресурси) в програмата



Не виждам откъде си останал с впечатление, че се измъквм. Мисля, че достатъчно ясно казах, че преди 5.0 в MySQL такива неща няма да има

Освен ако някой не вземе да дефинира използването на двупосочна репликация върху Innod таблици като такава баш транзакция. Аз не бих го направил.

Всъщност най-ценния отговор по темата е на човека скромно нарекъл себе си OracleDBA

От него трябва да се поучим

salle.online.bg/sig
Отговор
в отговор на salle #15

ами така ми прозвуча....

всъщност, ти си прав...
отговори още в първите два реда....
но последва едно дълго и объркващо обяснение, в което отговора се загуби, потъна....
накрая останах с впечатление, че едва ли не тези транзакции се поддържат...

то ако разделим нещата на: потребител, данни и софтуер...
няма проблем, този тип транзакции може да се реализират и със софтуерно решение на базата на MySql...тук вече ще трябва повече да говорим за сигурност...

Отговор
в отговор на Topбaлaн #16

Re: ако клъстър е размито то транзакция не е.....

Dobre, znachi distributed transaction e transakcia koiato vkluchva kakto SQL baza danni, taka i MSMQ v obshtia sluchai? Ako da, to SQL Server niama nishto obshto s tova. Distributed transactions se poddarjat vav windows ot MS DTC, koito parvonachalno beshe otdelen produkt, posle beshe vkluchen v MTS a sega s COM+ e chast ot samia windows. T.e. distributed transactions sa funkcia ne na bazata danni a na transaction coordinator-a. Saotvetno, MSDTC moje da raboti sas MySQL pri polojenie che ima ODBC ili OLEDB driveri. Taka che pravilniat otgovor e che MySQL poddarja distributed transactions tochno tolkova kolkoto i SQL Server. V Oracle poznaniata mi sa mnogo slabi i nishto ne moga da kaja po tozi vapros. Polojenieto sashtoto li e?

НЕ МЕ ЕБЕ КАК Е ВУТЕ, АЗ ГЛЕДАМ ДА СЪМ ДОБРЕ
Отговор
в отговор на Topбaлaн #17

Re: ами така ми прозвуча....

> няма проблем, този тип транзакции може да се реализират и със
> софтуерно решение на базата на MySql...
Vseki J2EE server poddarja distributed transactions, nai-malkoto mejdu 2 JDBC-enabled bazi danni (kakvato MySQL viarvam e), kakto i s (primerno WebSphere) MQSeries i drugi podobni.

> тук вече ще трябва повече да говорим за сигурност...
Kakvo tochno imash v predvid?

НЕ МЕ ЕБЕ КАК Е ВУТЕ, АЗ ГЛЕДАМ ДА СЪМ ДОБРЕ
Отговор
в отговор на OracleDBA #18

Re: MySQL &amp; distributed Transactions

> Така че си мисля, че ако някъде бъдат реализирани разпределени
> транзакции, това ще бъде събитие, за което ще се говори много.
Primeri - VMS/ACMS servera v nachaloto na 80-te, MS DTC (1996), vseki J2EE server (ot 1998). Siguren sam che ima i neshto takova po mainfraimite ot vremeto na baba mi ama ne sam zapoznat.

> Ако Господ искаше разпределена обработка щеше да постави мозъка
> ни в пръстите.
Aha. Moje bi se e boial da stanem bogopodobni ako mojem razpredeleno da si transactvame prastite?

НЕ МЕ ЕБЕ КАК Е ВУТЕ, АЗ ГЛЕДАМ ДА СЪМ ДОБРЕ
Отговор
в отговор на Perin #19

какво имам предвид?

ами какво ще стане ако угасне тока?

Отговор
в отговор на Perin #20

за MS Sql Server си прав...

има такъв сървис...
но не съм убеден, че ще е въодушевен да работи с други бази данни...
но не съм и чел, никога до сега не ми е минавало през ум да проверя такова нещо.....

Отговор