Първоначалният въпрос беше дали MySQL поддържа разпределени транзакции. Този въпрос според мен определи и контекста на дискусията - че става дума за релационни бази данни.
(Защото в противен случай ето - наскоро една позната, касиерка в банка, ми каза: И ние правим транзакции. Аз пък ще добавя, че сигурно са разпределени.)
Следователно, ако се ограничим в контекста на дискусията, тогава ще говорим само за релационни бази данни. Тук нямат място никакви позовавания на продукти, които са работили в среда на VMS и т.н. Аз самият съм работил в Oracle за VMS. Няма такова нещо, като разпределена обработка.
Пък и за каква разпределена обработка може да става дума в началото на 80-те години. Нали преди това системата трябва да бъде разделена на Клиент и на Сървър и да е възможно много клиенти да се свързват към един сървър, както и един клиент да се свързва към множество сървъри. Първата реализация на Клиент-Сървър е на Oracle във версия 5.0/5.1 през 1985/86 година. Там се появяват и първите зачатъци на разпределената обработка. Заключване на ниво ред е реализирано през 1988 г. Бизнес-приложенията на Oracle са пренаписани за среда Клиент-Сървър чак през 1993 г. (Oracle даже го наричат това Клиент-Сървър революция).
Ще се повторя. Проблемите, които е трябвало да се решават, са толкова сложни и обемни, че е било необходимо много време и усилия за пионерите в тази област. Дори и за компания от ранга на Oracle.
Вярно е, че в много системи се използва понятието транзакция за обозначаване на единица работа. Но разликата между "транзакция изобщо" и "разпределена транзакция при релационните системи" е както между Канада и канализацията, ако използвам един стар анекдот.
Едва напоследък се занимавам с Java и не бих искал да се изказвам определено в тази област. Само дето ми се струва, че един J2EE сървър е application server. Т.е. изместваме проблема от слоя на базата данни към middle tier.
Освен това: J2EE server през 1998 година? Може би само спецификацията му е от тази година. А опитите за реализация да продължават и понастоящем. (Това - като въпрос към дискутиращите). Мога да кажа само, че доскоро - до версия 8.1.7 - Oracle предлагаха реализация само на сесийни EJB. Едва напоследък чрез OC4J и то сега през 2002 г. предложиха реализация и на Entity EJB, чрез които може да се реализират разпределени транзакции - но това пак е в middle tier.
Много неща, за които се говори в специализираните издания, още не са стигнали до потребителите. Поне така ми се струва. А дискусията все пак възникна на практическа основа, какво се използва в момента, а не за това, какви са намеренията в неопределеното бъдеще.
Извинявам се, че говоря само за Oracle, но от много време се занимавам с техни неща и това е повлияло на мисленето ми.
Поздрави на всички.
|