Sobes.tech
Senior

Сіз PostgreSQL-де шардтауды қалай жасадыңыз? Қандай хештеу алгоритмін қолдандыңыз?

sobes.tech AI

AI-дан жауап

PostgreSQL-де шардтау әдетте қолданба деңгейінде немесе кеңейтімдер көмегімен жүзеге асырылады, себебі толыққанды шардтау кіріктірілмеген.

Қолданба деңгейінде шардтау үшін мен деректерді әртүрлі дерекқорларға немесе кестелерге бөлу үшін хэш-функциясын қолдандым. Әдетте тұрақты хэштеу немесе негізгі кілт бойынша қарапайым хэштеу (мысалы, user_id бойынша) стандартты хэш-функциялармен, мысалы, MurmurHash немесе CRC32, пайдаланылады.

Шардты таңдау үшін қарапайым хэштеу мысалы:

func getShard(key string, shardCount int) int {
    h := fnv.New32a()
    h.Write([]byte(key))
    return int(h.Sum32()) % shardCount
}

Бұл жазбаларды шард кеңістігінде тең бөлуге және жүйені оңай масштабтауға мүмкіндік береді, жаңа шардтарды қосу арқылы.