БД для синхронных или асинхронных запросов писал

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

Ответ

Golang хорошо подходит для работы с БД в обоих сценариях благодаря горутинам и стандартному database/sql пакету.

Синхронные запросы - блокируют выполнение до получения результата:

rows, err := db.Query("SELECT * FROM users")
if err != nil { /* обработка ошибки */ }
defer rows.Close()

Асинхронные запросы - выполняются в горутинах, не блокируя основной поток:

go func() {
    rows, err := db.Query("SELECT * FROM users")
    if err != nil { /* обработка ошибки */ }
    defer rows.Close()
    // обработка результата
}()

Нюансы:

  • Для асинхронных запросов важно контролировать количество соединений (пул соединений)
  • Контекст (context.Context) помогает управлять таймаутами и отменой операций
  • sqlx или gorm упрощают работу с БД