В какой реплике читается большой объём данных

«В какой реплике читается большой объём данных» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для чтения больших объёмов данных в Golang лучше использовать буферизированное чтение (например, через bufio.Reader) или потоковую обработку (чтение по частям). Это минимизирует использование памяти.

Пример с bufio.Reader:

file, err := os.Open("largefile.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

reader := bufio.NewReader(file)
buffer := make([]byte, 1024) // Чтение по 1KB

for {
    n, err := reader.Read(buffer)
    if err != nil {
        if err == io.EOF {
            break
        }
        log.Fatal(err)
    }
    processChunk(buffer[:n])
}

Для очень больших файлов или сетевых потоков можно использовать io.Copy с кастомным Writer или io.LimitReader.