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
}
Бұл жазбаларды шард кеңістігінде тең бөлуге және жүйені оңай масштабтауға мүмкіндік береді, жаңа шардтарды қосу арқылы.