🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #183129

Re: projektowanie tabel historycznych tak aby wyszukiwanie było jak najbardziej efektywne

#183129
From: Piotr Potulski
Date: Fri, 24 Jul 2009 07:46
54 lines
3987 bytes
On 10 Lip, 03:20, Jakub Owczarski <jakub.owczar...@gmail.com> wrote:
>  Piotr Potulski pisze:
>
> > > > Luke, useXML
> > > To żart :) ROTFL
> > Dlaczego użycieXML'a to żart?
> > To jest bardzo dobry pomysł na przechowywanie danych różnego typu np
> > historii z różnych tabel w jednej.
> > Pytający nie określił (chyba) o jaka bazę chodzi a są takie w których
> > takie rozwiązanie może być bardzo wydajne - oczywiście gdy sie dobrze
> > rozwiązanie zaprojektuje i użyje indeksówXML'owych
>
> Witam!
> Pozwolę sobie trochę odgrzać temat.
> Właśnie próbuję wymyślić jak by tu zorganizować historię - chodzi mi o
> możliwość sprawdzenia kto, co, gdzie i kiedy ogólnie w pewniej
> niewielkiej bazie.
> Góglałem trochę i temat pojawiał się wielokrotnie i zawsze budził dużo
> emocji :-) ale nic konkretnego nie udało mi się wyciągnąć.
> No i teraz moja proźba: czy znalazł by się ktoś kto by mi łaskawie
> wyłożył na jakimś bardzo prostym przykładzie jak można  zastosować
> wspomniany XML do trzymania histori z różnych tabel?
> Właściwie inne sposoby trzymania histori wytłumaczone w prosty sposób
> też bardzo mile widziane.
>
> TIA
> Pzdr
> Jakub Owczarski

Najprościej:
Tworzysz sobie dla każdej z tabel triggery, które na update, delete
przekształcą stary rekord do XML'a o postaci
<old>
<table name="osoby"/>
<pole name="id">1</pole>
<pole name="nazwisko">Kowalski</pole>
...
</old>

tego xml'a wrzucasz wraz do tablei logu, wraz z uzupełnieniem
dodatkowych informacji typu kto kiedy itp.

Oczywiście jeżeli wchodzi w grę większa liczba tabel lepiej napisać
procedurę, która te triggery założy - możesz też w zależności od
potrzeb i możliwości bazy wyciągnąć np. nazwę tabeli i wartość klucza
do osobnych kolumn logu, lub odpowiednio poindeksować xml. Oczywiście
ten sposób nie jest (raczej) przeznaczony to trzymania historii
rekordu do wykorzystania biznesowego - tutaj lepszym pomysłem jest
użycie któregoś z algorytmów scd.
Przechowywanie historii zmian w bazie jest tak "kontrowersyjne" z
uwagi na to, że bazy OLTP nie koniecznie są do tego przystosowane a
samo dodanie wymaru czasu jest raczej domeną OLAP. Jesli jednak mówimy
o przechowywaniu zmian do wglądu przez administratora, to rozwiązanie
jest stosunkowo proste i skuteczne.
Technical Details
Message-ID: <2be4f5ee-4334-4801-b2f0-d743d15c2608@c1g2000yqi.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!c1g2000yqi.googlegroups.com!not-for-mail
References: <h1t9d2$bli$1@news.onet.pl> <5c9edf4d-2728-4dd8-b6b4-b7c3b25d2520@f16g2000vbf.googlegroups.com> <h22m7f$pvb$1@node2.news.atman.pl> <ecfce096-f68e-44ee-ab5c-0d1fdb97c47a@k20g2000vbp.googlegroups.com> <38073328-996a-43d8-8238-e2a38c491c61@24g2000yqm.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!c1g2000yqi.googlegroups.com!not-for-mail
From: Piotr Potulski <piotrpo@gmail.com>
Newsgroups: pl.comp.bazy-danych
Subject: Re: projektowanie tabel historycznych tak aby wyszukiwanie
 było jak najbardziej efektywne
Date: Fri, 24 Jul 2009 00:46:58 -0700 (PDT)
Organization: http://groups.google.com
Lines: 65
Message-ID: <2be4f5ee-4334-4801-b2f0-d743d15c2608@c1g2000yqi.googlegroups.com>
References: <h1t9d2$bli$1@news.onet.pl> <5c9edf4d-2728-4dd8-b6b4-b7c3b25d2520@f16g2000vbf.googlegroups.com>  <h22m7f$pvb$1@node2.news.atman.pl> <ecfce096-f68e-44ee-ab5c-0d1fdb97c47a@k20g2000vbp.googlegroups.com>  <38073328-996a-43d8-8238-e2a38c491c61@24g2000yqm.googlegroups.com>
NNTP-Posting-Host: 217.172.224.99
Mime-Version: 1.0
X-Trace: posting.google.com 1248421618 31304 127.0.0.1 (24 Jul 2009 07:46:58 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Fri, 24 Jul 2009 07:46:58 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: c1g2000yqi.googlegroups.com; posting-host=217.172.224.99;  posting-account=xpM9zwoAAACKxgRJ2B57JJsDgDIjxe8n
User-Agent: G2/1.0
X-HTTP-Via: 1.1 ISAGDY
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.1)  Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit