Co to jest transakcja w bazie danych?

114

Czy ktoś może podać proste (ale nie prostsze niż to możliwe) wyjaśnienie transakcji w odniesieniu do informatyki (nawet jeśli zostało skopiowane z Wikipedii)?

Vlad Gudim
źródło

Odpowiedzi:

239

Transakcja to jednostka pracy, którą chcesz traktować jako „całość”. Musi się to wydarzyć w całości lub wcale.

Klasycznym przykładem jest przelewanie pieniędzy z jednego konta bankowego na drugie. Aby to zrobić, musisz najpierw wypłacić kwotę z konta źródłowego, a następnie przelać ją na konto docelowe. Operacja musi zakończyć się pełnym sukcesem. Jeśli zatrzymasz się w połowie drogi, pieniądze zostaną utracone, a to jest bardzo złe.

W nowoczesnych bazach danych transakcje robią również inne rzeczy - na przykład zapewniają, że nie masz dostępu do danych, które inna osoba zapisała w połowie drogi. Ale podstawowa idea jest taka sama - transakcje mają na celu zapewnienie, że niezależnie od tego, co się stanie, dane, z którymi pracujesz, będą w rozsądnym stanie . Gwarantują, że NIE dojdzie do sytuacji, w której pieniądze zostaną pobrane z jednego konta, ale nie zostaną wpłacone na inne.

Vilx-
źródło
Dzięki za bardzo prosty przykład
Nomadme
niezłe wyjaśnienie!
Yan Myo Aung
81

Transakcja to sposób przedstawienia zmiany stanu. Transakcje idealnie mają cztery właściwości, powszechnie znane jako ACID:

  • Atomowa (jeśli zmiana zostanie zatwierdzona, dzieje się to za jednym zamachem; nigdy nie widać „połowy zmiany”)
  • Spójne (zmiana może nastąpić tylko wtedy, gdy nowy stan systemu będzie ważny; każda próba wprowadzenia nieprawidłowej zmiany zakończy się niepowodzeniem, pozostawiając system w jego poprzednim prawidłowym stanie)
  • Izolowane (nikt inny nie widzi żadnej części transakcji, dopóki nie zostanie zatwierdzona)
  • Trwałe (po dokonaniu zmiany - jeśli system mówi, że transakcja została zatwierdzona, klient nie musi martwić się o „opróżnianie” systemu, aby „przyklejać” zmianę)

Aby uzyskać więcej informacji, zobacz wpis Wikipedii ACID .

Chociaż jest to zwykle stosowane do baz danych, nie musi tak być. (W szczególności zobacz Pamięć transakcyjna oprogramowania ).

Jon Skeet
źródło
46

Oto proste wyjaśnienie. Musisz przelać 100 dolców z konta A na konto B.Możesz zrobić:

accountA -= 100;
accountB += 100;

lub

accountB += 100;
accountA -= 100;

Jeśli coś pójdzie nie tak między pierwszą a drugą operacją w parze, masz problem - albo zniknęło 100 dolców, albo pojawiły się znikąd.

Transakcja to mechanizm, który pozwala oznaczyć grupę operacji i wykonać je w taki sposób, że albo wszystkie wykonają (zatwierdzenie), albo stan systemu będzie wyglądał tak, jakby w ogóle nie rozpoczęły wykonywania (wycofanie).

beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;

prześle 100 dolców lub pozostawi oba konta w stanie początkowym.

ostro
źródło
31

„Seria instrukcji dotyczących manipulacji danymi, które muszą albo całkowicie zakończyć się, albo całkowicie zakończyć się niepowodzeniem, pozostawiając bazę danych w stanie spójności”

Rad
źródło
2
Nie tylko baza danych. Możemy rozszerzyć tę koncepcję na inne komponenty - takie jak usługa kolejkowania, czy stan systemów zewnętrznych. Czyli „Seria oświadczeń o manipulacji danymi, które muszą albo całkowicie zakończyć się, albo całkowicie zawieść, pozostawiając system w stanie spójnym”
Michał Chaniewski
10

Transakcja to sekwencja jednej lub więcej operacji SQL, które są traktowane jako jednostka.

W szczególności wydaje się, że każda transakcja przebiega w izolacji, a ponadto, jeśli system zawiedzie, każda transakcja jest wykonywana w całości lub nie w całości.

Koncepcja transakcji jest motywowana dwoma całkowicie niezależnymi koncernami. Jeden dotyczy jednoczesnego dostępu do bazy danych przez wielu klientów, a drugi dotyczy posiadania systemu odpornego na awarie systemu.

Transakcja obsługuje tak zwane właściwości ACID:

  • O: Atomowość;
  • C: spójność;
  • I: Izolacja;
  • D: Trwałość.
Mourad BENKDOUR
źródło
1

Sugerowałbym, że definicja „przetwarzania transakcji” byłaby bardziej użyteczna, ponieważ obejmuje transakcje jako pojęcie w informatyce.

Z Wikipedii:

W informatyce przetwarzanie transakcji to przetwarzanie informacji podzielone na indywidualne, niepodzielne operacje, zwane transakcjami. Każda transakcja musi zakończyć się sukcesem lub niepowodzeniem jako całość; nie może pozostać w stanie pośrednim.

http://en.wikipedia.org/wiki/Transaction_processing#Implementations

Adam Cooper
źródło
1

Oprócz powyższych odpowiedzi należy zauważyć, że przynajmniej w teorii nie ma żadnych ograniczeń co do tego, jakie zasoby są zaangażowane w transakcję.

W większości przypadków jest to tylko baza danych lub wiele odrębnych baz danych, ale można również sobie wyobrazić, że drukarka bierze udział w transakcji i może spowodować, że transakcja się nie powiedzie, na przykład w przypadku zacięcia papieru.

Erwin Smout
źródło
1

Transakcję można zdefiniować jako zbiór zadań, które są uważane za minimalną jednostkę przetwarzania. Żadnej minimalnej jednostki przetwarzania nie można dalej podzielić.

Główne operacje transakcji to odczyt i zapis.

Wszystkie transakcje muszą zawierać cztery właściwości, które są powszechnie znane jako właściwości ACID w celu zapewnienia dokładności, kompletności i integralności danych.

zrywki
źródło
0

Myślę, że transakcja jest akcją atomową w odniesieniu do DBMS.

to znaczy, że nie można go oddzielić. tak, w transakcji może istnieć kilka instrukcji do wykonania przez system. ale są związani razem, aby wykonać jedno podstawowe zadanie.

na przykład. musisz przejść przez most (potraktujmy to jako transakcja), a żeby to zrobić, powiedzmy, potrzebujesz 100 kroków. ogólnie rzecz biorąc, tych kroków nie można oddzielić. kiedy wykonasz połowę z nich, masz tylko dwa wyjścia: kontynuuj je wszystkie i wróć do punktu początkowego. wygląda jak wynik transakcji: sukces (zatwierdzenie) i niepowodzenie (wycofanie)

fwoncn
źródło
0

Transakcja jest niepodzielną jednostką przetwarzania danych - Wszystkie transakcje muszą mieć właściwości ACID:

czyli: atomowość, spójność, izolacja i trwała transakcja to wszystko albo nic, ale nie pośrednie (oznacza to, że jeśli przelejesz pieniądze z jednego konta na inne, jedno konto musi tyle stracić, a drugie zyskać tę kwotę, ale jeśli przelewasz pieniądze z jednego konta, a inne jest nadal puste, co nie będzie transakcją)

Mohamed Seif
źródło