Zadejte hledaný výraz...

Vyplati se pouzit hashovaci funkci?

Ahoj, v databazi mám unikání sloupecek.
V tomto sloupceku je vse mozne - cisla, url adresy atd. proste bordel. ale unikatni. jinak to buhuzel navrhnout nelze.
Premyslim data prohnat nejakou hashovaci fci (md5). myslite ze to má vyznam a pomuze to nejak rychlost/vykonu databaze ?
nebo to naopak treba jeste pohorsi ?
nad touhle tabulkou pak probiha updatovaci script ktery bud vklada nova data nebo pri neunikatnosti data updatuje (ON DUPLICATE UPDATE)
díky moc.
8. 12. 2012 04:06:38
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839720
hm
verified
rating uzivatele
(20 hodnocení)
8. 12. 2012 04:20:22
jsou ty unkatni data bezne prumerne delsi nez hash (md5 tedy 32 znaku)? jestli ne, nema to vyznam
8. 12. 2012 04:20:22
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839719
ne, nejsou.
super díky moc. já prave nevedel jestli kdyz to bude stejny format to treba nebude v necem efekivnejsi.
8. 12. 2012 04:35:34
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839718
hm
verified
rating uzivatele
(20 hodnocení)
8. 12. 2012 04:38:21
u hashe je problem ze je to znakove, stejne jaky ty tvoje nahodna data, takze v tom bohuzel neni zadny rozdil, jedine bys proste mel ty data nejak ultra dlouhy, tam se pak hashovat muze vyplatit...
8. 12. 2012 04:38:21
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839717
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
8. 12. 2012 05:06:08
Napsal Re4DeR;879563
Ahoj, v databazi mám unikání sloupecek.
V tomto sloupceku je vse mozne - cisla, url adresy atd. proste bordel. ale unikatni. jinak to buhuzel navrhnout nelze.
Premyslim data prohnat nejakou hashovaci fci (md5). myslite ze to má vyznam a pomuze to nejak rychlost/vykonu databaze ?
nebo to naopak treba jeste pohorsi ?
nad touhle tabulkou pak probiha updatovaci script ktery bud vklada nova data nebo pri neunikatnosti data updatuje (ON DUPLICATE UPDATE)
díky moc.
Pokud jsou data vždy kratší než 32 znaků, hash ničemu nepomůže. Důležité je nemít tabulku dynamickou, tedy nepoužít žádný sloupec s proměnlivou délkou (to má vliv na rychlost).
Napsal Aleš Jiříček;879567
u hashe je problem ze je to znakove
to je prosím co za výmysl? číslice není znak? nebo vy do db ukládáte veverky?
8. 12. 2012 05:06:08
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839716
jasně, rozumím. já si prave nebyl jist. díky
---------- Příspěvek doplněn 08.12.2012 v 05:14 ----------
Napsal Jan Stejskal;879568
Pokud jsou data vždy kratší než 32 znaků, hash ničemu nepomůže. Důležité je nemít tabulku dynamickou, tedy nepoužít žádný sloupec s proměnlivou délkou (to má vliv na rychlost).
to znamena ze je lepsi pouzivat char misto varchar ?
8. 12. 2012 05:12:45
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839715
hm
verified
rating uzivatele
(20 hodnocení)
8. 12. 2012 05:14:45
Napsal Jan Stejskal;879568
to je prosím co za výmysl? číslice není znak? nebo vy do db ukládáte veverky?
ale ne, spis cisla jsem chel povazovat za integer se kterym db pracuje vyrazne ryhclej nez s VARCHAR, ale ted si uvedomuju ze hash prece neni promenlivej retezec a s CHAR db pracuje pomerne ryhcle, urcite rychlej nez s VARCHAR, ktery zcela jiste pouziva David ted, takze hash by vlastne mohl mit smysl
8. 12. 2012 05:14:45
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839714
no tak jsem to myslel i puvodne - že to je fixni sirka. ale to by stejne samo o sobe nic neresilo tedy?
takze by mohlo mit smysl mit char a hash? teoreticky ?
8. 12. 2012 05:17:06
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839713
Jan Matoušek
verified
rating uzivatele
(12 hodnocení)
8. 12. 2012 10:38:42
Už je to delší dobu co jsem studoval md5, ale jestli si dobře pamatuji, tak u md5 může nastat, že se vytvoří z 2 různých řetězců stejný hash.
Pravděpodobnost bude asi hodně malá, ale kdyby to nastalo, tak se taková chyba bude hodně těžko hledat. Takže na to taky pozor.
8. 12. 2012 10:38:42
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839712
Jak vypadá tabulka a k čemu ten sloupec slouží?
Některé datové typy jsou obvykle delší než jiné
Multibyte Char > Singlebyte Char
Char > Binary (pro hashe)
Char > Varchar
Char > Int
Int > Enum, Tinyint
Tinyint > Bit
Porovnávání řetězců je obecně rychlejší, čím jsou řetězce kratší.
Nelze z toho ale odvozovat pevné pravidlo. Záleží vždy na konkrétních datech.
8. 12. 2012 11:11:47
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839711
naniccz
verified
rating uzivatele
(3 hodnocení)
8. 12. 2012 12:00:13
Problém je v tom, že když A=B => hash(A)=hash(B), naopak ovšem ta implikace neplatí, tedy dva stejné heše můžou být z různých unikátních "klíčů". Dokážu si ovšem představit přidat další sloupec typu INT a do něj dávat CRC dat (taky vlastně heš), a mít nad tím index. Při dotazu pak spočítat i CRC s tím, že databáze rychle najde kandidáty, a pak porovná stringový klíč jen u jednoho/jednotek záznamů.
Jenže index je vlastně jen seřazená posloupnost v podobě stromu (typicky) a zrychlení je tedy jen takové, že místo porovnávání stringů (znak po znaku do prvního rozdílu) se porovnávají čísla (jedno porovnání). Je tedy možné, že to nic moc nezrychlí (a je možné, že to DB už interně tak i dělá).
8. 12. 2012 12:00:13
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839710
tabulka v sobe schraňuje data která se stahují z jiných webů a z jine databaze. a aby se neukladali duplicitne tak se prave resi unikatni klic pomoci url a id v te cizi tabulce.
8. 12. 2012 20:00:17
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839709
Nepíšeš moc o povaze aplikace a využití konkrétní tabulky, to je také důležité zohlednit. Způsob jaký popisuješ je v praxi standardní a nejedná-li se o o opravdu zatíženou databázi, je to řešení vyhovující.
Napsal Jan Matoušek;879606
Už je to delší dobu co jsem studoval md5, ale jestli si dobře pamatuji, tak u md5 může nastat, že se vytvoří z 2 různých řetězců stejný hash.
Pravděpodobnost bude asi hodně malá, ale kdyby to nastalo, tak se taková chyba bude hodně těžko hledat. Takže na to taky pozor.
Pokud se nejedná o nějakou aplikaci s velkým bezpečnostní rizikem, takovéhle věci je nesmyslné zohledňovat. Šance, že nastane při takovéhle práci kolize hashe dvou různých řetězců je v praxi i u MD5 v podstatě nulová.
8. 12. 2012 20:27:09
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839708
Bacon
verified
rating uzivatele
(2 hodnocení)
9. 12. 2012 20:09:48
Když už se tu řeší unikátní sloupce, co když mám unikátní sloupec v tomto tvaru, vadí ta délka moc?
ID: cz-radio-top100-weekly-2006-01-001
...
ID: cz-radio-top100-weekly-2012-52-001
9. 12. 2012 20:09:48
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839707
no tabulka je to zatezovana pomerne dost :-)
9. 12. 2012 20:44:26
https://webtrh.cz/diskuse/vyplati-se-pouzit-hashovaci-funkci#reply839706
Pro odpověď se přihlašte.
Přihlásit