Portál AbcLinuxu, 6. května 2025 16:09
Nějaký lepší způsob (trochu se bojím kolizí u hashů)? Každopádně jsem koukal, že některé zálohovací SW i například souborové systémy s deduplikací hledají stejné bloky jen podle hashe ... takže se spoléhají jen na pravděpodobnost že ke kolizi nedojde ...Zvyčajne sa to robí tak, že ak je hash rovnaký, tak sa porovnajú dáta (inak tie dáta porovnávať netreba, pretože sú určite iné). PS: A ak sú tie riadky krátke, pravdepodobne bude stačiť aj MD5 (pretože je to rýchlejšie ako SHA a hash zaberá menej).
právě mi i ta malá (někde) pravděpodobnost přijde dost vysokáV tom případě doporučuju sázení. Až k té kolizi dojde, budete mít už dávno vyhráno neuvěřitelné množství prvních cen, takže z toho jednak snadno zaplatíte škody způsobené tou kolizí hashů, jednak už vás to vůbec nebude zajímat, protože si budete jako multimiliardář užívat na nějakém exotickém ostrově.
Pokud by vás zajímá shoda (join) nikoli rozdíly (antijoin) tak vám doporučím Bloom filtr.
Mám vnitřní tušení, že vás budou zajímat primárně rozdíly (antijoin), takže vás žádný hash nebo Bloom filter nespasí.
Asi jsem se nevyjádřil dost srozumitelně.
Pokud vás budou zajímat jen rozdíly mezi dvěma přibližně stejnými množinami, tak z převážné většiny bude porovnání vypadat takto:
Z postupu vyplývá, že pro drtivou většinu případů v antijoinu musíte dotáhnout tak jako tak celé záznamy a porovnání pomocí hashe vám v rozhodovacím procesu pomůže jen minimálně. Přesněji vám pomůže pouze v tom případě, že nenajdete shodu při porovnání hashe. Ale těchto případů budou pro přibližně stejné množiny jen zlomky procent.
To ale vyžaduje úpravu stávající aplikace, což nevím, zda tazatel může.Ne aplikace, ale databáze. Vzhledem k tomu, že tazatel nechce přenášet celou databázi, není rada, že má přenést celou databázi, asi přesně to, co chce slyšet…
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.