Article View: pl.comp.lang.delphi.bazy-danych
Article #82900Re: Co wybrac - Identity czy sekwencje
From: zpksoft
Date: Tue, 20 Feb 2018 10:30
Date: Tue, 20 Feb 2018 10:30
30 lines
4012 bytes
4012 bytes
W dniu poniedziałek, 19 lutego 2018 18:28:16 UTC+1 użytkownik Roman Tyczka napisał: > On Mon, 19 Feb 2018 17:36:02 +0100, wloochacz 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? > > -- > pozdrawiam > Roman Tyczka 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. Paweł
Technical Details
Message-ID:
<cba5c170-8839-4842-aca8-8ca183cb1202@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!w142no1793040ita.0!news-out.google.com!s63ni5280itb.0!nntp.google.com!w142no1793036ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<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>Show Full Headers
Complete Article Headers
X-Received: by 10.107.47.102 with SMTP id j99mr17836765ioo.51.1519122640384; Tue, 20 Feb 2018 02:30:40 -0800 (PST) X-Received: by 10.157.71.6 with SMTP id a6mr602752otf.3.1519122640139; Tue, 20 Feb 2018 02:30:40 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer02.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!w142no1793040ita.0!news-out.google.com!s63ni5280itb.0!nntp.google.com!w142no1793036ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi.bazy-danych Date: Tue, 20 Feb 2018 02:30:39 -0800 (PST) In-Reply-To: <11zhaiuujxyq.dlg@tyczka.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=217.99.107.33; posting-account=8ND_mgoAAAD5J9y9fnaTB1Kcu7xKWk7Q NNTP-Posting-Host: 217.99.107.33 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> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <cba5c170-8839-4842-aca8-8ca183cb1202@googlegroups.com> Subject: Re: Co wybrac - Identity czy sekwencje From: zpksoft <zpksoft@op.pl> Injection-Date: Tue, 20 Feb 2018 10:30:40 +0000 X-Received-Body-CRC: 2820786036 X-Received-Bytes: 4441 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit