andrisp Posted October 20, 2008 Report Share Posted October 20, 2008 Man šķiet, ka youtube ir pēc kaut kāda pašizdomāta algoritma sakodēti ID ne? Vai tad es to tieši neteicu ? Link to comment Share on other sites More sharing options...
andrisp Posted October 20, 2008 Report Share Posted October 20, 2008 Toties veicot šādus atlasīšanas, grupēšanas un migrācijas darbus, tev tie GUIDi lieti noder, jo tu nevari sajaukti ID nekādi - GUID būs unikāls pa visu DB, savukārt tāds pats ID var būt 50 tabulās :)) Parādi konkrētu piemēru, kad kaut kas varētu tikt "tiek sajaukts". Man nav īsti skaidrs kā tu to domā. Link to comment Share on other sites More sharing options...
Java Posted October 20, 2008 Author Report Share Posted October 20, 2008 :) Ko te tagad domāt? Manuprāt, tiem unikāliem id ir tieša priekšrocība no tā, ka tie ir daudz unikālāki, bet mīnuss tāds - ka tie ir garāki un grūtāk lasāmi. Plus arī tas, ka tos nevar "ķert bez norādēm" tik vienkārši kā parastos id, iedrukājot kādu skaitli, unikālo id būs uzminēt grūtāk. Bet protams, tas garums ir mīnuss, jo urlī ne visai labi izskatās tik garš... Youtubei labi izskatās tie id. Vēl piemēram - doma man tāda, ka pēc unikālā ID tu vari čekot vairākās tabulās, ja tev dati ir sagrupēti vairākās tabulās, savukārt pēc ID vari tikai vienā tabulā! :) To var darīt kaut vai sql procedūra... Priekšrocības? Nu grūti tā pateikt, domāju, ka praktiskajā darbā (sevišķi ar ļoti lielām datubāzēm) šeit savas atsevišķas priekšrocības ir no tā, ka ID ir pavisam unikāls! Link to comment Share on other sites More sharing options...
codez Posted October 20, 2008 Report Share Posted October 20, 2008 Bet protams, tas garums ir mīnuss, jo urlī ne visai labi izskatās tik garš... Sazipo. Link to comment Share on other sites More sharing options...
andrisp Posted October 20, 2008 Report Share Posted October 20, 2008 :) Ko te tagad domāt? Man gan izskatās, ka tu pats nezini kā varētu notikt kaut kāda "sajaukšanās". :) Link to comment Share on other sites More sharing options...
Java Posted October 20, 2008 Author Report Share Posted October 20, 2008 Man gan izskatās, ka tu pats nezini kā varētu notikt kaut kāda "sajaukšanās". :) Lab, pieņemsim man ir ID=120 - es īsti neesmu pārliecināts, no kuras tabulas tas ir - nu kaut kā nokļuvis - bet piemēram - pastāv iespējas uz divām vai trim tabulām, ka tas varētu būt, bet, ja visās 3 tabulās ir ID=120? Tad unikālais ID šeit lieti noder! :P Link to comment Share on other sites More sharing options...
andrisp Posted October 20, 2008 Report Share Posted October 20, 2008 es īsti neesmu pārliecināts, no kuras tabulas tas ir Nu c'mon, kā tas var būt iespējams ? :D Link to comment Share on other sites More sharing options...
codez Posted October 20, 2008 Report Share Posted October 20, 2008 es īsti neesmu pārliecināts, no kuras tabulas tas ir - nu kaut kā nokļuvis Vienkārši ģeniāli, es vārtos pa zemi. Link to comment Share on other sites More sharing options...
Java Posted October 20, 2008 Author Report Share Posted October 20, 2008 Nu c'mon, kā tas var būt iespējams ? :D Sarežģītu datubāžu migrācijā, kad tev piemēram, ir jālabo cita pieļauta kļūdas - vis kas var gadīties ;) Link to comment Share on other sites More sharing options...
Aleksejs Posted October 20, 2008 Report Share Posted October 20, 2008 Pieņemsim, ka datubāzē ir 234 tabulas. Pirmajā ID veido pēc formulas: 234*N1 , kur N1-ieraksta kārtas numurs šajā tabulā [0..maxint] Otrajā ID veido pēc formulas: 234*N2+1 , kur N2-ieraksta kārtas numurs šajā tabulā [0..maxint] Trešajā ID veido pēc formulas: 234*N3+2 , kur N3-ieraksta kārtas numurs šajā tabulā [0..maxint] ... Divsimttrīsdesmitceturtajā ID veido pēc formulas: 234*N234+233 , kur N234-ieraksta kārtas numurs šajā tabulā [0..maxint] Un problēma atrisināta. ;) Link to comment Share on other sites More sharing options...
Analgiins Posted October 20, 2008 Report Share Posted October 20, 2008 es īsti neesmu pārliecināts, no kuras tabulas tas ir - nu kaut kā nokļuvis Te jau ir problēma, ka viņš "tur kaut kā ir nokļuvis", nedrīkst tur kaut kas kaut kā nokļūt! Link to comment Share on other sites More sharing options...
Java Posted October 20, 2008 Author Report Share Posted October 20, 2008 Aleksej - tavs algoritms nepārliecina... Unikālā ID algoritmā vajadzētu iekļaut timestamp un vēl kaut kādas lietas, teiksim, skaitli kas skaitās no 1-1000 un pēc tam atkal. Vēl varbūt kādu randomu, ja nepārliecina! Jāveido vairākiem apstākļiem, tikai ar timestamp un vēl kādu numuru klāt nepietiks, jo viss timestamp ir pārāk garš, tāpēc no tā jāveido kāds īsāks hash. Un tādā gadījumā tie hashi var sakrist arī pat dažādiem timestampiem, savukārt randoms ar vēl kādu apstākli klāt to iespēju, ka tomēr viss id būs vienāds samazina krietni. Nezinu, cik tieši sanāk tā varbūtība, bet kaut kāda jau pastāv, ka var atkārtoties GUID: "...generated GUID is not guaranteed to be unique, the total number of unique keys (2128 or 3.4×1038) is so large that the probability of the same number being generated twice is very small." Nu gan jau, ka tā ir tikpat liela varbūtība, cik, piemēram, varbūtība, ka parasts cilvēks varētu iemācīties elpot caur dibenu... Link to comment Share on other sites More sharing options...
bubu Posted October 20, 2008 Report Share Posted October 20, 2008 Aleksej - tavs algoritms nepārliecina... Apbrīnojami... Tevi skolā tikai līdz 100 mācīja skaitīt? Līdz 234 netiki? Alekseja "algoritms" tavā DB ģenerēs 100% unikālus ID, atšķirībā no tava GUID'a, par kuru pats tikko teici, ka tas var sagadīties neunikāls. Link to comment Share on other sites More sharing options...
Java Posted October 20, 2008 Author Report Share Posted October 20, 2008 Alekseja "algoritms" tavā DB ģenerēs 100% unikālus ID, atšķirībā no tava GUID'a, par kuru pats tikko teici, ka tas var sagadīties neunikāls. Alekseja formula attiecas uz konkrētu tabulu skaitu datubāzē, tieši tāpēc nepārliecina. Un GUID ir globāli unikāls. Vari pievienot jaunas tabulas, nodzēst esošās - iemigrēt citu datubāzi ar saviem GUID - tik un tā viss būs unikāls - varbūtība pārāk maza, ka var atkārtoties divi vienādi GUID! Lai gan es uzskatu, ka var izdomāt arī ar garantiju, ka būtu unikāls - neatkarīgi no tabulu skaita konkrētajā datubāzē, ieliek arī parametru, kā jau teicu - uz konkrēto timestamp milisekundi vēl numuru no 1 līdz 10000, piemēram, diezvai vairāk ieraksti vienlaicīgi notiks vienā milisekundē... un šis atkārtojas pie katras milisekundes. Jautājums tik paliek - vai konkrētā timestamp hash ir unikāls. Bet nu beidz tak muļķoties, tur jāņem primāri timestamp un vēl pāris drošības rādītāji un ej nu atkārto tādu GUID!! Link to comment Share on other sites More sharing options...
Aleksejs Posted October 20, 2008 Report Share Posted October 20, 2008 Nu, šobrīd Tavas metodes labumu (kurai ir pozitīvās puses, neapšaubāmi) esi pamatojis ar siloģismu "ej un atkārto". Savukārt es esmu devis algoritmu, kas garantēti piešķir unikālu ID. ;) Link to comment Share on other sites More sharing options...
Recommended Posts