🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #82901

Re: Co wybrac - Identity czy sekwencje

#82901
From: Roman Tyczka
Date: Tue, 20 Feb 2018 13:09
34 lines
3875 bytes
On Tue, 20 Feb 2018 02:30:39 -0800 (PST), zpksoft wrote:

>>>> Początkowo, właściwie dla prób wykorzystywałem GUID. Ten brak sekwencyjności nie bardzo mi przeszkadzał bo user pyta zwykle o różną kolejność danych.
>>> Skoro tak piszesz, to chyba nie do końca rozumiesz jak działa baza 
>>> relacyjna.
>>> 
>>>> Chciałem zbudować uniwersalny ID łańcuchowy w którym zakodowany byłby czas i losowość. Udało mi się opracować identyfikator 12 znakowy np. wygenerowany w tym momencie: "1OeS9r2JykUj". Mogę z niego odczytać czas powstania z dokładnością do dwóch milisekund. Czas zawarty jest w członie "1OeS9r". Stosuję te identyfikatory mniej więcej od czerwca 2005 roku i jeszcze nigdy w żadnej bazie nie miałem błędu powstania dwóch takich samych identyfikatorów.
>>> Unikalność to nie problem, ale co z sekwencyjnością?
>> 
>> Tak z ciekawości... po co sekwencyjność w PK? PK ma za zadanie gwarantować
>> unikalność i to jest jego fundamentalna cecha. Baza i tak jak potrzeba to
>> ma jakieś kolumny z timestampem czy innym kluczem trzymającym sekwencyjność
>> w jakimś kontekście typu data urodzenia, data sprzedaży, numer kolejny
>> dokumentu sprzedaży itp. Po co więc tak bardzo forsujesz konieczność
>> posiadania sekwencyjności w PK? 
> 
> Owa sekwencyjność jest moim zdaniem przereklamowana. 
> Nawet jeśli pole typu integer stanowi indeks unikalny to wcale nie oznacza, że nie możemy wrzucić do bazy dane w kolejności 1, 5, 4, 7, 3. 
> Najważniejsza jest unikalność.
> To nie określone pole jest indeksem tylko dla określonego pola możemy zdefiniować indeks. Oznacza to tyle, że baza oprócz naszej kolumny w tabeli przechowuje oddzielnie również swój porządek.
> Najłatwiej przekonać się o tym wywołując select na zwykłej kolumnie łańcuchowej.
> Baza będzie szukać długo.
> Jeśli nałożymy indeks na tę kolumnę to szukanie będzie błyskawiczne, niezależnie od tego czy dane w tej kolumnie będą sekwencyjne.

No jednak nie do końca. Poczytaj to co wloochacz zalinkował.
I to ma jednak sens. Jeśli kolumna ma wartości sekwencyjne to indeks będzie
dużo skuteczniej zbudowany i mniej odczytów będzie potrzebnych by go
przeskanować. Nawet użycie algorytmu typu b+tree nie zniweluje zupełnie
konieczności większej liczby odczytów indeksu niż wtedy, gdy jest on
sekwencyjny (tu nawet prostackie wyszukiwanie binarne będzie szybkie).

-- 
pozdrawiam
Roman Tyczka
Technical Details
Message-ID: <14fo87b9iec37$.dlg@tyczka.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <b103c4b1-8620-403a-a902-5e4ecd5fe355@googlegroups.com> <b32fab82-19c1-452a-a5c8-45943fa76db7@googlegroups.com> <5a8561ba$0$664$65785112@news.neostrada.pl> <24ef9b49-567a-44b5-acbd-44352e2701d0@googlegroups.com> <d84fb96f-7111-4b1a-b794-e856be8cca9e@googlegroups.com> <ecf4861c-5c5c-4ea8-85c6-2a9277b41a25@googlegroups.com> <97820f04-20f3-4421-a734-bb41bec12300@googlegroups.com> <5a87f6e0$0$559$65785112@news.neostrada.pl> <ca7d63b4-f772-4935-b7f8-2f6cf13405f0@googlegroups.com> <5a8afcf3$0$589$65785112@news.neostrada.pl> <11zhaiuujxyq.dlg@tyczka.com> <cba5c170-8839-4842-aca8-8ca183cb1202@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Roman Tyczka <noemail@because.no>
Newsgroups: pl.comp.lang.delphi.bazy-danych
Subject: Re: Co wybrac - Identity czy sekwencje
Date: Tue, 20 Feb 2018 14:09:14 +0100
Organization: ATMAN - ATM S.A.
Lines: 34
Sender: romek@tyczka.no.found
Message-ID: <14fo87b9iec37$.dlg@tyczka.com>
References: <b103c4b1-8620-403a-a902-5e4ecd5fe355@googlegroups.com> <b32fab82-19c1-452a-a5c8-45943fa76db7@googlegroups.com> <5a8561ba$0$664$65785112@news.neostrada.pl> <24ef9b49-567a-44b5-acbd-44352e2701d0@googlegroups.com> <d84fb96f-7111-4b1a-b794-e856be8cca9e@googlegroups.com> <ecf4861c-5c5c-4ea8-85c6-2a9277b41a25@googlegroups.com> <97820f04-20f3-4421-a734-bb41bec12300@googlegroups.com> <5a87f6e0$0$559$65785112@news.neostrada.pl> <ca7d63b4-f772-4935-b7f8-2f6cf13405f0@googlegroups.com> <5a8afcf3$0$589$65785112@news.neostrada.pl> <11zhaiuujxyq.dlg@tyczka.com> <cba5c170-8839-4842-aca8-8ca183cb1202@googlegroups.com>
NNTP-Posting-Host: 94.75.90.137
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1519132159 24626 94.75.90.137 (20 Feb 2018 13:09:19 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Tue, 20 Feb 2018 13:09:19 +0000 (UTC)
User-Agent: 40tude_Dialog/2.0.15.84
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit