eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingwielodostępRe: wielodostęp
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!new
    s.nask.org.pl!news.onet.pl!not-for-mail
    From: Michoo <m...@v...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: wielodostęp
    Date: Sun, 11 Apr 2010 02:08:04 +0200
    Organization: http://onet.pl
    Lines: 34
    Message-ID: <hpr3sp$sor$1@news.onet.pl>
    References: <7...@z...googlegroups.com>
    NNTP-Posting-Host: c2-211.icpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1270944473 29467 62.21.2.211 (11 Apr 2010 00:07:53 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Sun, 11 Apr 2010 00:07:53 +0000 (UTC)
    User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706)
    In-Reply-To: <7...@z...googlegroups.com>
    Xref: news-archive.icm.edu.pl pl.comp.programming:185421
    [ ukryj 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: