Schemat ping-ponga
Algorytmy, o których mówi się, że wykorzystują schemat ping-ponga, istnieją w różnych dziedzinach inżynierii oprogramowania . Charakteryzują się naprzemiennością pomiędzy dwoma bytami. W przykładach opisanych poniżej podmiotami tymi są partnerzy komunikacji, ścieżki sieciowe lub bloki plików.
Bazy danych
W większości systemów zarządzania bazami danych trwałe transakcje w bazie danych są obsługiwane poprzez plik dziennika . Jednak wielokrotne zapisy na tej samej stronie tego pliku mogą wiązać się z niewielkim ryzykiem utraty danych. Zakładając dla uproszczenia, że plik dziennika jest zorganizowany na stronach, których rozmiar odpowiada bloku nośnika, z którego pochodzi, może wystąpić następujący problem:
Jeżeli ostatnia strona pliku dziennika jest tylko częściowo wypełniona danymi i w tym stanie musi zostać zapisana w pamięci trwałej, ta sama strona będzie musiała zostać nadpisana podczas następnej operacji zapisu. Jeśli podczas późniejszej operacji zapisu nastąpi awaria , wcześniej zapisane dane dziennika mogą zostać utracone.
Schemat ping-ponga opisany w Przetwarzaniu transakcji eliminuje ten problem poprzez naprzemienne zapisywanie zawartości wspomnianej (logicznej) ostatniej strony na dwóch różnych fizycznych stronach pliku dziennika (rzeczywista ostatnia strona i i jej pusta następczyni i+1 ). Gdy wspomniana strona dziennika logicznego nie jest już ostatnią stroną (tzn. jest całkowicie wypełniona danymi dziennika), jest zapisywana po raz ostatni w zwykłej fizycznej pozycji ( i ) wewnątrz pliku dziennika.
Schemat ten wymaga użycia znaczników czasu dla każdej strony w celu odróżnienia najnowszej wersji logicznej ostatniej strony od jej poprzedniczki.
Sieć
Internet
Funkcja umożliwiająca komputerowi A sprawdzenie, czy komputer B jest osiągalny i odpowiada, jest wbudowana w protokół ICMP ( Internet Control Message Protocol ). Poprzez „żądanie echa” komputer A prosi B o odesłanie „odpowiedzi echa”. Te dwie wiadomości są czasami nazywane także „ ping ” i „pong”.
Rozgromienie
W Routingu schemat ping-ponga jest prostym algorytmem dystrybucji pakietów danych pomiędzy dwiema ścieżkami.
Gdybyś miał dwie ścieżki A
i B
, algorytm losowo zacząłby od jednej ze ścieżek, a następnie przełączał się między nimi.
Jeśli następną ścieżkę miałbyś uzyskać z wywołania funkcji, wyglądałoby to w Pythonie tak :
def get_next_path (): while True : uzysk ' A ' uzysk ' B '
- ^ Szary, Jim; Reutera, Andreasa (1992). Przetwarzanie transakcji: koncepcje i techniki (1 wyd.). Morgana Kaufmanna. s. 508-509 . ISBN 978-1-55860-190-1 .