Sobes.tech
Junior — Middle

Kas on võimalik luua unikaalne indeks, mis põhineb hash-funktsioonil?

sobes.tech AI

Vastus AI-lt

Jah, on võimalik luua unikaalne indeks, mis põhineb hash-funktsioonil, kuid mõningate ettevaatusabinõudega. Hash-funktsioon teisendab andmed fikseeritud pikkuseks ning teoreetiliselt võivad erinevad sisendandmed omada sama hash'i (kollisioonid).

Andmebaasides luuakse mõnikord hash-põhiseid indekseid otsingute kiirendamiseks, kuid ainult hash'i põhjal unikaalsuse tagamine ilma täiendavate kontrollideta ei ole võimalik.

Kui on vaja unikaalsuse piirangut, on parem kasutada algandmeid või kombineerida hash täiendavate kontrollidega.

Näide Go keeles hash'i loomise ja selle kasutamise kohta indeksis:

import (
    "crypto/sha256"
    "fmt"
)

func hashKey(key string) string {
    h := sha256.Sum256([]byte(key))
    return fmt.Sprintf("%x", h)
}

// Kasutage hashKey, et luua indeks, kuid kontrollige kollisioonide olemasolu sisestamisel.