eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingwielodostępRe: wielodostęp
  • Data: 2010-04-11 00:08:04
    Temat: Re: wielodostęp
    Od: Michoo <m...@v...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Misiek NA pisze:
    > Mam aplikację która rejestruje zdarzenia. Tabela w której są
    > przechowywane informacje posiada trzy kolumny:
    > data (format YYYY-MM-DD), typ zdarzenia oraz liczba wystąpień.
    > Zdarzenia zgłaszane są przez zewnętrzne procesy.
    > Dwa procesy mogą zgłosić ten sam typ zdarzenia.
    > Obecnie jest to robione tak, że aplikacja robi select sprawdzając czy
    > dane zdarzenie wystąpiło bieżącego dnia. Jeśli wystąpiło, zwiększa
    > liczbę wystąpień, jeśli nie, dodaje nowy rekord do tabeli.
    >
    > Wydaje mi się, że to rozwiązanie posiada pewną wadę.
    > Według mnie, w sytuacji gdy pewien typ zdarzenia nie został jeszcze
    > zarejestrowany bieżącego dnia a dwa procesy zgłoszą to zdarzenie
    > jednocześnie w tabeli pojawią się dwa wpisy dla jednego typu
    > zdarzenia.
    >
    > Jak zabezpieczyć się przed tą sytuacją?
    Jak nie chcesz kombinować z transakcjami (co zazwyczaj jest poprawnym
    rozwiązaniem) to:
    klucz podstawowy/uniq na parze (data,typ)
    sprawdzasz czy wpis istnieje
    A) tak - robisz update, który zapewni blokadę na poziomie wiersza
    B) nie - wstawiasz:
    B)a) udało się - było to pierwsze wstawienie
    B)b) nie udało się z powodu naruszenia ograniczeń uniq - rekord już
    istnieje - idź do A)

    Ewentualnie, jeżeli zbiór typów zdarzeń jest dość skończony to
    generujesz wpisy z wartością 0 na najbliższy miesiąc a potem tylko z
    update lecisz.

    --
    Pozdrawiam
    Michoo

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: