Article View: pl.comp.bazy-danych
Article #183129Re: projektowanie tabel historycznych tak aby wyszukiwanie było jak najbardziej efektywne
From: Piotr Potulski
Date: Fri, 24 Jul 2009 07:46
Date: Fri, 24 Jul 2009 07:46
54 lines
3987 bytes
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-mailReferences:
<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